Dela via


Implementera en IRP-återanropsrutin för USB-inaktiv begäran

När MiniportIdleNotification anropas anropar USB-miniportdrivrutinen IoCallDriver för att utfärda ett I/O-begärandepaket (IRP) för en USB-inaktiv begäran (IOCTL_INTERNAL_USB_SUBMIT_IDLE_NOTIFICATION) till den underliggande USB-bussdrivrutinen. Miniportdrivrutinen utfärdar denna IRP för att informera USB-bussdrivrutinen om att nätverkskortet är inaktivt och måste sättas i vänteläge.

USB-miniportdrivrutinen måste tillhandahålla en IRP-återanropsrutin för IRP för USB-inaktiv begäran. USB-bussdrivrutinen anropar den här rutinen när den fastställer att nätverkskortet kan pausas och övergå till ett lågeffektstillstånd.

Obs När USB-bussdrivrutinen har hanterat USB-idle-begärans IRP anropas återanropsrutinen antingen synkront i samband med anropet till IoCallDriver eller asynkront efter att MiniportIdleNotification har returnerat.

Återanropsrutinen behöver bara anropa NdisMIdleNotificationConfirm för att meddela NDIS att den kan fortsätta med övergången till lågeffekttillstånd för nätverkskortet. När drivrutinen anropar NdisMIdleNotificationConfirm måste den också ange det lägsta enhetskrafttillstånd som nätverkskortet kan övergå till.

Inom ramen för anropet till NdisMIdleNotificationConfirm utför NDIS de steg som krävs för att överföra nätverkskortet till ett lågeffektstillstånd. För mer information, se Hantering av NDIS Selective Suspend Idle Notification.

Följande är ett exempel på en återanropsrutin för en USB-vilobegäran 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;
}

Mer information om återanropsrutinen för USB-inaktiva begäranden finns i USB Idle Request IRP Callback Routine (Usb Idle Request IRP Callback Routine).