PROTOCOL_NET_PNP_EVENT 콜백 함수(ndis.h)
NDIS는 ProtocolNetPnPEvent 함수를 호출하여 프로토콜 드라이버에 대한 네트워크 플러그 앤 플레이 이벤트, NDIS PnP 이벤트 또는 전원 관리 이벤트를 나타냅니다.
구문
PROTOCOL_NET_PNP_EVENT ProtocolNetPnpEvent;
NDIS_STATUS ProtocolNetPnpEvent(
[in] NDIS_HANDLE ProtocolBindingContext,
[in] PNET_PNP_EVENT_NOTIFICATION NetPnPEventNotification
)
{...}
매개 변수
[in] ProtocolBindingContext
이 드라이버가 바인딩당 런타임 상태 정보를 유지하는 프로토콜 드라이버 할당 컨텍스트 영역에 대한 핸들입니다. 프로토콜 드라이버는 NdisOpenAdapterEx 함수를 호출할 때 이 핸들을 제공했습니다. NULLProtocolBindingContext로 표시된 NetEventXxx 이벤트는 모든 바인딩에 적용됩니다. NetEventBindList 및 NetEventBindsComplete는 항상 NULLProtocolBindingContext로 표시됩니다. NetEventReconfigure는 지정된 ProtocolBindingContext 또는 NULLProtocolBindingContext를 사용하여 표시할 수 있습니다.
[in] NetPnPEventNotification
NDIS가 프로토콜 드라이버에 나타내는 플러그 앤 플레이 이벤트 또는 전원 관리 이벤트를 설명하는 NET_PNP_EVENT_NOTIFICATION 구조체에 대한 포인터입니다.
반환 값
ProtocolNetPnPEvent 는 다음 중 어느 것을 반환할 수 있습니다.
| 반환 코드 | 설명 |
|---|---|
|
프로토콜 드라이버가 표시된 네트워크 플러그 앤 플레이 이벤트, NDIS PnP 이벤트 또는 전원 관리 이벤트를 성공적으로 처리했습니다. 이 상태 코드의 의미는 NetPnPEvent에서 버퍼링된 NET_PNP_EVENT_NOTIFICATION 구조의 NetEvent 코드에 따라 달라집니다.
|
|
프로토콜 드라이버는 NdisCompleteNetPnPEvent 함수를 호출하여 표시된 이벤트에 대한 응답을 비동기적으로 반환합니다. |
|
프로토콜 드라이버가 표시된 플러그 앤 플레이 또는 전원 관리 이벤트를 충족하는 데 필요한 시스템 리소스를 가져올 수 없습니다. |
|
NDIS 6.0 이상 프로토콜 드라이버는 이 상태를 반환해서는 안 됩니다. NDIS 5. 플러그 앤 플레이를 지원하지 않는 x 프로토콜 드라이버는 NetEventSetPower 에 대한 응답으로 이 상태를 반환하여 NDIS가 기본 어댑터에서 바인딩을 해제해야 함을 나타낼 수 있습니다. |
|
프로토콜 드라이버가 이전 목록에 명시된 것 이외의 이유로 표시된 이벤트를 실패했습니다. |
프로토콜 드라이버는 NetEventQueryRemoveDevice 및 NetEventPortActivation 이벤트에 실패할 수 있습니다.
프로토콜 드라이버가 NetEventPortActivation 이벤트에 실패하는 경우 후속 작업에서 연결된 포트를 사용하지 않아야 합니다.
프로토콜 드라이버는 항상 NDIS_STATUS_SUCCESS 반환하여 NetEventRestart, NetEventIMReEnableDevice, NetEventCancelRemoveDevice, NetEventReconfigure, NetEventBindsComplete, NetEventPause, NetEventPortDeactivation 및 NetEventPnPCapabilities 이벤트를 성공시켜야 합니다.
설명
ProtocolNetPnPEvent 함수는 플러그 앤 플레이 및 전원 관리를 지원하기 위해 프로토콜 드라이버에 필요합니다. NDIS는 ProtocolNetPnPEvent 를 호출하여 프로토콜 드라이버에 네트워크 플러그 앤 플레이 이벤트, NDIS PnP 이벤트 또는 전원 관리 이벤트가 발생했음을 알립니다.
ProtocolNetPnPEvent에 전달되는 NET_PNP_EVENT_NOTIFICATION 구조체는 이벤트를 설명합니다. ProtocolNetPnPEvent 는 NET_PNP_EVENT_NOTIFICATION 구조의 두 가지 기본 정보를 해석합니다.
- 플러그 앤 플레이 또는 전원 관리 이벤트의 유형을 식별하는 NetEvent 멤버의 코드입니다.
- 이벤트별 정보입니다. 예를 들어 NetEventSetPower 이벤트를 사용하면 버퍼 멤버에 디바이스가 전환되는 디바이스 전원 상태가 포함됩니다.
프로토콜 드라이버는 항상 NetEventQueryPower 이벤트에 성공해야 합니다. 활성 연결을 설정한 후 프로토콜 드라이버는 PoRegisterSystemState 함수를 호출하여 지속적으로 사용 중인 상태를 등록할 수 있습니다. 상태 등록이 적용되는 한 전원 관리자는 시스템을 절전 모드로 설정하지 않습니다. 연결이 비활성 상태가 되면 프로토콜 드라이버는 PoUnregisterSystemState 함수를 호출하여 상태 등록을 취소합니다. 프로토콜 드라이버는 NetEventQueryPower 이벤트에 실패하여 시스템이 절전 상태로 전환되는 것을 방지해서는 안 됩니다. NetEventQueryPower 이벤트 뒤에는 항상 NetEventSetPower 이벤트가 발생합니다. 기본 디바이스의 현재 전원 상태를 지정하는 NetEventSetPower 이벤트는 NetEventQueryPower 이벤트를 취소합니다.
프로토콜 드라이버가 디바이스를 해제할 수 없는 경우(예: 디바이스가 사용 중이므로) NDIS_STATUS_FAILURE 반환하여 NetEventQueryRemoveDevice 이벤트에 실패해야 합니다.
프로토콜 드라이버는 항상 NDIS_STATUS_SUCCESS 반환하여 NetEventCancelRemoveDevice, NetEventReconfigure, NetEventBindList, NetEventBindsComplete, NetEventPnPCapabilities, NetEventPause 또는 NetEventPortDeactivation을 성공시켜야 합니다.
NetEventReconfigure 또는 NetEventBindList를 처리할 때 프로토콜 드라이버는 이벤트와 연결된 데이터의 유효성을 검사해야 합니다. 이러한 데이터에 대한 자세한 내용은 NET_PNP_EVENT_NOTIFICATION 참조하세요.
NDIS는 IRQL = PASSIVE_LEVEL ProtocolNetPnPEvent 를 호출합니다.
예제
ProtocolNetPnPEvent 함수를 정의하려면 먼저 정의하는 함수의 형식을 식별하는 함수 선언을 제공해야 합니다. Windows 드라이버에 대한 함수 형식 집합을 제공합니다. 함수 형식을 사용하여 함수를 선언하면 드라이버, SDV(정적 드라이버 검증 도구) 및 기타 확인 도구에 대한 Code Analysis 오류를 찾는 데 도움이 되며, Windows 운영 체제용 드라이버를 작성하기 위한 요구 사항입니다.예를 들어 " MyNetPnPEvent"라는 ProtocolNetPnPEvent 함수를 정의하려면 다음 코드 예제와 같이 PROTOCOL_NET_PNP_EVENT 형식을 사용합니다.
PROTOCOL_NET_PNP_EVENT MyNetPnPEvent;
그런 다음 다음과 같이 함수를 구현합니다.
_Use_decl_annotations_
NDIS_STATUS
MyNetPnPEvent(
NDIS_HANDLE ProtocolBindingContext,
PNET_PNP_EVENT_NOTIFICATION NetPnPEvent
)
{...}
PROTOCOL_NET_PNP_EVENT 함수 형식은 Ndis.h 헤더 파일에 정의됩니다. 코드 분석 도구를 실행할 때 오류를 보다 정확하게 식별하려면 함수 정의에 Use_decl_annotations 주석을 추가해야 합니다. Use_decl_annotations 주석은 헤더 파일의 PROTOCOL_NET_PNP_EVENT 함수 형식에 적용되는 주석이 사용되도록 합니다. 함수 선언에 대한 요구 사항에 대한 자세한 내용은 NDIS 드라이버에 함수 역할 형식을 사용하여 함수 선언을 참조하세요.
Use_decl_annotations 대한 자세한 내용은 함수 동작 주석 지정을 참조하세요.
요구 사항
| 지원되는 최소 클라이언트 | NDIS 6.0 이상에서 지원됩니다. |
| 대상 플랫폼 | Windows |
| 헤더 | ndis.h(Ndis.h 포함) |
| IRQL | PASSIVE_LEVEL |
참고 항목
피드백
다음에 대한 사용자 의견 제출 및 보기