Sdílet prostřednictvím


Implementace rutiny zpětného volání IRP žádosti o nečinnosti USB

Když je volána MiniportIdleNotification, ovladač miniportu USB volá IoCallDriver, aby vydal paket IRP pro požadavek nečinnosti USB (IOCTL_INTERNAL_USB_SUBMIT_IDLE_NOTIFICATION) k základnímu ovladači sběrnice USB. Ovladač miniportu vydává tento IRP, aby informoval ovladač sběrnice USB, že síťový adaptér je nečinný a musí být pozastaven.

Ovladač miniportu USB musí poskytovat rutinu zpětného volání pro nečinný požadavek IRP USB. Ovladač sběrnice USB volá tuto rutinu, když zjistí, že síťový adaptér může být pozastaven a převeden do stavu nízkého napájení.

Poznámka Jakmile ovladač sběrnice USB zpracuje požadavek IRP pro nečinnost USB, volá rutinu zpětného volání buď synchronně v rámci volání IoCallDriver, nebo asynchronně poté, co se MiniportIdleNotification vrátí.

Rutina zpětného volání musí volat pouze NdisMIdleNotificationConfirm, aby bylo možné informovat NDIS, že může pokračovat s přechodem stavu nízkého výkonu síťového adaptéru. Když ovladač volá NdisMIdleNotificationConfirm, musí také určit nejnižší stav napájení zařízení, na který může síťový adaptér přejít.

V kontextu volání NdisMIdleNotificationConfirmprovádí NDIS kroky potřebné k přechodu síťového adaptéru do stavu s nízkou spotřebou. Další informace naleznete v tématu Zpracování oznámení o selektivním pozastavení nečinnosti NDIS.

Následuje příklad rutiny zpětného volání pro IRP nečinného požadavku USB.

//
// 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;
}

Další informace o rutině zpětného volání žádosti o nečinnosti USB naleznete v tématu Rutina zpětného volání IRP žádosti o nečinnosti USB.