다음을 통해 공유


PnP 알림 개요

PnP 관리자는 특정 디바이스 또는 일반적으로 시스템에서 특정 이벤트가 발생할 때 드라이버 및 애플리케이션에 알림을 받을 수 있는 메커니즘을 제공합니다. 드라이버는 다음 범주의 이벤트에 대한 알림을 등록할 수 있습니다.

  • EventCategoryDeviceInterfaceChange

    드라이버가 디바이스 인터페이스에서 이 범주의 이벤트에 등록하면 PnP 관리자가 드라이버에 다음 이벤트의 알림을 표시합니다.

    GUID_DEVICE_INTERFACE_ARRIVAL
    지정된 클래스의 디바이스 인터페이스가 사용하도록 설정되었음을 나타냅니다. 예를 들어 사용자가 컴퓨터에 새 디스크를 추가했고 볼륨 관리자는 새 볼륨(클래스 "볼륨"의 디바이스 인터페이스)을 사용하도록 설정했습니다.

    GUID_DEVICE_INTERFACE_REMOVAL
    지정된 클래스의 디바이스 인터페이스가 비활성화되었음을 나타냅니다.

    디바이스 인터페이스에 대한 자세한 내용은 IoRegisterDeviceInterface 및 관련 루틴을 참조하세요.

  • EventCategoryTargetDeviceChange

    드라이버가 디바이스에서 이 범주의 이벤트에 등록하면 PnP 관리자는 디바이스에서 다음 이벤트가 발생할 때 드라이버에 알린다.

    GUID_TARGET_DEVICE_QUERY_REMOVE
    PnP 관리자가 디바이스에 대한 드라이버를 제거하려고 했음을 나타냅니다. 사용자가 컴퓨터에서 지정된 디바이스를 제거하도록 요청했거나 사용자가 디바이스에 대한 업데이트 드라이버 요청을 실행한 경우를 비롯한 여러 작업으로 인해 이 이벤트가 발생할 수 있습니다. 이 알림은 디바이스의 드라이버에게 임박한 제거 작업을 승인하거나 거부할 것을 요청합니다.

    GUID_TARGET_DEVICE_REMOVE_COMPLETE
    지정된 디바이스가 컴퓨터에서 제거되었거나 사용자가 디바이스의 드라이버를 변경하고 있음을 나타냅니다.

    GUID_TARGET_DEVICE_REMOVE_CANCELLED
    지정된 디바이스에서 임박한 제거 작업이 취소되었음을 나타냅니다.

    GUID_XXX (사용자 지정 이벤트)
    지정한 디바이스에서 사용자 지정 이벤트가 발생했음을 나타냅니다.

    드라이버 작성기는 디바이스에 대한 사용자 지정 이벤트를 정의할 수 있습니다. 드라이버(또는 다른 관련 구성 요소)가 PnP 관리자에게 사용자 지정 이벤트가 발생했음을 알린 경우 PnP 관리자는 디바이스의 대상 디바이스 변경 알림에 등록된 모든 구성 요소에 알린다.

    인터페이스에 대한 "수동" 관심으로 간주될 수 있는 디바이스 인터페이스 변경에 등록하는 것과 달리 대상 디바이스 변경에 등록하는 것은 디바이스에 대한 "활성" 관심을 나타냅니다.

  • EventCategoryHardwareProfileChange

    이 범주에는 다음 이벤트가 포함됩니다.

    GUID_HWPROFILE_QUERY_CHANGE
    사용자가 컴퓨터의 하드웨어 프로필을 변경하도록 요청했음을 나타냅니다. PnP 관리자는 이 알림을 사용하여 등록된 구성 요소에 시스템 작업을 방해하지 않고 하드웨어 프로필을 변경할 수 있는지 여부를 묻습니다. 등록된 구성 요소는 일반적으로 이러한 쿼리 요청에 성공합니다.

    GUID_HWPROFILE_CHANGE_COMPLETE
    컴퓨터의 하드웨어 프로필이 변경되었음을 나타냅니다. 드라이버가 프로필별 설정을 유지 관리하는 경우 이러한 드라이버는 하드웨어 프로필 변경 후 해당 설정을 새로 고쳐야 합니다.

    GUID_HWPROFILE_CHANGE_CANCELLED
    임박한 하드웨어 프로필 변경이 취소되었음을 나타냅니다.

PnP 알림은 커널 모드 구성 요소에 대해 다음과 같이 작동합니다.

  1. 드라이버는 IoRegisterPlugPlayNotification을 호출하여 이벤트 범주에 대한 알림을 등록합니다.

    PnP 알림 콜백 루틴은 드라이버가 등록을 명시적으로 제거할 때까지 등록된 상태로 유지됩니다.

  2. PnP 관리자는 등록된 범주의 이벤트가 발생할 때 드라이버의 콜백 루틴을 호출합니다.

  3. 드라이버는 IoUnregisterPlugPlayNotification을 호출하여 콜백 등록을 제거합니다.

드라이버는 동기 이벤트를 생성하거나 닫기를 처리하는 동안 비동기 이벤트가 발생할 때까지 기다리지 않아야 합니다.

PnP 알림에 대한 자세한 내용은 다음 섹션을 참조하세요.

PnP 알림 콜백 루틴 작성 지침

PnP 디바이스 인터페이스 변경 알림 사용

PnP 대상 디바이스 변경 알림 사용

PnP 하드웨어 프로필 변경 알림 사용

PnP 사용자 지정 알림 사용