다음을 통해 공유


버스 드라이버에 대한 Power-Down 및 제거 시퀀스

다음 그림에서는 버스에 연결된 디바이스의 전원을 빼고 제거할 때 프레임워크가 KMDF 버스 드라이버의 이벤트 콜백 함수를 호출하는 순서를 보여 줍니다. 시퀀스는 작업 전원 상태(D0)에 있는 작동 디바이스를 사용하여 그림 맨 위에서 시작합니다.

작동 전원 상태(D0)의 작동 디바이스부터 시작하여 KMDF 버스 드라이버의 전원 다운 및 제거 시퀀스를 보여 주는 순서도입니다.

프레임워크는 디바이스가 시스템에서 물리적으로 제거될 때까지 PDO를 삭제하지 않습니다. 예를 들어 사용자가 장치 관리자 디바이스를 사용하지 않도록 설정하거나 하드웨어 안전 제거 유틸리티에서 중지하지만 디바이스를 물리적으로 제거하지 않는 경우 프레임워크는 PDO를 유지합니다. 디바이스가 나중에 다시 사용하도록 설정된 경우 프레임워크는 동일한 PDO를 사용하고 물리적 디바이스 개체에 대한 Power-Up 시퀀스에 표시된 것처럼 EvtDevicePrepareHardware 콜백을 호출하여 시작 시퀀스를 시작합니다.

참고: 일반적으로 프레임워크는 드라이버가 열거하는 모든 자식 디바이스에 대해 EvtDeviceReleaseHardware 함수를 호출한 후 버스 드라이버의 EvtDeviceReleaseHardware 콜백 함수를 호출합니다. 부모가 디바이스 전원 켜기 또는 전원 다운 오류가 발생하는 경우 프레임워크는 모든 자식 디바이스에 대해 EvtDeviceReleaseHardware 함수를 호출하기 전에 드라이버의 EvtDeviceReleaseHardware 를 호출할 수 있습니다. 모든 자식 디바이스가 제거된 후에만 프레임워크가 버스 드라이버의 EvtDeviceReleaseHardware 콜백을 호출하도록 WdfDeviceInitSetReleaseHardwareOrderOnFailure를 호출하는 것이 좋습니다.