다음을 통해 공유


Surprise-Removal 시퀀스

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

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

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

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