GUID_TARGET_DEVICE_QUERY_REMOVE 이벤트 처리
PnP 관리자는 디바이스의 드라이버에 IRP_MN_QUERY_REMOVE_DEVICE IRP를 보내기 전에 디바이스에서 EventCategoryTargetDeviceChange 에 등록된 모든 알림 콜백 루틴을 호출합니다. PnP 관리자는 NotificationStructure를 지정합니다. GUID_TARGET_DEVICE_QUERY_REMOVE 이벤트 입니다.
이러한 알림에 대한 응답으로 콜백 루틴은 시스템을 중단하지 않고 디바이스를 제거할 수 있는지 여부를 결정합니다.
디바이스를 제거하지 않아야 하는 경우 콜백 루틴은 STATUS_UNSUCCESSFUL 반환합니다. 이 상태 대한 응답으로 PnP 관리자는 쿼리 제거 처리를 중단하고 디바이스는 제거되지 않습니다.
디바이스를 제거할 수 있는 경우 콜백 루틴은 디바이스에서 열린 핸들을 닫는 등 디바이스 제거를 준비하기 위해 적절한 작업을 수행해야 합니다(가능한 경우). 핸들이 디바이스에서 열린 상태로 유지되면 PnP 관리자는 디바이스를 제거할 수 없으며 PnP 관리자는 쿼리 제거 처리를 중단합니다.
GUID_TARGET_DEVICE_QUERY_REMOVE 이벤트를 성공적으로 처리하는 경우 알림 콜백 루틴은 다음을 수행해야 합니다.
열려 있는 핸들을 디바이스에 닫습니다.
드라이버에 파일 개체에 대한 미해결 참조가 있는 경우 파일 개체를 역참조합니다.
향후 EventCategoryTargetDeviceChange 알림에 대해 등록된 상태로 유지됩니다. 이는 임박한 제거 작업이 취소될 수 있기 때문에 중요합니다.
디바이스에 대한 핸들을 닫으면 PnP 대상 디바이스 변경 알림에 대한 드라이버 등록이 취소되지 않습니다. PnP 관리자는 여전히 드라이버의 알림 콜백 루틴을 호출할 수 있지만 이러한 호출에서 NotificationStructure 의 파일 개체는 유효하지 않습니다.