共用方式為


實作 USB 閒置要求 IRP 回呼常式

呼叫 MiniportIdleNotification 時,USB 迷你埠驅動程式會呼叫 IoCallDriver ,針對 USB 閒置要求發出 I/O 要求封包 (IRP) , ( IOCTL_INTERNAL_USB_SUBMIT_IDLE_NOTIFICATION) 到基礎 USB 匯流排驅動程式。 迷你埠驅動程式會發出此 IRP,通知 USB 匯流排驅動程式網路介面卡閒置且必須暫停。

USB 迷你埠驅動程式必須為 USB 閒置要求 IRP 提供 IRP 回呼常式。 當 USB 匯流排驅動程式判斷網路介面卡可以暫停並轉換為低電源狀態時,會呼叫此常式。

注意 在 USB 匯流排驅動程式處理 USB 閒置要求 IRP 之後,它會在 呼叫 IoCallDriver 的內容中以同步方式呼叫回呼常式,或在 MiniportIdleNotification 傳回之後以非同步方式呼叫回呼常式。

回呼常式只需要呼叫 NdisMIdleNotificationConfirm ,才能通知 NDIS 它可以繼續進行網路介面卡的低電源狀態轉換。 當驅動程式呼叫 NdisMIdleNotificationConfirm時,也必須指定網路介面卡可以轉換到的最低裝置電源狀態。

呼叫 NdisMIdleNotificationConfirm的內容中,NDIS 會執行將網路介面卡轉換為低電源狀態所需的步驟。 如需詳細資訊,請參閱 處理 NDIS 選擇性暫停閒置通知

以下是 USB 閒置要求 IRP 的回呼常式範例。

//
// MiniportUsbIdleRequestCallback()
//
// This is the USB selective suspend idle notification.  All that is 
// needed is to inform NDIS that the USB stack is ready to go to a 
// low-power state.  Be aware that USB devices will always be requested
// to transition to a power state of NdisDeviceStateD2.
//
VOID MiniportUsbIdleRequestCallback(PVOID AdapterContext)
{
    NdisMIdleNotificationConfirm(
        AdapterContext->MiniportAdapterHandle,
        NdisDeviceStateD2
        );

    return;
}

如需 USB 閒置要求回呼常式的詳細資訊,請參閱 USB 閒置要求 IRP 回呼常式。