PoFxNotifySurprisePowerOn 함수(wdm.h)
PoFxNotifySurprisePowerOn 루틴은 디바이스가 다른 디바이스에 전원을 공급하는 부작용으로 켜져 있음을 PoFx(전원 관리 프레임워크)에 알릴 수 있습니다.
구문
void PoFxNotifySurprisePowerOn(
[in] PDEVICE_OBJECT Pdo
);
매개 변수
[in] Pdo
PDO( 물리적 디바이스 개체 )에 대한 포인터입니다. 이 매개 변수는 부작용으로 켜진 물리적 디바이스를 나타내는 DEVICE_OBJECT 구조를 가리킵니다. 호출자는 항상 PDO를 열거한 버스 드라이버입니다.
반환 값
없음
설명
디바이스 드라이버는 이 루틴을 호출해서는 안 됩니다. 이 루틴은 버스 드라이버에서만 호출해야 합니다.
버스 드라이버는 이 루틴을 호출하여 현재 사용되지 않는 디바이스가 두 번째 디바이스와 동시에 부수적으로 켜져 있음을 PoFx에 알릴 수 있습니다. 예를 들어 첫 번째 디바이스는 두 번째 디바이스와 전원 레일을 공유할 수 있습니다. 따라서 전원을 공급하지 않고는 두 번째 디바이스에 전원을 공급할 수 없으며, 부작용으로 첫 번째 디바이스에 전원을 공급할 수 없습니다. 첫 번째 디바이스가 사용되지 않으므로 이 디바이스는 가능한 한 적은 전원을 사용하도록 구성해야 합니다.
D0 전원 상태로의 전환을 요청하기 위해 디바이스 드라이버는 디바이스 스택 아래로 IRP_MN_SET_POWER 요청을 보냅니다. 이 스택의 PDO를 통해 이 디바이스의 부모인 버스 드라이버는 요청을 수신하고 디바이스에 전원을 공급하여 응답합니다. 그러나 버스 드라이버가 사용하지 않는 두 번째 디바이스를 켜지 않고도 이 디바이스를 켤 수 없는 경우 버스 드라이버는 PoFxNotifySurprisePowerOn 을 호출하여 사용하지 않는 디바이스에서 사용하는 전원을 줄일 수 있습니다.
PoFxNotifySurprisePowerOn에 입력할 때 Pdo 매개 변수로 표시되는 디바이스는 초기화되지 않은 D0 전원 상태에 있습니다. 이 상태에서는 디바이스의 모든 구성 요소가 일반적으로 켜져 있습니다. PoFxNotifySurprisePowerOn 호출에 대한 응답으로 PoFx는 초기화된 D0 상태에서 디바이스를 구성합니다. 이 구성 중에 PoFx는 가능한 한 많은 구성 요소를 저전력 Fx 전원 상태로 전환합니다. 가능한 경우 PoFx는 디바이스를 "핫 D3" 상태로 구성합니다. 이 상태는 실제로 디바이스의 모든 개별 구성 요소가 꺼져 있는 D0 상태입니다.
PoFxNotifySurprisePowerOn 은 디바이스가 이전에 꺼졌을 때 PoFx에 등록된 디바이스만 구성할 수 있습니다. 그러나 버스 드라이버가 디바이스가 등록되지 않았다는 것을 알지 못하는 한, 버스 드라이버는 디바이스가 부작용으로 켜져 있을 때 PoFxNotifySurprisePowerOn 을 호출해야 합니다.
디바이스가 켜져 있을 때 버스 드라이버가 이 루틴을 호출하지 못하면 디바이스 하드웨어가 무기한으로 완전히 켜져 있을 수 있으며, PoFx는 디바이스가 D3(완전히 꺼진) 전원 상태로 유지된다고 가정합니다.
PoFxNotifySurprisePowerOn은 디바이스가 부수적으로 켜져 있는 경우에만 다른 디바이스를 켜는 부작용으로 호출합니다. 버스 드라이버가 DevicePowerRequiredCallback 콜백 또는 D0 전환에 대한 IRP_MN_SET_POWER 요청에 대한 응답으로 디바이스에 전원을 복원하는 경우 대신 PoFxReportDevicePoweredOn 루틴을 호출하여 전원이 디바이스로 복원될 때 PoFx에 알릴 수 있습니다.
요구 사항
요구 사항 | 값 |
---|---|
지원되는 최소 클라이언트 | Windows 8 시작해서 사용할 수 있습니다. |
대상 플랫폼 | 유니버설 |
헤더 | wdm.h |
라이브러리 | Ntoskrnl.lib |
DLL | Ntoskrnl.exe |
IRQL | <= DISPATCH_LEVEL |