다음을 통해 공유


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 의 파일 개체는 유효하지 않습니다.