共用方式為


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

呼叫 MiniportIdleNotification 時,USB 迷你埠驅動程式會呼叫 IoCallDriver,以發出 USB 閑置要求 (IOCTL_INTERNAL_USB_SUBMIT_IDLE_NOTIFICATION) 的 I/O 要求封包 (IRP)給基礎 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 回呼例程。