Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
El KePulseEvent rutina establece de forma atómica un objeto de evento en un estado señalado, intenta satisfacer tantas esperas como sea posible y, a continuación, restablece el objeto de evento a un estado no señalizado.
Sintaxis
LONG KePulseEvent(
[in, out] PRKEVENT Event,
[in] KPRIORITY Increment,
[in] BOOLEAN Wait
);
Parámetros
[in, out] Event
Puntero a un objeto distribuidor de tipo KEVENT.
[in] Increment
Especifica un aumento que se aplicará a la prioridad de los subprocesos que se pueden obtener como resultado de pulsar el evento. Normalmente, se establece en cero, pero se puede establecer en uno.
[in] Wait
Especifica un valor booleano que indica si la llamada a KePulseEvent va a ir seguida inmediatamente de una llamada a una de las rutinas de KeWaitXxx. Si TRUE, la llamada KePulseEvent va seguida inmediatamente de una llamada a KeWaitForMultipleObjects, KeWaitForMutexObjecto KeWaitForSingleObject. Para obtener más información, vea la siguiente sección Comentarios.
Valor devuelto
Estado de señal anterior del objeto de evento.
Observaciones
Para obtener más información sobre los objetos de evento, vea Objetos de evento.
La rutina de KePulseEvent podría generar temporalmente irQL. Si el parámetro wait es FALSE, la rutina, antes de que devuelva, restaura irQL al valor original que tenía al principio de la llamada.
Si Wait = TRUE, la rutina devuelve sin reducir IRQL. En este caso, la llamada KePulseEvent debe ir inmediatamente seguida de una llamada KeWaitXxx. Al establecer Wait = TRUE, el autor de la llamada puede impedir que se produzca un cambio de contexto innecesario entre la llamada kePulseEvent de y la llamada KeWaitXxx. La rutina de KeWaitXxx, antes de que devuelva, restaura irQL a su valor original al principio de la llamada kePulseEvent de. Aunque IRQL deshabilita los modificadores de contexto entre las dos llamadas, estas llamadas no se pueden usar de forma confiable como el inicio y el final de una operación atómica. Por ejemplo, entre estas dos llamadas, un subproceso que se ejecuta al mismo tiempo en otro procesador podría cambiar el estado del objeto de evento o del destino de la espera.
Si el autor de la llamada se ejecuta en IRQL = DISPATCH_LEVEL o en un contexto de subproceso arbitrario, el parámetro timeout de para KeWaitXxx debe ser cero.
Advertencia
Si un subproceso que espera event está ejecutando actualmente un APC de kernel, cuando se llama a KePulseEvent, no se satisface la espera de este subproceso. Una vez completado el kernel de APC, el subproceso permanece en estado de espera.
Requisitos
Requisito | Valor |
---|---|
cliente mínimo admitido | Disponible a partir de Windows 2000. |
de la plataforma de destino de | Universal |
encabezado de | ntddk.h (incluya Ntddk.h) |
biblioteca de | NtosKrnl.lib |
DLL de | NtosKrnl.exe |
irQL | <= DISPATCH_LEVEL |
reglas de cumplimiento de DDI | HwStorPortProhibitedDIs(storport), IrqlKeDispatchLte(wdm) |