MiniportCancelIdleNotification 처리기 함수 구현

NDIS는 유휴 알림 프로세스를 취소하고 네트워크 어댑터를 전체 전원 상태로 전환하기 위해 미니포트 드라이버의 MiniportCancelIdleNotification 처리기 함수를 호출합니다. 이 함수가 호출되면 미니포트 드라이버는 다음 단계를 수행해야 합니다.

  1. 미니포트 드라이버는 유휴 알림에 대해 이전에 발급한 버스별 IRP를 취소해야 합니다.

  2. 미니포트 드라이버는 NdisMIdleNotificationComplete를 호출 합니다. 이 호출은 유휴 알림이 완료되었음을 NDIS에 알릴 수 있습니다. 그런 다음 NDIS는 네트워크 어댑터를 전체 전원 상태로 전환하여 선택적 일시 중단 작업을 컴파일합니다.

예를 들어 MiniportCancelIdleNotification이 호출되면 USB 미니포트 드라이버는 IoCancelIrp를 호출하여 USB 유휴 요청(IOCTL_INTERNAL_USB_SUBMIT_IDLE_NOTIFICATION)에 대한 IRP(I/O 요청 패킷)를 취소합니다. 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 완료 루틴 구현을 참조 하세요.