共用方式為


實作 MiniportCancelIdleNotification 處理程式函式

NDIS 會呼叫迷你埠驅動程式的 MiniportCancelIdleNotification 處理程式函式,以取消閑置通知程式,並將網路適配器轉換為全電源狀態。 呼叫此函式時,迷你埠驅動程序必須遵循下列步驟:

  1. 迷你埠驅動程序必須取消先前針對閑置通知發出的任何總線特定 IRP。

  2. 迷你埠驅動程式會呼叫 NdisMIdleNotificationComplete 此呼叫會通知 NDIS 閑置通知已完成。 NDIS 接著會將網路適配器轉換為全電源狀態,以編譯選擇性暫停作業。

例如,呼叫 MiniportCancelIdleNotification,USB 迷你埠驅動程式會呼叫 IoCancelIrp 來取消 USB 閑置要求的 I/O 要求封包 (IRP) (IOCTL_INTERNAL_USB_SUBMIT_IDLE_NOTIFICATION)。 USB 迷你埠驅動程式先前在其 MiniportIdleNotification 處理程式函式中發出此 IRP。 只要 USB 總線驅動程式取消 IRP,就會呼叫 IRP 的完成例程。 當 USB 總線驅動程式呼叫完成例程時,它會確認 IRP 已取消,且裝置可以繼續進入全電源狀態。 在完成例程的內容中,迷你埠驅動程式會呼叫 NdisMIdleNotificationComplete

注意 USB 總線驅動程式可以在呼叫 IoCancelIrp 的內容中以同步方式呼叫完成例程,或在 MiniportCancelIdleNotification 傳回之後以異步方式呼叫。

以下是USB迷你埠驅動程式的MiniportCancelIdleNotification處理程式函式範例 此範例示範取消 USB 閑置要求 IRP 所涉及的步驟。

//
// MiniportCancelIdleNotification()
//
// This routine is called if NDIS has to cancel an idle notification.
// All that is needed is to cancel the selective suspend IRP.
//
VOID MiniportCancelIdleNotification(
    _In_ NDIS_HANDLE MiniportAdapterContext
    )
{
    IoCancelIrp(Adapter->UsbSsIrp);
}

如需實作 USB 閑置要求 IRP 完成例程的指導方針,請參閱 實作 USB 閑置要求 IRP 完成例程