Lines Matching defs:pNetFlt

129             PVBOXNETFLTINS pNetFlt;
130 Status = vboxNetFltWinPtInitBind(&pNetFlt, &pParam->ParameterData.StringData, pDeviceNameStr);
144 PVBOXNETFLTINS pNetFlt =(PVBOXNETFLTINS)hProtocolBindingContext;
146 LogFlow(("==>"__FUNCTION__": pNetFlt (0x%p), Status (0x%x), OpenErrorStatus(0x%x)\n", pNetFlt, Status, OpenErrorStatus));
147 Assert(pNetFlt->u.s.WinIf.OpenCloseStatus == NDIS_STATUS_SUCCESS);
149 if (pNetFlt->u.s.WinIf.OpenCloseStatus == NDIS_STATUS_SUCCESS)
151 pNetFlt->u.s.WinIf.OpenCloseStatus = Status;
157 LogRel((__FUNCTION__" : Adapter maintained status is 0x%x", pNetFlt->u.s.WinIf.OpenCloseStatus));
158 NdisSetEvent(&pNetFlt->u.s.WinIf.OpenCloseEvent);
159 LogFlow(("<=="__FUNCTION__": pNetFlt (0x%p), Status (0x%x), OpenErrorStatus(0x%x)\n", pNetFlt, Status, OpenErrorStatus));
162 static void vboxNetFltWinPtRequestsWaitComplete(PVBOXNETFLTINS pNetFlt)
165 while (vboxNetFltWinAtomicUoReadWinState(pNetFlt->u.s.WinIf.StateFlags).fRequestInfo == VBOXNDISREQUEST_INPROGRESS)
173 RTSpinlockAcquire(pNetFlt->hSpinlock);
174 if (pNetFlt->u.s.WinIf.StateFlags.fRequestInfo & VBOXNDISREQUEST_QUEUED)
177 pNetFlt->u.s.WinIf.StateFlags.fRequestInfo = VBOXNDISREQUEST_INPROGRESS;
178 RTSpinlockRelease(pNetFlt->hSpinlock);
179 vboxNetFltWinPtRequestComplete(pNetFlt, &pNetFlt->u.s.WinIf.PassDownRequest, NDIS_STATUS_FAILURE);
183 RTSpinlockRelease(pNetFlt->hSpinlock);
187 DECLHIDDEN(NDIS_STATUS) vboxNetFltWinPtDoUnbinding(PVBOXNETFLTINS pNetFlt, bool bOnUnbind)
193 LogFlow(("==>"__FUNCTION__": pNetFlt 0x%p\n", pNetFlt));
197 Assert(vboxNetFltWinGetOpState(&pNetFlt->u.s.WinIf.PtState) == kVBoxNetDevOpState_Initialized);
199 RTSpinlockAcquire(pNetFlt->hSpinlock);
201 ASMAtomicUoWriteBool(&pNetFlt->fDisconnectedFromHost, true);
202 ASMAtomicUoWriteBool(&pNetFlt->fRediscoveryPending, false);
203 ASMAtomicUoWriteU64(&pNetFlt->NanoTSLastRediscovery, NanoTS);
205 vboxNetFltWinSetOpState(&pNetFlt->u.s.WinIf.PtState, kVBoxNetDevOpState_Deinitializing);
208 vboxNetFltWinSetOpState(&pNetFlt->u.s.WinIf.MpState, kVBoxNetDevOpState_Deinitializing);
211 RTSpinlockRelease(pNetFlt->hSpinlock);
213 vboxNetFltWinPtRequestsWaitComplete(pNetFlt);
215 vboxNetFltWinWaitDereference(&pNetFlt->u.s.WinIf.MpState);
216 vboxNetFltWinWaitDereference(&pNetFlt->u.s.WinIf.PtState);
219 cPPUsage = NdisPacketPoolUsage(pNetFlt->u.s.WinIf.hSendPacketPool);
221 cPPUsage = NdisPacketPoolUsage(pNetFlt->u.s.WinIf.hRecvPacketPool);
226 if (!bOnUnbind || !vboxNetFltWinMpDeInitializeDeviceInstance(pNetFlt, &Status))
228 vboxNetFltWinPtCloseInterface(pNetFlt, &Status);
229 vboxNetFltWinSetOpState(&pNetFlt->u.s.WinIf.PtState, kVBoxNetDevOpState_Deinitialized);
233 Assert(vboxNetFltWinGetOpState(&pNetFlt->u.s.WinIf.MpState) == kVBoxNetDevOpState_Deinitializing);
234 vboxNetFltWinSetOpState(&pNetFlt->u.s.WinIf.MpState, kVBoxNetDevOpState_Deinitialized);
238 Assert(vboxNetFltWinGetOpState(&pNetFlt->u.s.WinIf.MpState) == kVBoxNetDevOpState_Deinitialized);
243 Assert(vboxNetFltWinGetOpState(&pNetFlt->u.s.WinIf.MpState) == kVBoxNetDevOpState_Deinitialized);
246 LogFlow(("<=="__FUNCTION__": pNetFlt 0x%p\n", pNetFlt));
255 PVBOXNETFLTINS pNetFlt = (PVBOXNETFLTINS)hContext;
257 LogFlow(("==>"__FUNCTION__": pNetFlt (0x%p)\n", pNetFlt));
259 *pStatus = vboxNetFltWinDetachFromInterface(pNetFlt, true);
262 LogFlow(("<=="__FUNCTION__": pNetFlt (0x%p)\n", pNetFlt));
276 PVBOXNETFLTINS pNetFlt = (PVBOXNETFLTINS)ProtocolBindingContext;
278 LogFlow(("==>"__FUNCTION__" : pNetFlt (0x%p), Status (0x%x)\n", pNetFlt, Status));
279 Assert(pNetFlt->u.s.WinIf.OpenCloseStatus == NDIS_STATUS_SUCCESS);
281 Assert(pNetFlt->u.s.WinIf.OpenCloseStatus == NDIS_STATUS_SUCCESS);
282 if (pNetFlt->u.s.WinIf.OpenCloseStatus == NDIS_STATUS_SUCCESS)
284 pNetFlt->u.s.WinIf.OpenCloseStatus = Status;
286 NdisSetEvent(&pNetFlt->u.s.WinIf.OpenCloseEvent);
287 LogFlow(("<=="__FUNCTION__" : pNetFlt (0x%p), Status (0x%x)\n", pNetFlt, Status));
292 LogFlow(("==>"__FUNCTION__" : pNetFlt 0x%p, Status 0x%x\n", hProtocolBindingContext, Status));
297 LogFlow(("<=="__FUNCTION__" : pNetFlt 0x%p, Status 0x%x\n", hProtocolBindingContext, Status));
300 static NDIS_STATUS vboxNetFltWinPtHandleQueryInfoComplete(PVBOXNETFLTINS pNetFlt, NDIS_STATUS Status)
302 PNDIS_REQUEST pRequest = &pNetFlt->u.s.WinIf.PassDownRequest;
317 *pNetFlt->u.s.WinIf.pcPDRBytesRW = sizeof (NDIS_PNP_CAPABILITIES);
318 *pNetFlt->u.s.WinIf.pcPDRBytesNeeded = 0;
324 *pNetFlt->u.s.WinIf.pcPDRBytesNeeded = sizeof(NDIS_PNP_CAPABILITIES);
337 pNetFlt->u.s.WinIf.fMacOptions = *(PULONG)pRequest->DATA.QUERY_INFORMATION.InformationBuffer;
351 *pNetFlt->u.s.WinIf.pcPDRBytesNeeded = sizeof (ULONG);
360 if (VBOXNETFLT_PROMISCUOUS_SUPPORTED(pNetFlt))
363 Assert(pNetFlt->u.s.WinIf.StateFlags.fProcessingPacketFilter && !pNetFlt->u.s.WinIf.StateFlags.fPPFNetFlt);
364 if (pNetFlt->u.s.WinIf.StateFlags.fProcessingPacketFilter && !pNetFlt->u.s.WinIf.StateFlags.fPPFNetFlt)
366 Assert(pNetFlt->enmTrunkState != INTNETTRUNKIFSTATE_ACTIVE);
367 vboxNetFltWinDereferenceModePassThru(pNetFlt);
368 vboxNetFltWinDereferenceWinIf(pNetFlt);
378 pNetFlt->u.s.WinIf.fUpperProtocolSetFilter = *(PULONG)pRequest->DATA.QUERY_INFORMATION.InformationBuffer;
379 pNetFlt->u.s.WinIf.StateFlags.fUpperProtSetFilterInitialized = TRUE;
384 *pNetFlt->u.s.WinIf.pcPDRBytesNeeded = sizeof (ULONG);
397 *pNetFlt->u.s.WinIf.pcPDRBytesRW = pRequest->DATA.QUERY_INFORMATION.BytesWritten;
398 *pNetFlt->u.s.WinIf.pcPDRBytesNeeded = pRequest->DATA.QUERY_INFORMATION.BytesNeeded;
403 static NDIS_STATUS vboxNetFltWinPtHandleSetInfoComplete(PVBOXNETFLTINS pNetFlt, NDIS_STATUS Status)
405 PNDIS_REQUEST pRequest = &pNetFlt->u.s.WinIf.PassDownRequest;
411 if (VBOXNETFLT_PROMISCUOUS_SUPPORTED(pNetFlt))
414 if (pNetFlt->u.s.WinIf.StateFlags.fProcessingPacketFilter)
416 if (pNetFlt->u.s.WinIf.StateFlags.fPPFNetFlt)
418 Assert(pNetFlt->enmTrunkState == INTNETTRUNKIFSTATE_ACTIVE);
419 pNetFlt->u.s.WinIf.StateFlags.fPPFNetFlt = 0;
424 pNetFlt->u.s.WinIf.fOurSetFilter = *((PULONG)pRequest->DATA.SET_INFORMATION.InformationBuffer);
425 Assert(pNetFlt->u.s.WinIf.fOurSetFilter == NDIS_PACKET_TYPE_PROMISCUOUS);
430 *pNetFlt->u.s.WinIf.pcPDRBytesNeeded = sizeof (ULONG);
434 vboxNetFltWinDereferenceNetFlt(pNetFlt);
438 Assert(pNetFlt->enmTrunkState != INTNETTRUNKIFSTATE_ACTIVE);
445 pNetFlt->u.s.WinIf.fUpperProtocolSetFilter = *((PULONG)pRequest->DATA.SET_INFORMATION.InformationBuffer);
446 pNetFlt->u.s.WinIf.StateFlags.fUpperProtSetFilterInitialized = TRUE;
451 *pNetFlt->u.s.WinIf.pcPDRBytesNeeded = sizeof (ULONG);
455 vboxNetFltWinDereferenceModePassThru(pNetFlt);
458 pNetFlt->u.s.WinIf.StateFlags.fProcessingPacketFilter = 0;
459 vboxNetFltWinDereferenceWinIf(pNetFlt);
476 *pNetFlt->u.s.WinIf.pcPDRBytesRW = pRequest->DATA.SET_INFORMATION.BytesRead;
477 *pNetFlt->u.s.WinIf.pcPDRBytesNeeded = pRequest->DATA.SET_INFORMATION.BytesNeeded;
484 PVBOXNETFLTINS pNetFlt = (PVBOXNETFLTINS)hContext;
485 PNDIS_REQUEST pSynchRequest = pNetFlt->u.s.WinIf.pSynchRequest;
486 NDIS_OID Oid = pNetFlt->u.s.WinIf.PassDownRequest.DATA.SET_INFORMATION.Oid;
488 LogFlow(("==>"__FUNCTION__" : pNetFlt (0x%p), pNdisRequest (0x%p), Status (0x%x)\n", pNetFlt, pNdisRequest, Status));
494 pNetFlt->u.s.WinIf.SynchCompletionStatus = Status;
496 KeSetEvent(&pNetFlt->u.s.WinIf.hSynchCompletionEvent, 0, FALSE);
499 LogFlow(("<=="__FUNCTION__" : pNetFlt (0x%p), pNdisRequest (0x%p), Status (0x%x)\n", pNetFlt, pNdisRequest, Status));
503 Assert(&pNetFlt->u.s.WinIf.PassDownRequest == pNdisRequest);
504 Assert(pNetFlt->u.s.WinIf.StateFlags.fRequestInfo == VBOXNDISREQUEST_INPROGRESS);
505 vboxNetFltWinMpRequestStateComplete(pNetFlt);
510 Status = vboxNetFltWinPtHandleQueryInfoComplete(pNetFlt, Status);
511 NdisMQueryInformationComplete(pNetFlt->u.s.WinIf.hMiniport, Status);
515 Status = vboxNetFltWinPtHandleSetInfoComplete(pNetFlt, Status);
516 NdisMSetInformationComplete(pNetFlt->u.s.WinIf.hMiniport, Status);
524 LogFlow(("<=="__FUNCTION__" : pNetFlt (0x%p), pNdisRequest (0x%p), Status (0x%x)\n", pNetFlt, pNdisRequest, Status));
529 PVBOXNETFLTINS pNetFlt = (PVBOXNETFLTINS)hProtocolBindingContext;
531 LogFlow(("==>"__FUNCTION__" : pNetFlt (0x%p), GeneralStatus (0x%x)\n", pNetFlt, GeneralStatus));
533 if (vboxNetFltWinReferenceWinIf(pNetFlt))
535 Assert(pNetFlt->u.s.WinIf.hMiniport);
539 pNetFlt->u.s.WinIf.MpIndicatedMediaStatus = GeneralStatus;
541 NdisMIndicateStatus(pNetFlt->u.s.WinIf.hMiniport,
546 vboxNetFltWinDereferenceWinIf(pNetFlt);
550 if (pNetFlt->u.s.WinIf.hMiniport != NULL
554 pNetFlt->u.s.WinIf.MpUnindicatedMediaStatus = GeneralStatus;
558 LogFlow(("<=="__FUNCTION__" : pNetFlt (0x%p), GeneralStatus (0x%x)\n", pNetFlt, GeneralStatus));
564 PVBOXNETFLTINS pNetFlt = (PVBOXNETFLTINS)hProtocolBindingContext;
566 LogFlow(("==>"__FUNCTION__" : pNetFlt (0x%p)\n", pNetFlt));
568 if (vboxNetFltWinReferenceWinIf(pNetFlt))
570 NdisMIndicateStatusComplete(pNetFlt->u.s.WinIf.hMiniport);
572 vboxNetFltWinDereferenceWinIf(pNetFlt);
575 LogFlow(("<=="__FUNCTION__" : pNetFlt (0x%p)\n", pNetFlt));
580 PVBOXNETFLTINS pNetFlt = (PVBOXNETFLTINS)hProtocolBindingContext;
584 LogFlow(("==>"__FUNCTION__": pNetFlt (0x%p), pPacket (0x%p), Status (0x%x)\n", pNetFlt, pPacket, Status));
589 vboxNetFltWinLbRemoveSendPacket(pNetFlt, pPacket);
597 NdisMSendComplete(pNetFlt->u.s.WinIf.hMiniport, pOrigPacket, Status);
611 vboxNetFltWinDereferenceWinIf(pNetFlt);
613 LogFlow(("<=="__FUNCTION__": pNetFlt (0x%p), pPacket (0x%p), Status (0x%x)\n", pNetFlt, pPacket, Status));
746 PVBOXNETFLTINS pNetFlt = (PVBOXNETFLTINS)hProtocolBindingContext;
747 LogFlow(("==>"__FUNCTION__": pNetFlt (0x%p), pPacket (0x%p), Status (0x%x), cbTransfered (%d)\n", pNetFlt, pPacket, Status, cbTransferred));
748 if (!vboxNetFltWinPtTransferDataCompleteActive(pNetFlt, pPacket, Status))
750 if (pNetFlt->u.s.WinIf.hMiniport)
752 NdisMTransferDataComplete(pNetFlt->u.s.WinIf.hMiniport,
758 vboxNetFltWinDereferenceWinIf(pNetFlt);
762 LogFlow(("<=="__FUNCTION__": pNetFlt (0x%p), pPacket (0x%p), Status (0x%x), cbTransfered (%d)\n", pNetFlt, pPacket, Status, cbTransferred));
765 static INT vboxNetFltWinRecvPacketPassThru(PVBOXNETFLTINS pNetFlt, PNDIS_PACKET pPacket, BOOLEAN bForceIndicate)
770 NDIS_STATUS Status = vboxNetFltWinPrepareRecvPacket(pNetFlt, pPacket, &pMyPacket, true);
776 NdisMIndicateReceivePacket(pNetFlt->u.s.WinIf.hMiniport, &pMyPacket, 1);
792 static NDIS_STATUS vboxNetFltWinRecvPassThru(PVBOXNETFLTINS pNetFlt, PNDIS_PACKET pPacket)
799 NdisDprAllocatePacket(&Status, &pMyPacket, pNetFlt->u.s.WinIf.hRecvPacketPool);
806 NdisMIndicateReceivePacket(pNetFlt->u.s.WinIf.hMiniport, &pMyPacket, 1);
813 static VOID vboxNetFltWinRecvIndicatePassThru(PVBOXNETFLTINS pNetFlt, NDIS_HANDLE MacReceiveContext,
821 Assert(Proc < RT_ELEMENTS(pNetFlt->u.s.WinIf.abIndicateRxComplete));
822 pNetFlt->u.s.WinIf.abIndicateRxComplete[Proc] = TRUE;
823 switch (pNetFlt->u.s.WinIf.enmMedium)
827 NdisMEthIndicateReceive(pNetFlt->u.s.WinIf.hMiniport,
849 static NDIS_STATUS vboxNetFltWinPtReceiveActive(PVBOXNETFLTINS pNetFlt, NDIS_HANDLE MacReceiveContext, PVOID pHeaderBuffer, UINT cbHeaderBuffer,
886 pNetFlt->u.s.WinIf.fMacOptions);
888 pLb = vboxNetFltWinLbSearchLoopBackBySG(pNetFlt, pSG, false);
898 pMyPacket = vboxNetFltWinNdisPacketFromSG(pNetFlt, /* PVBOXNETFLTINS */
905 NdisMIndicateReceivePacket(pNetFlt->u.s.WinIf.hMiniport, &pMyPacket, 1);
908 vboxNetFltWinDereferenceNetFlt(pNetFlt);
925 VBOXNETFLT_LBVERIFYSG(pNetFlt, pSG);
929 if (vboxNetFltWinPostIntnet(pNetFlt, pSG, VBOXNETFLT_PACKET_SG))
933 vboxNetFltWinDereferenceWinIf(pNetFlt);
937 PNDIS_PACKET pMyPacket = vboxNetFltWinNdisPacketFromSG(pNetFlt, /* PVBOXNETFLTINS */
950 NdisMIndicateReceivePacket(pNetFlt->u.s.WinIf.hMiniport, &pMyPacket, 1);
954 vboxNetFltWinDereferenceWinIf(pNetFlt);
958 vboxNetFltWinDereferenceNetFlt(pNetFlt);
960 Status = vboxNetFltWinQuEnqueuePacket(pNetFlt, pSG, PACKET_SG | PACKET_MINE);
980 NdisAllocatePacket(&Status, &pPacket, pNetFlt->u.s.WinIf.hRecvPacketPool);
1003 NdisAllocateBuffer(&Status, &pTransferBuffer, pNetFlt->u.s.WinIf.hRecvBufferPool, pMemBuf + cbHeaderBuffer, cbPacket);
1013 NdisAllocateBuffer(&Status, &pOrigBuffer, pNetFlt->u.s.WinIf.hRecvBufferPool, pMemBuf, cbBuf);
1028 vboxNetFltWinPutPacketToList(&pNetFlt->u.s.WinIf.TransferDataList, pPacket, pOrigBuffer);
1036 pNetFlt->u.s.WinIf.fMacOptions);
1043 NdisTransferData(&Status, pNetFlt->u.s.WinIf.hBinding, MacReceiveContext,
1050 vboxNetFltWinPtTransferDataComplete(pNetFlt, pPacket, Status, cbTransferred);
1066 PVBOXNETFLTINS pNetFlt = (PVBOXNETFLTINS)hProtocolBindingContext;
1070 bool fWinIfActive = vboxNetFltWinReferenceWinIfNetFlt(pNetFlt, &bNetFltActive);
1073 LogFlow(("==>"__FUNCTION__" : pNetFlt (0x%p)\n", pNetFlt));
1080 pPacket = NdisGetReceivedPacket(pNetFlt->u.s.WinIf.hBinding, MacReceiveContext);
1095 VBOXNETFLT_LBVERIFY(pNetFlt, pPacket);
1101 pLb = vboxNetFltWinLbSearchLoopBack(pNetFlt, pPacket, false);
1105 VBOXNETFLT_LBVERIFY(pNetFlt, pPacket);
1108 if (vboxNetFltWinPostIntnet(pNetFlt, pPacket, 0))
1114 Status = vboxNetFltWinQuEnqueuePacket(pNetFlt, pPacket, PACKET_COPY);
1144 Status = vboxNetFltWinRecvPassThru(pNetFlt, pPacket);
1165 Status = vboxNetFltWinPtReceiveActive(pNetFlt, MacReceiveContext, pHeaderBuffer, cbHeaderBuffer,
1192 vboxNetFltWinRecvIndicatePassThru(pNetFlt, MacReceiveContext, pHeaderBuffer, cbHeaderBuffer, pLookAheadBuffer, cbLookAheadBuffer, cbPacket);
1201 vboxNetFltWinDereferenceNetFlt(pNetFlt);
1205 vboxNetFltWinDereferenceModePassThru(pNetFlt);
1209 vboxNetFltWinDereferenceWinIf(pNetFlt);
1217 LogFlow(("<=="__FUNCTION__" : pNetFlt (0x%p)\n", pNetFlt));
1225 PVBOXNETFLTINS pNetFlt = (PVBOXNETFLTINS)hProtocolBindingContext;
1228 bool fWinIfActive = vboxNetFltWinReferenceWinIfNetFlt(pNetFlt, &bNetFltActive);
1229 NDIS_HANDLE hMiniport = pNetFlt->u.s.WinIf.hMiniport;
1235 Assert(iProc < RT_ELEMENTS(pNetFlt->u.s.WinIf.abIndicateRxComplete));
1237 LogFlow(("==>"__FUNCTION__" : pNetFlt (0x%p)\n", pNetFlt));
1239 if (hMiniport != NULL && pNetFlt->u.s.WinIf.abIndicateRxComplete[iProc])
1241 switch (pNetFlt->u.s.WinIf.enmMedium)
1253 pNetFlt->u.s.WinIf.abIndicateRxComplete[iProc] = FALSE;
1259 vboxNetFltWinDereferenceNetFlt(pNetFlt);
1263 vboxNetFltWinDereferenceModePassThru(pNetFlt);
1265 vboxNetFltWinDereferenceWinIf(pNetFlt);
1268 LogFlow(("<=="__FUNCTION__" : pNetFlt (0x%p)\n", pNetFlt));
1273 PVBOXNETFLTINS pNetFlt = (PVBOXNETFLTINS)hProtocolBindingContext;
1276 bool fWinIfActive = vboxNetFltWinReferenceWinIfNetFlt(pNetFlt, &bNetFltActive);
1279 LogFlow(("==>"__FUNCTION__" : pNetFlt (0x%p)\n", pNetFlt));
1297 VBOXNETFLT_LBVERIFY(pNetFlt, pPacket);
1303 PNDIS_PACKET pLb = vboxNetFltWinLbSearchLoopBack(pNetFlt, pPacket, false);
1312 VBOXNETFLT_LBVERIFY(pNetFlt, pPacket);
1321 if (vboxNetFltWinPostIntnet(pNetFlt, pPacket, 0))
1329 fStatus = vboxNetFltWinQuEnqueuePacket(pNetFlt, pPacket, bResources ? PACKET_COPY : 0);
1364 cRefCount = vboxNetFltWinRecvPacketPassThru(pNetFlt, pPacket, bNetFltActive);
1375 vboxNetFltWinDereferenceNetFlt(pNetFlt);
1379 vboxNetFltWinDereferenceModePassThru(pNetFlt);
1383 vboxNetFltWinDereferenceWinIf(pNetFlt);
1392 LogFlow(("<=="__FUNCTION__" : pNetFlt (0x%p), cRefCount (%d)\n", pNetFlt, cRefCount));
1397 DECLHIDDEN(bool) vboxNetFltWinPtCloseInterface(PVBOXNETFLTINS pNetFlt, PNDIS_STATUS pStatus)
1399 RTSpinlockAcquire(pNetFlt->hSpinlock);
1401 if (pNetFlt->u.s.WinIf.StateFlags.fInterfaceClosing)
1403 RTSpinlockRelease(pNetFlt->hSpinlock);
1407 if (pNetFlt->u.s.WinIf.hBinding == NULL)
1409 RTSpinlockRelease(pNetFlt->hSpinlock);
1414 pNetFlt->u.s.WinIf.StateFlags.fInterfaceClosing = TRUE;
1415 RTSpinlockRelease(pNetFlt->hSpinlock);
1417 NdisResetEvent(&pNetFlt->u.s.WinIf.OpenCloseEvent);
1418 NdisCloseAdapter(pStatus, pNetFlt->u.s.WinIf.hBinding);
1421 NdisWaitEvent(&pNetFlt->u.s.WinIf.OpenCloseEvent, 0);
1422 *pStatus = pNetFlt->u.s.WinIf.OpenCloseStatus;
1427 pNetFlt->u.s.WinIf.hBinding = NULL;
1432 static NDIS_STATUS vboxNetFltWinPtPnPSetPower(PVBOXNETFLTINS pNetFlt, NDIS_DEVICE_POWER_STATE enmPowerState)
1434 NDIS_DEVICE_POWER_STATE enmPrevPowerState = vboxNetFltWinGetPowerState(&pNetFlt->u.s.WinIf.PtState);
1436 RTSpinlockAcquire(pNetFlt->hSpinlock);
1438 vboxNetFltWinSetPowerState(&pNetFlt->u.s.WinIf.PtState, enmPowerState);
1440 if (vboxNetFltWinGetPowerState(&pNetFlt->u.s.WinIf.PtState) > NdisDeviceStateD0)
1444 pNetFlt->u.s.WinIf.StateFlags.fStandBy = TRUE;
1446 RTSpinlockRelease(pNetFlt->hSpinlock);
1447 vboxNetFltWinPtRequestsWaitComplete(pNetFlt);
1448 vboxNetFltWinWaitDereference(&pNetFlt->u.s.WinIf.MpState);
1449 vboxNetFltWinWaitDereference(&pNetFlt->u.s.WinIf.PtState);
1452 UINT cPPUsage = NdisPacketPoolUsage(pNetFlt->u.s.WinIf.hSendPacketPool);
1454 cPPUsage = NdisPacketPoolUsage(pNetFlt->u.s.WinIf.hRecvPacketPool);
1459 Assert(!pNetFlt->u.s.WinIf.StateFlags.fRequestInfo);
1465 pNetFlt->u.s.WinIf.StateFlags.fStandBy = FALSE;
1468 if (pNetFlt->u.s.WinIf.StateFlags.fRequestInfo & VBOXNDISREQUEST_QUEUED)
1470 pNetFlt->u.s.WinIf.StateFlags.fRequestInfo = VBOXNDISREQUEST_INPROGRESS;
1471 RTSpinlockRelease(pNetFlt->hSpinlock);
1473 vboxNetFltWinMpRequestPost(pNetFlt);
1477 RTSpinlockRelease(pNetFlt->hSpinlock);
1487 PVBOXNETFLTINS pNetFlt = (PVBOXNETFLTINS)hProtocolBindingContext;
1489 LogFlow(("==>"__FUNCTION__": pNetFlt (0x%p), NetEvent (%d)\n", pNetFlt, pNetPnPEvent->NetEvent));
1496 return vboxNetFltWinPtPnPSetPower(pNetFlt, enmPowerState);
1500 if (!pNetFlt)
1509 LogFlow(("<=="__FUNCTION__": pNetFlt (0x%p), NetEvent (%d)\n", pNetFlt, pNetPnPEvent->NetEvent));