다음을 통해 공유


배출 가능 디바이스 지원

배출 가능한 장치는 도킹 스테이션에 삽입하고 도킹 스테이션에서 배출할 수 있는 장치입니다. 일반적으로 디바이스를 제거하려면 먼저 배출 가능한 디바이스의 버스 전원을 사용하지 않도록 설정해야 합니다.

디바이스를 배출할 수 있는 경우, 디바이스 버스용 버스 드라이버는 디바이스의 WDF_DEVICE_PNP_CAPABILITIES 구조에서 EjectSupported 멤버를 설정해야 합니다.

버스 드라이버가 열거된 자식 디바이스 중 하나가 곧 배출될 예정임을 확인하면, WdfPdoRequestEject 또는 WdfChildListRequestChildEject를 호출합니다. 예를 들어 버스 드라이버는 사용자가 배출 단추를 눌렀다는 것을 감지할 수 있습니다.

드라이버가 WdfChildListRequestChildEject또는 WdfPdoRequestEject호출하는 경우 PnP 관리자는 순서대로 제거 시나리오를 사용하여 디바이스의 드라이버에 디바이스가 제거되고 있음을 알릴 수 있습니다. 프레임워크가 디바이스 버스에 대한 버스 드라이버에서 EvtDeviceReleaseHardware 콜백 함수를 호출한 후 프레임워크는 버스 드라이버의 EvtDeviceEject 콜백 함수를 호출하여 디바이스를 물리적으로 배출하는 데 필요한 모든 작업을 수행합니다.

디바이스를 꺼내면 추가 디바이스도 배출되는 경우 버스 드라이버는 배출 관계 목록을 유지할 수 있습니다. 사용자가 디바이스를 제거하면 PnP 관리자는 목록에 있는 디바이스의 드라이버에 디바이스도 제거되고 있음을 알릴 수 있습니다. 배출 관계 목록을 유지하기 위해 버스 드라이버는 WdfPdoAddEjectionRelationsPhysicalDevice, WdfPdoRemoveEjectionRelationsPhysicalDeviceWdfPdoClearEjectionRelationsDevices 메서드를 사용할 수 있습니다.

디바이스를 도킹 스테이션에 잠글 수 있는 경우 버스 드라이버는 디바이스의 WDF_DEVICE_PNP_CAPABILITIES 구조에서 LockSupported 멤버를 설정해야 합니다. 또한 버스 드라이버는 EvtDeviceSetLock 콜백 함수를 제공해야 합니다. 이 함수는 디바이스를 잠가서 배출을 방지하거나 디바이스 잠금을 해제하여 배출을 허용합니다.