IoUnregisterPlugPlayNotificationEx 함수(wdm.h)

IoUnregisterPlugPlayNotificationEx 루틴은 플러그 앤 플레이(PnP) 이벤트 알림에 대한 드라이버의 콜백 루틴 등록을 취소합니다.

구문

NTSTATUS IoUnregisterPlugPlayNotificationEx(
  [in] PVOID NotificationEntry
);

매개 변수

[in] NotificationEntry

취소할 등록을 나타내는 불투명 값에 대한 포인터입니다. 호출자는 이전에 IoRegisterPlugPlayNotification 루틴을 호출하여 이 값을 얻었습니다.

반환 값

NotificationEntry 매개 변수가 유효한 경우 IoUnregisterPlugPlayNotificationEx는 STATUS_SUCCESS 반환합니다.

설명

커널 모드 드라이버는 이 루틴을 호출하여 PnP 알림을 받을 등록을 제거합니다. 즉, IoUnregisterPlugPlayNotificationEx 호출은 하나의 PnP 이벤트 범주에 대한 드라이버 콜백 루틴의 등록을 취소합니다. 드라이버는 이전에 IoRegisterPlugPlayNotification 루틴을 호출하여 이 등록을 얻었습니다.

IoUnregisterPlugPlayNotificationEx 호출이 반환되면 지정된 등록이 취소되고 더 이상 콜백이 발생할 수 없습니다.

IoUnregisterPlugPlayNotification 루틴은 IoUnregisterPlugPlayNotification 호출이 반환된 후에 더 이상 콜백이 발생하지 않도록 보장할 수 없다는 점을 제외하고 IoUnregisterPlugPlayNotification 루틴과 유사합니다.

종종 드라이버는 알림 콜백 루틴에서 IoUnregisterPlugPlayNotificationEx 를 호출합니다. 대부분의 경우 드라이버는 이러한 방식으로 알림 콜백 루틴의 등록을 안전하게 삭제할 수 있습니다. 그러나 알림 콜백 루틴이 다음이 모두 true인 경우 IoUnregisterPlugPlayNotificationEx 를 호출하여 자체 등록을 취소하는 것은 안전하지 않습니다.

  • 드라이버는 알림 콜백 루틴을 등록하는 IoRegisterPlugPlayNotification 호출에 제공된 EventCategoryFlags 매개 변수 값의 PNPNOTIFY_DEVICE_INTERFACE_INCLUDE_EXISTING_INTERFACES 플래그를 설정합니다.
  • 알림 콜백 루틴을 등록하는 IoRegisterPlugPlayNotification 호출이 아직 반환되지 않았습니다.
콜백 루틴은 콜백 루틴이 실행되는 스레드의 실행을 차단할 수 있는 루틴을 호출해서는 안됩니다. 예를 들어 잘못 디자인된 콜백 루틴이 작업 항목 큐에 IoUnregisterPlugPlayNotificationEx 를 호출하는 작업 항목을 배치한 다음 작업자 스레드가 작업 항목을 완료할 때까지 기다리는 경우 운영 체제의 교착 상태가 발생합니다.

드라이버는 먼저 알림 콜백 루틴의 등록을 취소한 다음 루틴과 연결된 컨텍스트 버퍼를 해제해야 합니다.

각 활성 등록에는 드라이버의 로드된 이미지를 나타내는 드라이버 개체에 대한 계산된 참조가 있으므로 모든 PnP 알림 등록을 제거할 때까지 드라이버를 언로드할 수 없습니다.

자세한 내용은 PnP 알림 사용을 참조하세요.

요구 사항

   
지원되는 최소 클라이언트 Windows 7부터 사용할 수 있습니다.
대상 플랫폼 유니버설
헤더 wdm.h(Wdm.h, Ntddk.h, Ntifs.h 포함)
라이브러리 NtosKrnl.lib
DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL
DDI 규정 준수 규칙 HwStorPortProhibitedDDIs(storport), PowerIrpDDis(wdm)

참고 항목

IoRegisterPlugPlayNotification

IoUnregisterPlugPlayNotification