Share via


NdisMNetPnPEvent 함수(ndis.h)

NDIS 미니포트 드라이버(및 미니포트 드라이버로 등록된 중간 드라이버)는 NdisMNetPnPEvent 함수를 호출하여 네트워크 플러그 앤 플레이 이벤트, NDIS PnP 이벤트 또는 전원 관리 이벤트를 시작하거나 지나치게 많은 드라이버에 전파합니다.

구문

NDIS_STATUS NdisMNetPnPEvent(
  [in] NDIS_HANDLE                 MiniportAdapterHandle,
       PNET_PNP_EVENT_NOTIFICATION NetPnPEventNotification
);

매개 변수

[in] MiniportAdapterHandle

MiniportInitializeEx 함수의 MiniportAdapterHandle 매개 변수에 NDIS가 제공한 NDIS 핸들입니다. 이 핸들은 이벤트의 영향을 받는 미니포트 어댑터를 식별합니다. 호출자가 중간 드라이버인 경우 가상 미니포트의 핸들입니다.

NetPnPEventNotification

에 대한 포인터입니다. 네트워크 플러그 앤 플레이 이벤트, NDIS PnP 이벤트 또는 전원 관리 이벤트를 설명하는 NET_PNP_EVENT_NOTIFICATION 구조체입니다.

중요

NetPnpEventNotificationVPortId 필드가 NDIS_DEFAULT_VPORT_ID 다른 값으로 설정된 경우 VPortId가 적용되려면 Flags 멤버를 NET_EVENT_FLAGS_VPORT_ID_VALID 설정해야 합니다.

반환 값

NdisMNetPnPEvent 는 다음을 반환할 수 있습니다.

반환 코드 설명
NDIS_STATUS_SUCCESS
지나치게 많은 드라이버가 플러그 앤 플레이 또는 전원 관리 이벤트를 성공적으로 처리했습니다.
NDIS_STATUS_RESOURCES
지나치게 많은 드라이버는 표시된 플러그 앤 플레이 또는 전원 관리 이벤트를 충족하는 데 필요한 시스템 리소스를 가져올 수 없습니다.
NDIS_STATUS_INVALID_PARAMETER
일부 입력 매개 변수가 잘못되어 NDIS가 호출에 실패했습니다.
NDIS_STATUS_NOT_SUPPORTED
NDIS 6.0 이상 프로토콜 드라이버는 이 상태 반환해서는 안 됩니다. NDIS 5. 플러그 앤 플레이 지원하지 않는 x 프로토콜 드라이버는 NetEventSetPower에 대한 응답으로 이 상태 반환하여 NDIS가 기본 어댑터에서 바인딩을 해제해야 함을 나타낼 수 있습니다.
NDIS_STATUS_INVALID_PORT
NetEventPortActivation 또는 NetEventPortDeactivation PnP 이벤트에 잘못된 NDIS 포트가 지정되어 NDIS가 요청에 실패했습니다.
NDIS_STATUS_INVALID_PORT_STATE
NDIS 포트가 잘못된 포트 상태이므로 NDIS가 요청에 실패했습니다. 포트는 NetEventPortActivation 또는 NetEventPortDeactivation PnP 이벤트에 지정됩니다.
NDIS_STATUS_FAILURE
전파된 플러그 앤 플레이 또는 전원 관리 이벤트를 처리하려는 드라이버의 시도가 실패했습니다.
 

반환 값은 전파된 이벤트가 NetEventQueryPower 또는 NetEventQueryRemoveDevice 이벤트인 경우에만 중요합니다. 다른 모든 전파 이벤트의 경우 반환 값은 항상 NDIS_STATUS_SUCCESS.

이벤트가 NetEventPortActivation이고 호출이 실패하는 경우 호출자는 수신 표시 또는 상태 표시에 연결된 포트를 사용하지 않아야 합니다.

설명

모든 미니포트 드라이버는 NdisMNetPnPEvent 를 호출하여 NetEventPortActivationNetEventPortDeactivation 이벤트를 생성할 수 있습니다. 중간 드라이버만 다른 이벤트 알림을 만들 수 있습니다.

참고 교착 상태를 방지하려면 NDIS 드라이버가 다음을 수행해야 합니다.
  • MiniportOidRequest 함수는 NdisMNetPnPEvent를 호출해서는 안 됩니다.
  • MiniportOidRequest 함수가 OID 요청에 대한 NDIS_STATUS_PENDING 반환하는 경우 NDIS 드라이버는 NdisMOidRequestComplete를 호출하여 OID 요청을 완료할 때까지 NdisMNetPnPEvent를 호출하지 않아야 합니다.
 
네트워크 플러그 앤 플레이 이벤트, NDIS PnP 이벤트 또는 전원 관리 이벤트의 알림을 지나치게 드라이버에 전파하기 위해 NDIS 중간 드라이버는 드라이버의 ProtocolNetPnPEvent 함수 컨텍스트에서 NdisMNetPnPnPEvent를 호출합니다.

전파된 이벤트가 NetEventQueryPower 또는 NetEventQueryRemoveDevice인 경우 중간 드라이버는 NdisMNetPnPEvent에서 반환되는 NDIS_STATUS 값을 검사 합니다. 반환된 상태 NDIS_STATUS_SUCCESS 경우 중간 드라이버는 이벤트를 처리한 다음 ProtocolNetPnPEvent 함수에서 NDIS_STATUS_SUCCESS 반환해야 합니다. 반환된 상태 NDIS_STATUS_SUCCESS 않으면 중간 드라이버는 추가 처리 없이 ProtocolNetPnPEvent 함수에서 보고된 상태 반환해야 합니다.

중간 드라이버가 ProtocolNetPnPEvent 함수에서 받은 NetEventSetPower를 처리하는 방법은 지정된 디바이스 전원 상태에 따라 달라집니다. 지정된 디바이스 전원 상태가 NdisDeviceStateD0이면 중간 드라이버가 이벤트를 처리한 다음 NdisMNetPnPEvent를 호출해야 합니다. 지정된 다른 디바이스 전원 상태의 경우 중간 드라이버는 먼저 NdisMNetPnPEvent 를 호출한 다음 이벤트를 처리해야 합니다.

중간 드라이버는 NetEventReconfigure 또는 NetEventBindListNULL이 아닌 ProtocolBindingContext에 표시되는 경우에만 NdisMNetPnPEvent를 호출하여 NetEventReconfigure 또는 NetEventBindList를 전파해야 합니다. NetEventReconfigure 또는 NetEventBindListNULLProtocolBindingContext에 표시되는 경우 중간 드라이버는 NdisMNetPnPEvent를 호출하여 이벤트를 전파해서는 안 됩니다.

중간 드라이버가 NetEventReconfigure 또는 NetEventBindList를 처리하는 경우 이벤트와 연결된 모든 데이터의 유효성을 검사해야 합니다.

중간 드라이버는 NdisMNetPnPEvent를 호출하여 NetEventBindsComplete, NetEventPause, NetEventRestart, NetEventPortActivation 또는 NetEventPortDeactivation 이벤트를 전파해서는 안 됩니다.

NDIS 중간 드라이버는 해당 ProtocolNetPnPEvent 함수에서 수신하는 NetEventPortActivation 또는 NetEventPortDeactivation 이벤트에 적절하게 가상 미니포트에 대한 자체 NDIS 포트 이벤트를 생성할 수 있습니다.

다른 모든 전파 이벤트의 경우 중간 드라이버의 ProtocolNetPnPEvent 함수는 NdisMNetPnPEvent에서 반환되는 상태 값을 전파해야 합니다.

요구 사항

요구 사항
지원되는 최소 클라이언트 NDIS 6.0 이상에서 지원됩니다.
대상 플랫폼 유니버설
헤더 ndis.h(Ndis.h 포함)
라이브러리 Ndis.lib
IRQL PASSIVE_LEVEL
DDI 규정 준수 규칙 Irql_Protocol_Driver_Function(ndis), NdisMNetPnPEventInOIDRequest(ndis)

추가 정보

MiniportInitializeEx

MiniportOidRequest

NET_PNP_EVENT_NOTIFICATION

ProtocolNetPnPEvent