사용자가 디바이스를 분리합니다(UMDF 1)
경고
UMDF 2는 UMDF의 최신 버전이며 UMDF 1을 대체합니다. 모든 새 UMDF 드라이버는 UMDF 2를 사용하여 작성해야 합니다. UMDF 1에 새 기능이 추가되지 않으며 최신 버전의 Windows 10 UMDF 1에 대한 지원이 제한됩니다. 유니버설 Windows 드라이버는 UMDF 2를 사용해야 합니다.
보관된 UMDF 1 샘플은 Windows 11 버전 22H2 - 2022년 5월 드라이버 샘플 업데이트에서 찾을 수 있습니다.
자세한 내용은 UMDF를 사용하여 시작 참조하세요.
시스템이 실행되는 동안 사용자는 다음 두 가지 방법 중 하나로 디바이스를 제거할 수 있습니다. 즉, 순서대로 제거하면 디바이스가 제거될 예정임을 시스템에 알릴 수 있습니다(예: 하드웨어 분리 또는 분리 프로그램 사용). 또는 깜짝 제거로 인해 사용자가 시스템에 알리지 않고 디바이스를 분리합니다. 버스가 USB와 같은 깜짝 제거를 지원하는 경우 디바이스의 드라이버는 디바이스의 갑작스러운 실종을 처리할 수 있어야 합니다.
순서대로 제거
사용자는 시스템의 분리 또는 하드웨어 꺼내기 프로그램을 사용하거나, 장치 관리자 사용하여 디바이스를 사용하지 않도록 설정하거나, 꺼내기 가능한 디바이스의 꺼내기 단추를 눌러 제거를 요청합니다. 프레임워크를 사용하면 드라이버가 IPnpCallback::OnQueryRemove 콜백 함수를 제공하고 콜백 함수가 제거를 거부하지 않는 한 디바이스를 제거하거나 사용하지 않도록 설정할 수 있습니다.
다음 그림에서는 전원 다운 및 제거 시 UMDF 콜백 시퀀스를 보여 줍니다. 시퀀스는 D0(작동 전원 상태)에 있는 디바이스를 사용하여 그림 맨 위에서 시작됩니다.
서프라이즈 제거
이 시나리오에서는 사용자가 예기치 않게 디바이스를 분리합니다. 서프라이즈 제거 시퀀스에서 UMDF는 IPnpCallback::OnSurpriseRemoval 콜백을 호출하여 드라이버에 디바이스가 예기치 않게 제거되었음을 알립니다. 이 콜백은 제거 시퀀스의 다른 콜백과 함께 특정 순서로 발생하도록 보장되지 않습니다.
일반적으로 드라이버는 제거 경로의 하드웨어에 액세스하지 않아야 합니다. 하드웨어에 액세스하려는 시도가 무기한 대기하는 경우 리플렉터 시간이 초과됩니다. 다음 그림은 UMDF 드라이버에 대한 서프라이즈 제거 시퀀스를 보여줍니다.