Changeset 62714 in vbox
- Timestamp:
- Jul 29, 2016 9:41:09 PM (9 years ago)
- svn:sync-xref-src-repo-rev:
- 109288
- Location:
- trunk/src/VBox/HostDrivers
- Files:
-
- 5 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")); -
trunk/src/VBox/HostDrivers/VBoxUSB/win/cmn/VBoxDrvTool.cpp
r62490 r62714 111 111 static NTSTATUS vboxDrvToolIoCompletionSetEvent(IN PDEVICE_OBJECT pDevObj, IN PIRP pIrp, IN PVOID pvContext) 112 112 { 113 RT_NOREF2(pDevObj, pIrp); 113 114 PKEVENT pEvent = (PKEVENT)pvContext; 114 115 KeSetEvent(pEvent, 0, FALSE); -
trunk/src/VBox/HostDrivers/VBoxUSB/win/cmn/VBoxUsbTool.cpp
r62490 r62714 335 335 } 336 336 337 VBOXUSBTOOL_DECL(NTSTATUS) VBoxUsbToolIoInternalCtlSendSyncWithTimeout(PDEVICE_OBJECT pDevObj, ULONG uCtl, void *pvArg1, void *pvArg2, ULONG dwTimeoutMs) 337 VBOXUSBTOOL_DECL(NTSTATUS) VBoxUsbToolIoInternalCtlSendSyncWithTimeout(PDEVICE_OBJECT pDevObj, ULONG uCtl, 338 void *pvArg1, void *pvArg2, ULONG dwTimeoutMs) 338 339 { 339 340 /* since we're going to cancel the irp on timeout, we should allocate our own IRP rather than using the threaded one … … 354 355 355 356 VBOXUSBTOOL_DECL(NTSTATUS) VBoxUsbToolIoInternalCtlSendAsync(PDEVICE_OBJECT pDevObj, ULONG uCtl, void *pvArg1, void *pvArg2, 356 PKEVENT pEvent, PIO_STATUS_BLOCK pIoStatus)357 PKEVENT pEvent, PIO_STATUS_BLOCK pIoStatus) 357 358 { 358 359 NTSTATUS Status; 359 360 PIRP pIrp; 360 361 PIO_STACK_LOCATION pSl; 361 KIRQL Irql = KeGetCurrentIrql(); 362 Assert(Irql == PASSIVE_LEVEL); 362 Assert(KeGetCurrentIrql() == PASSIVE_LEVEL); 363 363 364 364 pIrp = IoBuildDeviceIoControlRequest(uCtl, pDevObj, NULL, 0, NULL, 0, TRUE, pEvent, pIoStatus); -
trunk/src/VBox/HostDrivers/VBoxUSB/win/dev/VBoxUsbPnP.cpp
r62709 r62714 3 3 * USB PnP Handling 4 4 */ 5 5 6 /* 6 7 * Copyright (C) 2011-2016 Oracle Corporation … … 14 15 * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. 15 16 */ 17 16 18 #include "VBoxUsbCmn.h" 17 19 … … 214 216 { 215 217 PVBOXUSBDEV_EXT pDevExt = (PVBOXUSBDEV_EXT)pDeviceObject->DeviceExtension; 216 ENMVBOXUSB_PNPSTATE enmState = vboxUsbPnPStateGet(pDevExt);217 218 if (!vboxUsbDdiStateRetainIfNotRemoved(pDevExt)) 218 {219 219 return VBoxDrvToolIoComplete(pIrp, STATUS_DELETE_PENDING, 0); 220 }221 220 222 221 PIO_STACK_LOCATION pSl = IoGetCurrentIrpStackLocation(pIrp); 223 224 222 switch (pSl->MinorFunction) 225 223 { 226 224 case IRP_MN_START_DEVICE: 227 {228 225 return vboxUsbPnPMnStartDevice(pDevExt, pIrp); 229 } 226 230 227 case IRP_MN_QUERY_STOP_DEVICE: 231 {232 228 return vboxUsbPnPMnQueryStopDevice(pDevExt, pIrp); 233 } 229 234 230 case IRP_MN_STOP_DEVICE: 235 {236 231 return vboxUsbPnPMnStopDevice(pDevExt, pIrp); 237 } 232 238 233 case IRP_MN_CANCEL_STOP_DEVICE: 239 {240 234 return vboxUsbPnPMnCancelStopDevice(pDevExt, pIrp); 241 } 235 242 236 case IRP_MN_QUERY_REMOVE_DEVICE: 243 {244 237 return vboxUsbPnPMnQueryRemoveDevice(pDevExt, pIrp); 245 } 238 246 239 case IRP_MN_REMOVE_DEVICE: 247 {248 240 return vboxUsbPnPMnRemoveDevice(pDevExt, pIrp); 249 } 241 250 242 case IRP_MN_CANCEL_REMOVE_DEVICE: 251 {252 243 return vboxUsbPnPMnCancelRemoveDevice(pDevExt, pIrp); 253 } 244 254 245 case IRP_MN_SURPRISE_REMOVAL: 255 {256 246 return vboxUsbPnPMnSurpriseRemoval(pDevExt, pIrp); 257 } 247 258 248 case IRP_MN_QUERY_CAPABILITIES: 259 {260 249 return vboxUsbPnPMnQueryCapabilities(pDevExt, pIrp); 261 } 250 262 251 default: 263 {264 252 return vboxUsbPnPMnDefault(pDevExt, pIrp); 265 266 267 } 253 } 254 } 255 -
trunk/src/VBox/HostDrivers/VBoxUSB/win/dev/VBoxUsbPwr.cpp
r62709 r62714 54 54 55 55 static VOID vboxUsbPwrIoDeviceCompletion(IN PDEVICE_OBJECT pDeviceObject, 56 IN UCHAR MinorFunction, 57 IN POWER_STATE PowerState, 58 IN PVOID pvContext, 59 IN PIO_STATUS_BLOCK pIoStatus) 60 { 56 IN UCHAR MinorFunction, 57 IN POWER_STATE PowerState, 58 IN PVOID pvContext, 59 IN PIO_STATUS_BLOCK pIoStatus) 60 { 61 RT_NOREF3(pDeviceObject, MinorFunction, PowerState); 61 62 PVBOXUSB_PWRDEV_CTX pDevCtx = (PVBOXUSB_PWRDEV_CTX)pvContext; 62 63 PVBOXUSBDEV_EXT pDevExt = pDevCtx->pDevExt; … … 108 109 static NTSTATUS vboxUsbPwrIoPostSysCompletion(IN PDEVICE_OBJECT pDevObj, IN PIRP pIrp, IN PVOID pvContext) 109 110 { 111 RT_NOREF1(pDevObj); 110 112 PVBOXUSBDEV_EXT pDevExt = (PVBOXUSBDEV_EXT)pvContext; 111 113 NTSTATUS Status = pIrp->IoStatus.Status; … … 138 140 IoSetCompletionRoutine(pIrp, vboxUsbPwrIoPostSysCompletion, pDevExt, TRUE, TRUE, TRUE); 139 141 NTSTATUS Status = PoCallDriver(pDevExt->pLowerDO, pIrp); 140 Assert(NT_SUCCESS(Status)); 142 Assert(NT_SUCCESS(Status)); NOREF(Status); 141 143 return STATUS_PENDING; 142 144 } … … 144 146 static NTSTATUS vboxUsbPwrQueryPowerSys(IN PVBOXUSBDEV_EXT pDevExt, IN PIRP pIrp) 145 147 { 146 PIO_STACK_LOCATION pSl = IoGetCurrentIrpStackLocation(pIrp);147 SYSTEM_POWER_STATE enmSysPState = pSl->Parameters.Power.State.SystemState; 148 /*PIO_STACK_LOCATION pSl = IoGetCurrentIrpStackLocation(pIrp); 149 SYSTEM_POWER_STATE enmSysPState = pSl->Parameters.Power.State.SystemState;*/ 148 150 149 151 return vboxUsbPwrIoPostSys(pDevExt, pIrp); … … 152 154 static NTSTATUS vboxUsbPwrIoPostDevCompletion(IN PDEVICE_OBJECT pDevObj, IN PIRP pIrp, IN PVOID pvContext) 153 155 { 156 RT_NOREF1(pDevObj); 154 157 PVBOXUSBDEV_EXT pDevExt = (PVBOXUSBDEV_EXT)pvContext; 155 158 156 159 if (pIrp->PendingReturned) 157 {158 160 IoMarkIrpPending(pIrp); 159 }160 161 161 162 NTSTATUS Status = pIrp->IoStatus.Status; … … 167 168 { 168 169 case IRP_MN_SET_POWER: 169 {170 170 pDevExt->DdiState.PwrState.PowerState.DeviceState = pSl->Parameters.Power.State.DeviceState; 171 171 PoSetPowerState(pDevExt->pFDO, DevicePowerState, pSl->Parameters.Power.State); 172 172 break; 173 } 173 174 174 default: 175 {176 175 break; 177 }178 176 } 179 177 } … … 190 188 IoSetCompletionRoutine(pIrp, vboxUsbPwrIoPostDevCompletion, pDevExt, TRUE, TRUE, TRUE); 191 189 NTSTATUS Status = PoCallDriver(pDevExt->pLowerDO, pIrp); 192 Assert(NT_SUCCESS(Status)); 190 Assert(NT_SUCCESS(Status)); RT_NOREF_PV(Status); 193 191 return STATUS_PENDING; 194 192 } … … 271 269 { 272 270 PIO_STACK_LOCATION pSl = IoGetCurrentIrpStackLocation(pIrp); 273 274 271 switch (pSl->Parameters.Power.Type) 275 272 { 276 273 case SystemPowerState: 277 {278 274 return vboxUsbPwrQueryPowerSys(pDevExt, pIrp); 279 } 275 280 276 case DevicePowerState: 281 {282 277 return vboxUsbPwrQueryPowerDev(pDevExt, pIrp); 283 } 278 284 279 default: 285 {286 280 AssertFailed(); 287 281 return vboxUsbPwrMnDefault(pDevExt, pIrp); 288 } 289 290 } 291 return vboxUsbPwrMnDefault(pDevExt, pIrp); 282 283 } 292 284 } 293 285 294 286 static NTSTATUS vboxUsbPwrSetPowerSys(IN PVBOXUSBDEV_EXT pDevExt, IN PIRP pIrp) 295 287 { 296 PIO_STACK_LOCATION pSl = IoGetCurrentIrpStackLocation(pIrp);297 SYSTEM_POWER_STATE enmSysPState = pSl->Parameters.Power.State.SystemState; 288 /*PIO_STACK_LOCATION pSl = IoGetCurrentIrpStackLocation(pIrp); 289 SYSTEM_POWER_STATE enmSysPState = pSl->Parameters.Power.State.SystemState;*/ 298 290 299 291 return vboxUsbPwrIoPostSys(pDevExt, pIrp); … … 339 331 { 340 332 PIO_STACK_LOCATION pSl = IoGetCurrentIrpStackLocation(pIrp); 341 342 333 switch (pSl->Parameters.Power.Type) 343 334 { 344 335 case SystemPowerState: 345 {346 336 return vboxUsbPwrSetPowerSys(pDevExt, pIrp); 347 } 337 348 338 case DevicePowerState: 349 {350 339 return vboxUsbPwrSetPowerDev(pDevExt, pIrp); 351 } 340 352 341 default: 353 {354 342 AssertFailed(); 355 343 return vboxUsbPwrMnDefault(pDevExt, pIrp); 356 } 357 358 } 359 return vboxUsbPwrMnDefault(pDevExt, pIrp); 344 } 360 345 } 361 346 … … 374 359 { 375 360 case IRP_MN_POWER_SEQUENCE: 376 {377 361 return vboxUsbPwrMnPowerSequence(pDevExt, pIrp); 378 } 362 379 363 case IRP_MN_QUERY_POWER: 380 {381 364 return vboxUsbPwrMnQueryPower(pDevExt, pIrp); 382 } 365 383 366 case IRP_MN_SET_POWER: 384 {385 367 return vboxUsbPwrMnSetPower(pDevExt, pIrp); 386 } 368 387 369 case IRP_MN_WAIT_WAKE: 388 {389 370 return vboxUsbPwrMnWaitWake(pDevExt, pIrp); 390 } 371 391 372 default: 392 {393 373 // AssertFailed(); 394 374 return vboxUsbPwrMnDefault(pDevExt, pIrp); 395 }396 375 } 397 376 } … … 404 383 { 405 384 case ENMVBOXUSB_PNPSTATE_REMOVED: 406 {407 385 PoStartNextPowerIrp(pIrp); 408 386 … … 415 393 416 394 return STATUS_DELETE_PENDING; 417 } 395 418 396 case ENMVBOXUSB_PNPSTATE_START_PENDING: 419 {420 397 PoStartNextPowerIrp(pIrp); 421 398 IoSkipCurrentIrpStackLocation(pIrp); … … 424 401 425 402 return PoCallDriver(pDevExt->pLowerDO, pIrp); 426 } 403 427 404 default: 428 {429 405 return vboxUsbPwrDispatch(pDevExt, pIrp); 430 } 431 } 432 } 433 406 } 407 } 408
Note:
See TracChangeset
for help on using the changeset viewer.