다음을 통해 공유


NDIS 선택적 일시 중단 유휴 알림 완료

NDIS는 MiniportIdleNotification 처리기 함수를 호출하여 드라이버에 기본 네트워크 어댑터가 유휴 상태임을 알립니다. 이 작업에 대한 자세한 내용은 NDIS 선택적 일시 중단 유휴 알림 처리를 참조하세요.

유휴 알림이 실행된 후 미니포트 드라이버는 다음 조건에서 NDIS 선택적 일시 중단 유휴 알림을 완료합니다.

  • NDIS는 기본 미니포트 드라이버의 MiniportCancelIdleNotification 처리기 함수를 호출하여 유휴 알림을 취소합니다.

  • 미니포트 드라이버는 유휴 알림 자체를 완료합니다. 이 작업을 수행하는 이유는 드라이버 및 어댑터의 디자인 및 요구 사항에 따라 다릅니다. 예를 들어 드라이버가 네트워크 어댑터에서 수신 활동을 감지하는 경우 유휴 알림을 완료할 수 있습니다.

참고 미니포트 드라이버는 유휴 알림을 명시적으로 취소할 수 없습니다. NDIS가 유휴 알림을 취소하면 미니포트 드라이버는 이 항목에 설명된 대로 알림을 완료해야 합니다. 자세한 내용은 NDIS 선택적 일시 중단 유휴 알림 취소를 참조하세요.

두 경우 모두 미니포트 드라이버는 어댑터를 전체 전원 상태로 다시 시작하려면 유휴 알림을 완료해야 합니다. 유휴 알림을 완료하려면 미니포트 드라이버가 유휴 알림에 대해 이전에 발급한 버스별 I/O 요청 패킷(IRP)을 취소해야 합니다. 마지막으로 드라이버는 NdisMIdleNotificationComplete 를 호출하여 네트워크 어댑터를 전체 전원 상태로 전환할 수 있음을 NDIS에 알립니다.

예를 들어 USB 네트워크 어댑터의 미니포트 드라이버는 다음 단계에 따라 유휴 알림을 완료합니다.

  1. 미니포트 드라이버는 보류 중인 USB 유휴 요청(IOCTL_INTERNAL_USB_SUBMIT_IDLE_NOTIFICATION) IRP를 취소합니다. NDIS가 드라이버의 MiniportIdleNotification 함수를 호출할 때 미니포트 드라이버는 이전에 이 IRP를 기본 USB 버스 드라이버에 발급했습니다. 미니포트 드라이버는 IoCancelIrp을 호출하여 이 IRP를 취소합니다.

  2. 버스 드라이버가 USB 유휴 요청 IRP를 취소하면 IRP에 대한 미니포트 드라이버의 완료 루틴을 호출합니다. 이 호출은 드라이버에 IRP가 완료되고 네트워크 어댑터가 전체 전원 상태로 전환할 수 있음을 알 수 있습니다. 완료 루틴의 컨텍스트에서 드라이버는 NdisMIdleNotificationComplete 를 호출하여 네트워크 어댑터를 전체 전원 상태로 전환할 수 있음을 NDIS에 알립니다.

    USB 유휴 요청 IRP 완료 루틴을 구현하는 방법에 대한 자세한 내용은 USB 유휴 요청 IRP 완료 루틴 구현을 참조하세요.

참고 버스별 유휴 요청을 취소하기 위한 종속성에 따라 미니포트 드라이버는 MiniportCancelIdleNotification 호출 컨텍스트에서 동기적으로 또는 MiniportCancelIdleNotification이 반환된 후 비동기적으로 NdisMIdleNotificationComplete를 호출합니다.

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

NdisMIdleNotificationComplete가 호출되면 NDIS는 다음 단계를 수행합니다.

  1. NDIS는 기본 버스 드라이버에 IRP_MN_SET_POWER 문제를 해결합니다. 이 IRP는 버스 드라이버에 네트워크 어댑터의 전원 상태를 PowerDeviceD0으로 설정하도록 요청합니다.

  2. NDIS는 미니포트 드라이버에 OID_PNP_SET_POWER OID(개체 식별자) 집합 요청을 발급합니다. 이 OID 요청에서 NDIS는 네트워크 어댑터가 이제 NdisDeviceStateD0의 전체 전원 상태로 전환되도록 지정합니다.

    이 OID 집합 요청을 처리할 때 드라이버는 전체 전원 작업을 위해 어댑터를 준비합니다. 여기에는 수신 및 전송 엔진을 저전력 상태로 전환하기 전과 동일한 상태로 복원하는 것이 포함됩니다. 그런 다음 드라이버는 NDIS_STATUS_SUCCESS 사용하여 OID 요청을 완료합니다.

다음 그림에서는 미니포트 드라이버가 USB 네트워크 어댑터에 대한 유휴 알림을 완료할 때 관련된 단계를 보여 줍니다.

USB 네트워크 어댑터에 대한 유휴 알림을 완료하는 데 관련된 단계를 보여 주는 다이어그램

참고 미니포트 드라이버가 유휴 알림을 완료하면 NdisMIdleNotificationComplete 호출을 통해 이전에 완료된 유휴 알림에 대해 NdisMIdleNotificationConfirm을 호출하면 안 됩니다.