다음을 통해 공유


Surprise-Removal 시퀀스

사용자가 디바이스 관리자 또는 안전한 하드웨어 제거 유틸리티를 사용하지 않고 디바이스를 단순히 플러깅 해제하여 경고 없이 디바이스를 제거하는 경우 디바이스는 "깜짝 제거"로 간주됩니다. 이 경우 프레임워크는 약간 다른 제거 시퀀스를 따릅니다. 또한 디바이스가 여전히 물리적으로 존재하는 경우에도 다른 드라이버가 디바이스에서 IoInvalidateDeviceState 를 호출하는 경우에도 서프라이즈 제거 시퀀스를 따릅니다. 서프라이즈 제거 시퀀스에서 프레임워크는 제거 시퀀스에서 다른 콜백을 호출하기 전에 EvtDeviceSurpriseRemoval 콜백을 호출합니다. 시퀀스가 완료되면 프레임워크는 디바이스 개체를 삭제합니다. 모든 이동식 디바이스에 대한 드라이버는 종료 및 시작 경로 모두의 콜백에서 오류, 특히 하드웨어 제거로 인한 오류를 처리할 수 있는지 확인해야 합니다. 하드웨어에 액세스하려는 모든 시도는 무기한 기다리게 되지 않아야 하며, 시간 제한이나 감시 타이머가 적용되어야 합니다.

다음 다이어그램에서는 깜짝 제거와 관련된 콜백을 보여 줍니다.

디바이스 드라이버의 서프라이즈 제거 시퀀스를 보여 주는 순서도입니다.

디바이스가 제거될 때 작동 상태가 아닌 경우 프레임워크는 EvtDeviceSurpriseRemoval 직후에 EvtDeviceReleaseHardware 이벤트 콜백을 호출합니다. 디바이스가 작업 상태에서 종료되었을 때 이미 수행된 중간 단계를 생략합니다.