다음을 통해 공유


함수 드라이버에서 PnP 및 전원 관리 지원

함수 드라이버는 디바이스의 작업을 제어하므로 디바이스 하드웨어에 액세스합니다. 이러한 드라이버는 PnP 및 전원 관리 작업을 지원해야 하며 일반적으로 디바이스 개체를 만들 때 여러 이벤트 콜백 함수를 등록해야 합니다.

일반적으로 함수 드라이버의 EvtDriverDeviceAdd 이벤트 콜백 함수는 WdfDeviceInitSetPnpPowerEventCallbacks 를 호출하여 다음 콜백 함수를 등록합니다.

  • EvtDevicePrepareHardware - 디바이스의 시스템 할당 리소스를 드라이버에 제공합니다. 드라이버는 디바이스의 버스 상대 메모리를 프로세서의 가상 주소 공간에 매핑하는 등의 작업을 수행하여 드라이버가 하드웨어에 액세스할 수 있도록 할 수 있습니다.

  • EvtDeviceD0Entry는 드라이버의 디바이스가 작동(D0) 상태가 될 때마다 필요한 펌웨어 로드와 같은 작업을 수행합니다.

  • EvtDeviceD0Exit - 드라이버의 디바이스가 작동 중(D0) 상태를 벗어나 저전력 상태로 들어갈 때마다 필요한 작업을 수행합니다.

  • EvtDeviceReleaseHardware - EvtDevicePrepareHardware 가 할당한 시스템 리소스를 해제합니다.

모든 프레임워크 정의 콜백 함수와 마찬가지로 이전 목록의 콜백 함수는 선택 사항입니다. 드라이버에 필요한 경우에만 제공해야 합니다.

함수 드라이버는 WdfDeviceSetPnpCapabilitiesWdfDeviceSetPowerCapabilities 를 호출하여 디바이스의 PnP 및 전원 관리 기능을 운영 체제에 보고할 수 있습니다.

일반적으로 대부분의 I/O 요청에 대해 프레임워크의 전원 관리형 I /O 큐를 사용합니다. I/O 큐가 전원 관리형인 경우 프레임워크는 디바이스가 작동 중(D0) 상태인 경우에만 드라이버에 요청을 전달합니다. 전원 관리형 I/O 큐에 대한 자세한 내용은 I/O 큐에 대한 전원 관리를 참조하세요.

일반적으로 디바이스의 함수 드라이버는 드라이버 스택의 전원 정책 소유자 입니다. 전원 정책 소유자는 디바이스에 대한 적절한 디바이스 전원 상태를 결정하고 디바이스의 전원 상태가 변경되어야 할 때마다 디바이스의 드라이버 스택에 요청을 보냅니다. 프레임워크 기반 드라이버의 경우 프레임워크는 이 책임을 처리하므로 디바이스의 전원 상태 변경을 요청하기 위해 드라이버에 코드를 제공할 필요가 없습니다.

전원 정책 소유자는 두 가지 추가 책임이 있습니다. 즉, 유휴 상태일 때 디바이스의 저전력 상태를 입력하는 기능을 제어하고 시스템이 S0(작동 중) 상태로 유지되고, 저전력 상태에서 외부 이벤트를 감지할 때 절전 모드 해제 신호를 생성하는 디바이스의 기능을 제어합니다. 디바이스에 유휴 또는 절전 모드 해제 기능이 있는 경우 함수 드라이버는 추가 콜백 함수를 제공할 수 있습니다. 전원 정책 소유자의 책임에 대한 자세한 내용은 전원 정책 소유권을 참조하세요.