NDIS 선택적 일시 중단 유휴 알림 취소
네트워크 어댑터가 유휴 시간 제한 기간 동안 비활성 상태가 되면 NDIS는 선택적 일시 중단 작업을 시작합니다. 이 작업을 통해 네트워크 어댑터는 저전력 상태로 전환됩니다. NDIS는 미니포트 드라이버에 유휴 알림을 발급하여 이 작업을 시작합니다. 이 작업에 대한 자세한 내용은 NDIS 선택적 일시 중단 유휴 알림 처리를 참조하세요.
NDIS는 MiniportIdleNotification 처리기 함수를 호출하여 드라이버에 기본 네트워크 어댑터가 유휴 상태임을 알립니다. 유휴 알림이 발급된 후 다음 조건 중 하나 이상이 true이면 NDIS에서 보류 중인 유휴 알림을 취소합니다.
지나치게 많은 프로토콜 또는 필터 드라이버는 미니포트 드라이버에 패킷 보내기 요청 또는 OID(개체 식별자) 요청을 발급합니다.
NDIS가 이 시나리오에 대한 유휴 알림을 취소하는 방법에 대한 자세한 내용은 드라이버 활동이 과도하게 표시되어 유휴 알림 취소를 참조하세요.
기본 어댑터는 패킷 수신 또는 미디어 연결 상태 변경 검색과 같은 절전 모드 해제 이벤트를 신호합니다.
NDIS가 이 시나리오에 대한 유휴 알림을 취소하는 방법에 대한 자세한 내용은 절전 모드 해제 이벤트로 인해 유휴 알림 취소를 참조하세요.
NDIS는 기본 미니포트 드라이버의 MiniportCancelIdleNotification 처리기 함수를 호출하여 유휴 알림을 취소합니다. 이 함수가 호출되면 미니포트 드라이버가 유휴 알림을 완료하여 어댑터를 전체 전원 상태로 다시 시작해야 합니다. 이 프로세스에 대한 지침은 NDIS 선택적 일시 중단 유휴 알림 완료를 참조하세요.
MiniportCancelIdleNotification 처리기 함수를 구현하는 방법에 대한 자세한 내용은 MiniportCancelIdleNotification 처리기 함수 구현을 참조하세요.
드라이버 작업이 과도하게 표시되어 유휴 알림 취소
NDIS 모니터는 네트워크 어댑터가 일시 중단되고 저전력 상태인 미니포트 드라이버에 발급된 요청 및 OID 요청을 보냅니다. 이 경우 NDIS는 네트워크 어댑터가 전체 전원 상태로 다시 시작될 수 있도록 미해결 유휴 알림을 취소합니다.
유휴 알림이 취소되면 NDIS 및 미니포트 드라이버는 다음 단계를 수행합니다.
NDIS는 MiniportCancelIdleNotification 처리기 함수를 호출하여 미해결 유휴 알림을 취소합니다. 이 처리기 함수가 호출되면 미니포트 드라이버는 유휴 알림에 대해 이전에 발급했을 수 있는 버스별 I/O 요청 패킷(IRP)을 취소해야 합니다.
예를 들어 MiniportCancelIdleNotification 이 호출되면 USB 네트워크 어댑터의 미니포트는 다음 단계를 수행합니다.
미니포트 드라이버는 보류 중인 USB 유휴 요청(IOCTL_INTERNAL_USB_SUBMIT_IDLE_NOTIFICATION) IRP를 취소합니다. NDIS가 드라이버의 MiniportIdleNotification 함수를 호출할 때 미니포트 드라이버는 이전에 이 IRP를 기본 USB 버스 드라이버에 발급했습니다. 미니포트 드라이버는 IoCancelIrp를 호출하여 이 IRP를 취소합니다.
버스 드라이버가 USB 유휴 요청 IRP를 취소하면 IRP에 대한 미니포트 드라이버의 완료 루틴을 호출합니다. 이 호출은 드라이버에 IRP가 완료되었으며 네트워크 어댑터가 전체 전원 상태로 전환할 수 있음을 알 수 있습니다. 완료 루틴의 컨텍스트에서 드라이버는 NdisMIdleNotificationComplete 를 호출하여 네트워크 어댑터를 전체 전원 상태로 전환할 수 있음을 NDIS에 알립니다.
참고 버스별 유휴 요청을 취소하기 위한 종속성에 따라 미니포트 드라이버는 MiniportCancelIdleNotification 호출 컨텍스트에서 동기적으로 또는 MiniportCancelIdleNotification이 반환된 후 비동기적으로 NdisMIdleNotificationComplete를 호출합니다.
USB 유휴 요청 IRP 완료 루틴을 구현하는 방법에 대한 자세한 내용은 USB 유휴 요청 IRP 완료 루틴 구현을 참조하세요.
미니포트 드라이버는 유휴 알림에 대한 버스별 IRP를 취소한 후 NdisMIdleNotificationComplete를 호출합니다. 이 호출은 유휴 알림이 완료되었음을 NDIS에 알릴 수 있습니다. 그런 다음, NDIS는 네트워크 어댑터를 전체 전원 상태로 전환하여 선택적 일시 중단 작업을 완료합니다.
NdisMIdleNotificationComplete가 호출되면 NDIS는 다음 단계를 수행합니다.
NDIS는 기본 버스 드라이버에 IRP_MN_SET_POWER 문제를 해결합니다. 이 IRP는 버스 드라이버에 네트워크 어댑터의 전원 상태를 PowerDeviceD0으로 설정하도록 요청합니다.
NDIS는 미니포트 드라이버에 OID_PNP_SET_POWER OID 집합 요청을 발급합니다. 이 OID 요청에서 NDIS는 네트워크 어댑터가 이제 NdisDeviceStateD0의 전체 전원 상태로 전환되고 있음을 지정합니다.
이 OID 집합 요청을 처리하면 드라이버가 전원이 완전히 작동하도록 어댑터를 준비합니다. 여기에는 수신 및 송신 엔진을 저전력 상태로 전환하기 전과 동일한 상태로 복원하는 것이 포함됩니다. 그런 다음 드라이버는 NDIS_STATUS_SUCCESS 사용하여 OID 요청을 완료합니다.
다음 그림에서는 NDIS가 USB 네트워크 어댑터의 미니포트 드라이버에 발급된 유휴 알림을 취소할 때 관련된 단계를 보여 줍니다.
절전 모드 해제 이벤트로 인해 유휴 알림 취소
네트워크 어댑터가 저전력 상태로 전환되기 전에 NDIS는 네트워크 어댑터에 대한 OID_PM_PARAMETERS OID 집합 요청을 발급합니다. 이 OID 요청은 어댑터가 전체 전원 상태로 다시 시작하도록 신호를 표시할 수 있는 절전 모드 해제 이벤트 유형을 지정합니다. NDIS 선택적 일시 중단의 경우 어댑터는 다음 절전 모드 해제 이벤트를 신호로 표시하도록 구성됩니다.
OID_PM_ADD_WOL_PATTERN 또는OID_GEN_CURRENT_PACKET_FILTER OID 집합 요청을 통해 이전에 구성된 필터와 일치하는 패킷의 수신입니다.
어댑터에서 미디어 연결 상태 변경되었습니다.
NDIS 및 미니포트 드라이버는 네트워크 어댑터에서 생성된 절전 모드 해제 신호로 인해 NDIS가 유휴 알림을 취소할 때 다음 단계를 수행합니다.
버스 드라이버는 어댑터를 저 전력 상태로 전환하기 전에 NDIS에서 발급한 IRP_MN_WAIT_WAKE 완료합니다. IRP를 완료하면 버스 드라이버는 네트워크 어댑터가 절전 모드 해제 신호를 생성했음을 NDIS에 알릴 수 있습니다.
NDIS는 MiniportCancelIdleNotification 처리기 함수를 호출하여 유휴 알림 취소 작업을 시작합니다. 이 작업에 관련된 단계는 드라이버 작업 오버레이로 인해 유휴 알림 취소에 설명된 것과 동일합니다.
예를 들어 다음 그림에서는 USB 네트워크 어댑터에서 신호를 받은 절전 모드 해제 이벤트로 인해 NDIS가 유휴 알림을 취소할 때 관련된 단계를 보여 줍니다.