Функция PoStartNextPowerIrp (wdm.h)
Подпрограмма PoStartNextPowerIrp сообщает диспетчеру питания , что драйвер готов к обработке следующего IRP питания. (Только Windows Server 2003, Windows XP и Windows 2000.)
Синтаксис
void PoStartNextPowerIrp(
[in, out] PIRP Irp
);
Параметры
[in, out] Irp
Указатель на IRP, в котором IRP_MJ_POWER код основной функции.
Возвращаемое значение
None
Remarks
Начиная с Windows Vista драйвер не требуется вызывать PoStartNextPowerIrp , а вызов этой процедуры не выполняет операцию управления питанием. Однако в Windows Server 2003, Windows XP и Windows 2000 poStartNextPowerIrp должен вызываться каждым драйвером в стеке устройств после того, как драйвер завершит работу с предыдущим IRP питания (если таковой имеется) и готов к обработке следующего IRP питания. Каждый драйвер должен вызывать его один раз для каждого IRP_MN_QUERY_POWER или IRP_MN_SET_POWER запроса.
Хотя irP питания выполняются только один раз, как правило, драйвером шины для устройства, каждый драйвер в стеке устройств должен вызывать PoStartNextPowerIrp , когда IRP перемещается вниз или выполняет резервное копирование стека. Даже если драйвер не выполняет IRP, драйвер должен, тем не менее, вызвать PoStartNextPowerIrp , чтобы сообщить диспетчеру питания о том, что он готов к обработке другого IRP питания.
Драйвер должен вызвать PoStartNextPowerIrp , пока текущее расположение стека IRP указывает на текущий драйвер. Поэтому эта подпрограмма должна вызываться перед IoCompleteRequest, IoSkipCurrentIrpStackLocation и PoCallDriver. Как правило, драйвер должен вызывать PoStartNextPowerIrp из процедуры IoCompletion , связанной с IRP, или из процедуры обратного вызова, переданной в PoRequestPowerIrp.
Водители автобусов должны вызвать PoStartNextPowerIrp перед завершением каждого IRP.
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Доступно начиная с Windows 2000. |
Целевая платформа | Универсальное |
Верхняя часть | wdm.h (включая Wdm.h, Ntddk.h, Ntifs.h) |
Библиотека | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | <=DISPATCH_LEVEL |