USB 유휴 요청 IRP 콜백 루틴 구현

MiniportIdleNotification이 호출되면 USB 미니포트 드라이버는 IoCallDriver를 호출하여 기본 USB 버스 드라이버에 USB 유휴 요청(IOCTL_INTERNAL_USB_SUBMIT_IDLE_NOTIFICATION)에 대한 IRP(I/O 요청 패킷)를 발급합니다. 미니포트 드라이버는 이 IRP를 발급하여 USB 버스 드라이버에 네트워크 어댑터가 유휴 상태이며 일시 중단되어야 하다는 사실을 알릴 수 있습니다.

USB 미니포트 드라이버는 USB 유휴 요청 IRP에 대한 IRP 콜백 루틴을 제공해야 합니다. USB 버스 드라이버는 네트워크 어댑터를 일시 중단하고 저전력 상태로 전환할 수 있다고 판단할 때 이 루틴을 호출합니다.

참고 USB 버스 드라이버는 USB 유휴 요청 IRP를 처리한 후 IoCallDriver 호출 컨텍스트에서 동기적으로 또는 MiniportIdleNotification 이 반환된 후 비동기적으로 콜백 루틴을 호출합니다.

콜백 루틴은 네트워크 어댑터의 저전력 상태 전환을 계속할 수 있음을 NDIS에 알리기 위해 NdisMIdleNotificationConfirm 만 호출해야 합니다. 드라이버가 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 콜백 루틴을 참조하세요.