Changeset 62714 in vbox for trunk/src/VBox/HostDrivers/VBoxNetFlt/win
- Timestamp:
- Jul 29, 2016 9:41:09 PM (9 years ago)
- svn:sync-xref-src-repo-rev:
- 109288
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/HostDrivers/VBoxNetFlt/win/drv/VBoxNetLwf-win.cpp
r62709 r62714 75 75 #include "VBoxNetLwf-win.h" 76 76 #include "VBox/VBoxNetCmn-win.h" 77 78 /* Forward declarations */79 FILTER_ATTACH vboxNetLwfWinAttach;80 FILTER_DETACH vboxNetLwfWinDetach;81 FILTER_RESTART vboxNetLwfWinRestart;82 FILTER_PAUSE vboxNetLwfWinPause;83 FILTER_OID_REQUEST vboxNetLwfWinOidRequest;84 FILTER_OID_REQUEST_COMPLETE vboxNetLwfWinOidRequestComplete;85 //FILTER_CANCEL_OID_REQUEST vboxNetLwfWinCancelOidRequest;86 FILTER_STATUS vboxNetLwfWinStatus;87 //FILTER_NET_PNP_EVENT vboxNetLwfWinPnPEvent;88 FILTER_SEND_NET_BUFFER_LISTS vboxNetLwfWinSendNetBufferLists;89 FILTER_SEND_NET_BUFFER_LISTS_COMPLETE vboxNetLwfWinSendNetBufferListsComplete;90 FILTER_RECEIVE_NET_BUFFER_LISTS vboxNetLwfWinReceiveNetBufferLists;91 FILTER_RETURN_NET_BUFFER_LISTS vboxNetLwfWinReturnNetBufferLists;92 KSTART_ROUTINE vboxNetLwfWinInitIdcWorker;93 77 94 78 typedef enum { … … 210 194 typedef VBOXNETLWF_OIDREQ *PVBOXNETLWF_OIDREQ; 211 195 212 /* Forward declarations */ 196 197 /********************************************************************************************************************************* 198 * Internal Functions * 199 *********************************************************************************************************************************/ 200 static FILTER_ATTACH vboxNetLwfWinAttach; 201 static FILTER_DETACH vboxNetLwfWinDetach; 202 static FILTER_RESTART vboxNetLwfWinRestart; 203 static FILTER_PAUSE vboxNetLwfWinPause; 204 static FILTER_OID_REQUEST vboxNetLwfWinOidRequest; 205 static FILTER_OID_REQUEST_COMPLETE vboxNetLwfWinOidRequestComplete; 206 //static FILTER_CANCEL_OID_REQUEST vboxNetLwfWinCancelOidRequest; 207 static FILTER_STATUS vboxNetLwfWinStatus; 208 //static FILTER_NET_PNP_EVENT vboxNetLwfWinPnPEvent; 209 static FILTER_SEND_NET_BUFFER_LISTS vboxNetLwfWinSendNetBufferLists; 210 static FILTER_SEND_NET_BUFFER_LISTS_COMPLETE vboxNetLwfWinSendNetBufferListsComplete; 211 static FILTER_RECEIVE_NET_BUFFER_LISTS vboxNetLwfWinReceiveNetBufferLists; 212 static FILTER_RETURN_NET_BUFFER_LISTS vboxNetLwfWinReturnNetBufferLists; 213 static KSTART_ROUTINE vboxNetLwfWinInitIdcWorker; 214 213 215 static VOID vboxNetLwfWinUnloadDriver(IN PDRIVER_OBJECT pDriver); 214 static int vboxNetLwfWinInitBase(); 215 static int vboxNetLwfWinFini(); 216 static int vboxNetLwfWinInitBase(void); 217 static int vboxNetLwfWinFini(void); 218 219 216 220 217 221 /** … … 279 283 280 284 #ifdef DEBUG 285 281 286 static const char *vboxNetLwfWinStatusToText(NDIS_STATUS code) 282 287 { … … 616 621 617 622 #else /* !DEBUG */ 618 # define vboxNetLwfWinDumpFilterTypes(uFlags)619 # define vboxNetLwfWinDumpOffloadSettings(p)620 # define vboxNetLwfWinDumpSetOffloadSettings(p)621 # define vboxNetLwfWinDumpPackets(m,l)622 # define vboxNetLwfWinDumpPacket(p,t)623 # define vboxNetLwfWinDumpFilterTypes(uFlags) do { } while (0) 624 # define vboxNetLwfWinDumpOffloadSettings(p) do { } while (0) 625 # define vboxNetLwfWinDumpSetOffloadSettings(p) do { } while (0) 626 # define vboxNetLwfWinDumpPackets(m,l) do { } while (0) 627 # define vboxNetLwfWinDumpPacket(p,t) do { } while (0) 623 628 #endif /* !DEBUG */ 624 629 … … 648 653 vboxNetLwfWinStateToText(enmPrevState), 649 654 vboxNetLwfWinStateToText(enmNew))); 655 NOREF(enmPrevState); 650 656 } 651 657 return fSuccess; … … 786 792 /* NDIS is supposed to serialize requests */ 787 793 PNDIS_OID_REQUEST pPrev = ASMAtomicXchgPtrT(&pModuleCtx->pPendingRequest, NULL, PNDIS_OID_REQUEST); 788 Assert(pPrev == pRequest); 794 Assert(pPrev == pRequest); NOREF(pPrev); 789 795 790 796 Log5(("vboxNetLwfWinOidRequestComplete: completed rq type=%d oid=%x\n", pRequest->RequestType, pRequest->DATA.QUERY_INFORMATION.Oid)); … … 907 913 static NTSTATUS vboxNetLwfWinDevDispatch(IN PDEVICE_OBJECT pDevObj, IN PIRP pIrp) 908 914 { 915 RT_NOREF1(pDevObj); 909 916 PIO_STACK_LOCATION pIrpSl = IoGetCurrentIrpStackLocation(pIrp);; 910 917 NTSTATUS Status = STATUS_SUCCESS; … … 1207 1214 static NDIS_STATUS vboxNetLwfWinPause(IN NDIS_HANDLE hModuleCtx, IN PNDIS_FILTER_PAUSE_PARAMETERS pParameters) 1208 1215 { 1216 RT_NOREF1(pParameters); 1209 1217 LogFlow(("==>vboxNetLwfWinPause: module=%p\n", hModuleCtx)); 1210 1218 PVBOXNETLWF_MODULE pModuleCtx = (PVBOXNETLWF_MODULE)hModuleCtx; … … 1241 1249 static NDIS_STATUS vboxNetLwfWinRestart(IN NDIS_HANDLE hModuleCtx, IN PNDIS_FILTER_RESTART_PARAMETERS pParameters) 1242 1250 { 1251 RT_NOREF1(pParameters); 1243 1252 LogFlow(("==>vboxNetLwfWinRestart: module=%p\n", hModuleCtx)); 1244 1253 PVBOXNETLWF_MODULE pModuleCtx = (PVBOXNETLWF_MODULE)hModuleCtx; … … 1272 1281 { 1273 1282 pMdlNext = pMdl->Next; 1274 # ifndef VBOXNETLWF_SYNC_SEND1283 # ifndef VBOXNETLWF_SYNC_SEND 1275 1284 PUCHAR pDataBuf; 1276 1285 ULONG cb = 0; 1277 1286 NdisQueryMdl(pMdl, &pDataBuf, &cb, NormalPagePriority); 1278 # endif /* !VBOXNETLWF_SYNC_SEND */1287 # endif /* !VBOXNETLWF_SYNC_SEND */ 1279 1288 NdisFreeMdl(pMdl); 1280 1289 Log4(("vboxNetLwfWinFreeMdlChain: freed MDL 0x%p\n", pMdl)); 1281 # ifndef VBOXNETLWF_SYNC_SEND1290 # ifndef VBOXNETLWF_SYNC_SEND 1282 1291 NdisFreeMemory(pDataBuf, 0, 0); 1283 1292 Log4(("vboxNetLwfWinFreeMdlChain: freed data buffer 0x%p\n", pDataBuf)); 1284 # endif /* !VBOXNETLWF_SYNC_SEND */1293 # endif /* !VBOXNETLWF_SYNC_SEND */ 1285 1294 pMdl = pMdlNext; 1286 1295 } 1296 #else /* VBOXNETLWF_FIXED_SIZE_POOLS */ 1297 RT_NOREF1(pMdl); 1287 1298 #endif /* VBOXNETLWF_FIXED_SIZE_POOLS */ 1288 1299 } … … 1616 1627 VOID vboxNetLwfWinSendNetBufferLists(IN NDIS_HANDLE hModuleCtx, IN PNET_BUFFER_LIST pBufLists, IN NDIS_PORT_NUMBER nPort, IN ULONG fFlags) 1617 1628 { 1618 size_t cb = 0;1619 1629 LogFlow(("==>vboxNetLwfWinSendNetBufferLists: module=%p\n", hModuleCtx)); 1620 1630 PVBOXNETLWF_MODULE pModule = (PVBOXNETLWF_MODULE)hModuleCtx; … … 1693 1703 VOID vboxNetLwfWinSendNetBufferListsComplete(IN NDIS_HANDLE hModuleCtx, IN PNET_BUFFER_LIST pBufLists, IN ULONG fFlags) 1694 1704 { 1695 size_t cb = 0;1696 1705 LogFlow(("==>vboxNetLwfWinSendNetBufferListsComplete: module=%p\n", hModuleCtx)); 1697 1706 PVBOXNETLWF_MODULE pModule = (PVBOXNETLWF_MODULE)hModuleCtx; … … 1864 1873 VOID vboxNetLwfWinReturnNetBufferLists(IN NDIS_HANDLE hModuleCtx, IN PNET_BUFFER_LIST pBufLists, IN ULONG fFlags) 1865 1874 { 1866 size_t cb = 0;1867 1875 LogFlow(("==>vboxNetLwfWinReturnNetBufferLists: module=%p\n", hModuleCtx)); 1868 1876 PVBOXNETLWF_MODULE pModule = (PVBOXNETLWF_MODULE)hModuleCtx; … … 1918 1926 DECLHIDDEN(NDIS_STATUS) vboxNetLwfWinRegister(PDRIVER_OBJECT pDriverObject, PUNICODE_STRING pRegistryPathStr) 1919 1927 { 1928 RT_NOREF1(pRegistryPathStr); 1920 1929 NDIS_FILTER_DRIVER_CHARACTERISTICS FChars; 1921 1930 NDIS_STRING FriendlyName; … … 2068 2077 static VOID vboxNetLwfWinUnloadDriver(IN PDRIVER_OBJECT pDriver) 2069 2078 { 2079 RT_NOREF1(pDriver); 2070 2080 LogFlow(("==>vboxNetLwfWinUnloadDriver: driver=%p\n", pDriver)); 2071 2081 vboxNetLwfWinDevDestroy(&g_VBoxNetLwfGlobals); … … 2222 2232 int vboxNetFltPortOsXmit(PVBOXNETFLTINS pThis, void *pvIfData, PINTNETSG pSG, uint32_t fDst) 2223 2233 { 2234 RT_NOREF1(pvIfData); 2224 2235 int rc = VINF_SUCCESS; 2225 2236 … … 2240 2251 } 2241 2252 2242 const char *pszDir = (fDst & INTNETTRUNKDIR_WIRE) ?2243 ( (fDst & INTNETTRUNKDIR_HOST) ? "intnet --> all" : "intnet --> wire" ) : "intnet --> host";2244 vboxNetLwfWinDumpPacket(pSG, pszDir); 2253 vboxNetLwfWinDumpPacket(pSG, !(fDst & INTNETTRUNKDIR_WIRE) ? "intnet --> host" 2254 : !(fDst & INTNETTRUNKDIR_HOST) ? "intnet --> wire" : "intnet --> all"); 2255 2245 2256 /* 2246 2257 * There are two possible strategies to deal with incoming SGs: … … 2316 2327 { 2317 2328 /* WARNING! Call this with IRQL=Passive! */ 2329 RT_NOREF1(NdisIoWorkItemHandle); 2318 2330 PVBOXNETLWF_MODULE pModuleCtx = (PVBOXNETLWF_MODULE)WorkItemContext; 2319 2331 … … 2377 2389 int vboxNetFltOsDisconnectIt(PVBOXNETFLTINS pThis) 2378 2390 { 2391 RT_NOREF1(pThis); 2379 2392 LogFlow(("==>vboxNetFltOsDisconnectIt: instance=%p\n", pThis)); 2380 2393 LogFlow(("<==vboxNetFltOsDisconnectIt: return 0\n")); … … 2384 2397 int vboxNetFltOsConnectIt(PVBOXNETFLTINS pThis) 2385 2398 { 2399 RT_NOREF1(pThis); 2386 2400 LogFlow(("==>vboxNetFltOsConnectIt: instance=%p\n", pThis)); 2387 2401 LogFlow(("<==vboxNetFltOsConnectIt: return 0\n")); … … 2400 2414 { 2401 2415 PVBOXNETFLTINS pThis = (PVBOXNETFLTINS)pvCtx; 2402 PVBOXNETLWF_MODULE pModule = (PVBOXNETLWF_MODULE)pThis->u.s.WinIf.hModuleCtx;2403 2416 2404 2417 /* We are only interested in add or remove notifications. */ … … 2532 2545 int vboxNetFltOsInitInstance(PVBOXNETFLTINS pThis, void *pvContext) 2533 2546 { 2547 RT_NOREF1(pvContext); 2534 2548 LogFlow(("==>vboxNetFltOsInitInstance: instance=%p context=%p\n", pThis, pvContext)); 2535 2549 AssertReturn(pThis, VERR_INVALID_PARAMETER); … … 2569 2583 void vboxNetFltPortOsNotifyMacAddress(PVBOXNETFLTINS pThis, void *pvIfData, PCRTMAC pMac) 2570 2584 { 2585 RT_NOREF3(pThis, pvIfData, pMac); 2571 2586 LogFlow(("==>vboxNetFltPortOsNotifyMacAddress: instance=%p data=%p mac=%RTmac\n", pThis, pvIfData, pMac)); 2572 2587 LogFlow(("<==vboxNetFltPortOsNotifyMacAddress\n")); … … 2575 2590 int vboxNetFltPortOsConnectInterface(PVBOXNETFLTINS pThis, void *pvIf, void **ppvIfData) 2576 2591 { 2592 RT_NOREF3(pThis, pvIf, ppvIfData); 2577 2593 LogFlow(("==>vboxNetFltPortOsConnectInterface: instance=%p if=%p data=%p\n", pThis, pvIf, ppvIfData)); 2578 2594 LogFlow(("<==vboxNetFltPortOsConnectInterface: return 0\n")); … … 2583 2599 int vboxNetFltPortOsDisconnectInterface(PVBOXNETFLTINS pThis, void *pvIfData) 2584 2600 { 2601 RT_NOREF2(pThis, pvIfData); 2585 2602 LogFlow(("==>vboxNetFltPortOsDisconnectInterface: instance=%p data=%p\n", pThis, pvIfData)); 2586 2603 LogFlow(("<==vboxNetFltPortOsDisconnectInterface: return 0\n"));
Note:
See TracChangeset
for help on using the changeset viewer.