*pBytesProcessed = NdisRequest->DATA.QUERY_INFORMATION.BytesWritten If (RequestType = NdisRequestQueryInformation) *pBytesProcessed = NdisRequest->DATA.SET_INFORMATION.BytesRead If (RequestType = NdisRequestSetInformation) NdisWaitEvent(&FilterRequest.ReqEvent, 0) Status = NdisFOidRequest(FilterModuleContext->FilterHandle,ĭEBUGP(DL_TEST,("Everything is NDIS_STATUS_PENDING!\n "))
NdisRequest->RequestId = (PVOID)FILTER_REQUEST_ID NdisRequest->DATA.METHOD_INFORMATION.OutputBufferLength = OutputBufferLength ĭEBUGP(DL_TEST,("Everything is ok before NdisOidRequest!\n ")) ĭEBUGP(DL_TEST,("FilterModululeContext->FilterHandle is%p\n",FilterModuleContext->FilterHandle)) NdisRequest->DATA.METHOD_INFORMATION.InputBufferLength = NdisRequest->DATA.METHOD_INFORMATION.InformationBuffer = NdisRequest->DATA.METHOD_INFORMATION.MethodId = MethodId NdisRequest->DATA.METHOD_INFORMATION.Oid = Oid NdisRequest->DATA.SET_INFORMATION.InformationBufferLength = NdisRequest->DATA.SET_INFORMATION.InformationBuffer = NdisRequest->DATA.QUERY_INFORMATION.InformationBufferLength = NdisRequest->DATA.QUERY_INFORMATION.InformationBuffer = NdisRequest->DATA.QUERY_INFORMATION.Oid = Oid NdisRequest->Header.Size = sizeof(NDIS_OID_REQUEST) NdisRequest->Header.Revision = NDIS_OID_REQUEST_REVISION_1 NdisRequest->Header.Type = NDIS_OBJECT_TYPE_OID_REQUEST NdisInitializeEvent(&FilterRequest.ReqEvent) NdisZeroMemory(NdisRequest, sizeof(NDIS_OID_REQUEST)) NDIS_STATUS Status = NDIS_STATUS_SUCCESS ĭEBUGP(DL_TEST,("=>filterDoInternalRequest\n")) PNDIS_OID_REQUEST NdisRequest = &FilterRequest.Request 然后是filterDoInternalRequest函数体: NDIS_STATUS
Status = filterDoInternalRequest(pFilter,ĭEBUGP(DL_TEST,("Creae a new mac successfully!\n")) ĭEBUGP(DL_TEST,("Creae a new mac Fail!\n")) įILTER_RELEASE_LOCK(&FilterListLock, FALSE) DEBUGP(DL_TEST, ("IOCTL:FileObject %p, Open %p\n", IrpSp->FileObject, pFilter))
InputBuffer = OutputBuffer = (PUCHAR)Irp->AssociatedIrp.SystemBuffer case IOCTL_FILTER_CREATE_NEW_MAC: //Add by leyond to request miniport to create a new MAC