Compartilhar via


Função KePulseEvent (ntddk.h)

O KePulseEvent rotina define atomicamente um objeto de evento como um estado sinalizado, tenta satisfazer o máximo de esperas possível 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 de threads que são preparados como resultado da pulverizaçã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 de KeWaitXxx. Se TRUE, a chamada KePulseEvent será seguida imediatamente por uma chamada para KeWaitForMultipleObjects, KeWaitForMutexObjectou KeWaitForSingleObject. Para obter mais informações, consulte a seção Comentários a seguir.

Valor de retorno

O estado do sinal anterior do objeto de evento.

Observações

Para obter mais informações sobre objetos de evento, consulte Event Objects.

A rotina KePulseEvent pode aumentar 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 = VERDADEIRO, a rotina retornará sem reduzir o IRQL. Nesse caso, a chamada KePulseEvent deve ser seguida imediatamente por uma chamada KeWaitxxx. Ao configurar Espera = TRUE, o chamador pode impedir que uma opção de contexto desnecessária ocorra entre a chamada KePulseEvent e a chamada KeWaitxxx. A rotina de 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 de Eventos estiver executando um APC do kernel no momento, 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
de cliente com suporte mínimo Disponível a partir do Windows 2000.
da Plataforma de Destino Universal
cabeçalho ntddk.h (inclua Ntddk.h)
biblioteca NtosKrnl.lib
de DLL NtosKrnl.exe
IRQL <= DISPATCH_LEVEL
regras de conformidade de DDI HwStorPortProhibitedDIs(storport), IrqlKeDispatchLte(wdm)

Consulte também

KeInitializeEvent

KeReadStateEvent

KeResetEvent

KeSetEvent

KeWaitForMultipleObjects

KeWaitForSingleObject