필터 드라이버에서 시스템 Set-Power IRP 처리
모든 필터 드라이버 및 디바이스 스택에 대한 전원 정책을 소유하지 않는 함수 드라이버는 다음 단계에서 시스템 설정 전원 IRP를 다음 하위 드라이버에 전달해야 합니다.
IoAcquireRemoveLock을 호출하여 현재 IRP를 전달하여 드라이버가 전원 IRP를 처리하는 동안 PnP IRP_MN_REMOVE_DEVICE 요청을 받지 않도록 합니다.
IoAcquireRemoveLock이 오류 상태 반환하는 경우 드라이버는 IRP를 계속 처리하면 안 됩니다. 대신 Windows Vista부터 드라이버는 IoCompleteRequest를 호출하여 IRP를 완료하고 오류 상태 반환해야 합니다. Windows Server 2003, Windows XP 및 Windows 2000에서 드라이버는 먼저 PoStartNextPowerIrp를 호출하고 IoCompleteRequest를 호출하여 IRP를 완료한 다음 실패 상태 반환해야 합니다.
PoStartNextPowerIrp를 호출하여 다음 전원 IRP를 시작합니다. (Windows Server 2003, Windows XP 및 Windows 2000만 해당)
IRP 스택 위치(IoSkipCurrentIrpStackLocation 또는 IoCopyCurrentIrpStackLocationToNext)를 설정합니다. 드라이버는 IRP에서 IoCompletion 루틴을 설정할 수 있지만 그렇게 하는 것은 거의 필요하지 않습니다.
IoCallDriver(Windows 7 및 Windows Vista) 또는 PoCallDriver(Windows Server 2003, Windows XP 및 Windows 2000)를 호출하여 IRP를 다음 하위 드라이버에 전달합니다.
IoReleaseRemoveLock을 호출합니다. 그러나 드라이버가 IRP에 대한 IoCompletion 루틴을 설정한 경우 대신 IoCompletion 루틴에서 이 호출을 수행합니다.
DispatchPower 루틴에서 STATUS_PENDING 반환합니다.