OID_PNP_SET_POWER
OID_PNP_SET_POWER OID는 기본 네트워크 어댑터가 InformationBuffer에 지정된 디바이스 전원 상태로 전환될 것임을 미니포트 드라이버에 알깁니다. 디바이스 전원 상태는 다음 NDIS_DEVICE_POWER_STATE 값 중 하나로 지정됩니다.
- NdisDeviceStateD0
- NdisDeviceStateD1
- NdisDeviceStateD2
- NdisDeviceStateD3
OID_PNP_SET_POWER 요청 앞에 OID_PNP_QUERY_POWER 요청이 있을 수 있습니다.
NDIS 6.30부터 NDIS는 다음 조건이 충족되는 경우 전원 상태 전환 중에 드라이버 스택에서 NDIS 드라이버를 일시 중지하고 다시 시작하지 않습니다.
기본 미니포트 드라이버는 NDIS_MINIPORT_ADAPTER_REGISTRATION_ATTRIBUTES 구조체에서 NDIS_MINIPORT_ATTRIBUTES_NO_PAUSE_ON_SUSPEND 플래그를 설정합니다. 드라이버는 NdisMSetMiniportAttributes 함수 호출에서 이 구조체에 대한 포인터를 전달합니다.
미니포트 드라이버에 연결된 모든 오버리싱 필터 드라이버는 NDIS 6.30 이상 버전의 NDIS를 지원합니다.
미니포트 드라이버에 바인딩된 모든 지나치게 많은 프로토콜 드라이버는 NDIS 6.30 이상 버전의 NDIS를 지원합니다.
Low-Power 상태로 전환(D1-D3)
미니포트 드라이버가 저전력 상태로 전환하기 위해 OID_PNP_SET_POWER 설정된 요청을 처리하는 경우 다음을 수행해야 합니다.
표시된 네트워크 디바이스 전원 상태에 대해 네트워크 어댑터를 완전히 준비합니다. 이 작업을 수행하기 위해 미니포트 드라이버에서 수행하는 작업은 디바이스에 따라 다릅니다.
NdisMIndicateReceiveNetBufferLists 함수에 대한 호출이 반환되기를 기다립니다.
네트워크 어댑터에서 처리된 송신 요청이 완료될 때까지 기다립니다. 완료되면 미니포트 드라이버는 NdisMSendNetBufferListsComplete 함수를 호출해야 합니다. 드라이버는 각 NET_BUFFER_LIST 구조체의 Status 멤버를 적절한 NDIS_STATUS_Xxx 값으로 설정해야 합니다.
NdisMSendNetBufferListsComplete 함수를 호출하여 보류 중인 모든 보내기 요청을 완료합니다. 드라이버는 각 NET_BUFFER_LIST 구조체의 Status 멤버를 NDIS_STATUS_LOW_POWER_STATE 설정해야 합니다.
NdisMSendNetBufferListsComplete 함수를 호출하여 MiniportSendNetBufferLists 함수에 대한 모든 새 보내기 요청을 즉시 거부합니다. 드라이버는 각 NET_BUFFER_LIST 구조체의 Status 멤버를 NDIS_STATUS_LOW_POWER_STATE 설정해야 합니다.
NDIS 6.30 이상 버전의 NDIS를 지원하는 미니포트 드라이버도 다음을 수행해야 합니다.
MiniportReturnNetBufferLists 함수에 대한 호출을 통해 보류 중인 수신 표시가 완료될 때까지 기다리지 않습니다. 또한 미니포트 드라이버는 완료되기를 기다리는 패킷에 대한 NET_BUFFER_LIST 구조 또는 데이터를 변경해서는 안 됩니다.
일시 중지됨 또는 실행 중인 어댑터 상태에서 저전력 상태로 OID_PNP_SET_POWER 요청을 처리합니다. 이러한 상태에 대한 자세한 내용은 미니포트 어댑터 상태 및 작업을 참조하세요.
네트워크 어댑터가 D3 상태로 전환되기 전에 미니포트 드라이버는 다음 작업을 수행하여 미니포트 드라이버의 제어 하에 있는 모든 항목을 해제해야 합니다.
네트워크 어댑터에서 인터럽트 및 DMA 엔진을 사용하지 않도록 설정합니다.
네트워크 어댑터에서 수신 엔진을 중지합니다.
보류 중인 수신 표시와 연결된 수신 설명자 및 패킷 버퍼의 할당을 취소하거나 수정하지 마세요.
모든 NDIS 타이머를 취소합니다.
참고 버스 드라이버가 네트워크 어댑터를 D3 상태로 전환한 후에는 미니포트 드라이버가 네트워크 어댑터에 액세스할 수 없습니다.
Full-Power 상태(D0)로 전환
미니포트 드라이버가 전체 전원 상태로 전환하기 위한 OID_PNP_SET_POWER 설정된 요청을 처리하는 경우 어댑터가 저전력 상태로 전환되기 전에 수신 엔진이 있던 것과 동일한 상태로 네트워크 어댑터의 수신 엔진을 복원해야 합니다.
참고 미니포트 드라이버는 보류 중인 수신 표시와 연결된 수신 버퍼에 액세스하거나 변경해서는 안 됩니다.
NDIS는 NDIS가 저전력 상태로 전환하기 전에 드라이버의 MiniportPause 함수를 호출한 경우에만 전체 전원 상태로 전환한 후에 미니포트 드라이버의 MiniportRestart 함수를 호출합니다.
참고 중간 드라이버는 항상 NDIS_STATUS_SUCCESS OID_PNP_SET_POWER 쿼리로 반환해야 합니다. 중간 드라이버는 기본 미니포트 드라이버에 OID_PNP_SET_POWER 요청을 전파해서는 안 됩니다.
상태 코드 반환
미니포트 드라이버의 MiniportOidRequest 함수는 이 요청에 대해 다음 값 중 하나를 반환합니다.
용어 | Description |
---|---|
NDIS_STATUS_SUCCESS |
미니포트 드라이버가 요청을 성공적으로 완료했습니다. |
NDIS_STATUS_PENDING |
미니포트 드라이버는 요청을 비동기적으로 완료합니다. 미니포트 드라이버가 모든 처리를 완료한 후에는 NdisMOidRequestComplete 함수를 호출하고 Status 매개 변수에 대한 NDIS_STATUS_SUCCESS 전달하여 요청을 성공시켜야 합니다. |
NDIS_STATUS_NOT_ACCEPTED |
미니포트 드라이버가 다시 설정됩니다. |
요구 사항
Version |
NDIS 5.1 및 NDIS 6.0 이상에서 지원됩니다. |
헤더 |
Ntddndis.h(Ndis.h 포함) |
추가 정보
NdisMIndicateReceiveNetBufferLists