Поделиться через


Функция PoSetSystemWake (wdm.h)

Подпрограмма PoSetSystemWake помечает указанную IRP как процедуру, которая способствовала пробуждению системы из спящего состояния.

Синтаксис

void PoSetSystemWake(
  [in, out] PIRP Irp
);

Параметры

[in, out] Irp

Указатель на IRP ожидания или пробуждения.

Возвращаемое значение

None

Remarks

Драйверы вызывают PoSetSystemWake , чтобы пометить IRP_MN_WAIT_WAKE IRP как способ пробуждения системы из спящего режима. По умолчанию irp ожидания и пробуждения считаются irp для пробуждения устройства. Устройство терминала в цепочке ожидания и пробуждения отвечает за определение того, разбудило ли оно систему, и вызвать PoSetSystemWake для IRP ожидания или пробуждения терминала. Когда драйвер вызывает PoSetSystemWake в IRP, он помечается как внес свой вклад в пробуждение системы из спящего режима. Только один водитель в стеке должен вызывать эту подпрограмму, и обычно это должен быть водитель автобуса в стеке драйверов.

Все остальные драйверы в цепочке ожидания и пробуждения могут вызывать PoGetSystemWake для собственных IRP ожидания и пробуждения по завершении, чтобы определить, следует ли им вызывать PoSetSystemWake для любых дочерних irp ожидания и пробуждения, которые они собираются завершить. Это гарантирует, что информация о пробуждении системы будет правильно выполняться в цепочке ожидания и пробуждения.

После завершения IRP ожидания или пробуждения диспетчер питания проверяет, помечена ли IRP как IRP пробуждения системы. Если IRP помечена как IRP пробуждения системы, диспетчер питания добавляет IRP во внутренний список устройств, которые разбудили систему. Однако диспетчер питания отслеживает только самые конкретные устройства, которые работают с системой. Например, если устройство А добавляется в качестве устройства, которое разбудило систему, а затем добавляется устройство B ( дочерний элемент устройства A), диспетчер питания сохраняет в списке только устройство B, так как устройство B является наиболее конкретным. Если диспетчер питания не может определить наиболее конкретное устройство, которое разбудило систему, диспетчер питания может отслеживать несколько устройств, которые сообщили, что он разбудил систему.

Диспетчер питания регистрирует событие трассировки событий Windows (ETW), которое можно просмотреть в глобальном системном канале, включающее сведения о том, какие устройства разбудили систему.

Требования

Требование Значение
Минимальная версия клиента Доступно начиная с Windows Vista.
Целевая платформа Универсальное
Верхняя часть wdm.h (включая Wdm.h, Ntddk.h, Ntifs.h)
Библиотека NtosKrnl.lib
DLL NtosKrnl.exe
IRQL <= DISPATCH_LEVEL

См. также раздел

PoGetSystemWake