디바이스 인터페이스 변경 이벤트 처리
드라이버 또는 사용자 모드 구성 요소가 디바이스 인터페이스 인스턴스를 사용하거나 사용하지 않도록 설정하면 PnP 관리자는 디바이스 인터페이스 클래스에서 EventCategoryDeviceInterfaceChange 이벤트에 등록된 모든 알림 콜백 루틴을 호출합니다. 알림의 이유를 나타내기 위해 PnP 관리자는 콜백 루틴의 NotificationStructure 매개 변수의 이벤트 멤버를 GUID_DEVICE_INTERFACE_ARRIVAL 또는 GUID_DEVICE_INTERFACE_REMOVAL 설정합니다.
GUID_DEVICE_INTERFACE_ARRIVAL 이벤트를 처리할 때 알림 콜백 루틴은 다음을 수행해야 합니다.
새 인터페이스를 처리하기 위해 드라이버 정의 작업을 수행합니다.
일반적으로 알림 콜백 루틴은 콜백 컨텍스트에서 디바이스를 직접 엽니다. 그러나 디바이스를 열면 후속 PnP 이벤트(예: 자식 디바이스 열거)가 발생할 수 있는 경우 콜백 루틴은 대신 작업자 루틴을 큐에 대기하여 디바이스를 열어야 합니다. 그렇지 않으면 교착 상태가 발생할 수 있습니다.
콜백 루틴은 새 인터페이스의 가용성에 대한 응답으로 자체 인터페이스를 사용하도록 설정할 수 있습니다.
GUID_DEVICE_INTERFACE_REMOVAL 이벤트를 처리할 때 알림 콜백 루틴은 다음을 수행해야 합니다.
- 인터페이스를 사용할 때 수행한 작업을 실행 취소합니다.
디바이스가 제거되면 드라이버는 GUID_DEVICE_INTERFACE_ARRIVAL 이벤트 콜백 중에 연 파일 핸들을 닫아야 합니다. 순서대로 디바이스를 제거하려면 드라이버가 GUID_TARGET_DEVICE_QUERY_REMOVE 이벤트 콜백 중에 파일 핸들을 닫아야 합니다. 깜짝 제거를 위해 드라이버는 GUID_TARGET_DEVICE_REMOVE_COMPLETE 이벤트 콜백 중에 파일 핸들을 닫아야 합니다. GUID_DEVICE_INTERFACE_REMOVAL 이벤트 콜백 중에 파일 핸들을 닫지 마세요.