Função KePulseEvent (ntddk.h)
A rotina KePulseEvent define atomicamente um objeto de evento como um estado sinalizado, tenta satisfazer o maior número possível de esperas e redefine o objeto de evento para um estado não sinalizado.
Sintaxe
LONG KePulseEvent(
[in, out] PRKEVENT Event,
[in] KPRIORITY Increment,
[in] BOOLEAN Wait
);
Parâmetros
[in, out] Event
Um ponteiro para um objeto dispatcher do tipo KEVENT.
[in] Increment
Especifica um impulso a ser aplicado à prioridade dos threads que são preparados como resultado da pulsação do evento. Normalmente definido como zero, mas pode ser definido como um.
[in] Wait
Especifica um valor booliano que significa se a chamada para KePulseEvent será imediatamente seguida por uma chamada para uma das rotinas KeWaitXxx . Se TRUE, a chamada kePulseEvent será imediatamente seguida por uma chamada para KeWaitForMultipleObjects, KeWaitForMutexObject ou KeWaitForSingleObject. Para obter mais informações, consulte a seção Comentários a seguir.
Retornar valor
O estado do sinal anterior do objeto de evento.
Comentários
Para obter mais informações sobre objetos de evento, consulte Objetos de Evento.
A rotina KePulseEvent pode gerar temporariamente o IRQL. Se o parâmetro Wait for FALSE, a rotina, antes de retornar, restaurará o IRQL para o valor original que ele tinha no início da chamada.
Se Wait = TRUE, a rotina retornará sem reduzir o IRQL. Nesse caso, a chamada kePulseEvent deve ser imediatamente seguida por uma chamada KeWaitXxx . Ao definir Wait = TRUE, o chamador pode impedir que uma opção de contexto desnecessária ocorra entre a chamada KePulseEvent e a chamada KeWaitXxx . A rotina KeWaitXxx , antes de retornar, restaura o IRQL para seu valor original no início da chamada KePulseEvent . Embora o IRQL desabilite as opções de contexto entre as duas chamadas, essas chamadas não podem ser usadas de forma confiável como o início e o fim de uma operação atômica. Por exemplo, entre essas duas chamadas, um thread que está em execução ao mesmo tempo em outro processador pode alterar o estado do objeto de evento ou do destino da espera.
Se o chamador estiver executando em IRQL = DISPATCH_LEVEL ou em um contexto de thread arbitrário, o parâmetro Timeout para KeWaitXxx deverá ser zero.
Aviso
Se um thread aguardando o Evento estiver executando um APC de kernel, quando KePulseEvent for chamado, a espera desse thread não será atendida. Depois que o APC do kernel for concluído, o thread permanecerá no estado de espera.
Requisitos
Requisito | Valor |
---|---|
Cliente mínimo com suporte | Disponível a partir do Windows 2000. |
Plataforma de Destino | Universal |
Cabeçalho | ntddk.h (inclua Ntddk.h) |
Biblioteca | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | <= DISPATCH_LEVEL |
Regras de conformidade de DDI | HwStorPortProhibitedDIs(storport), IrqlKeDispatchLte(wdm) |