Función KsDisableEvent (ks.h)

La función KsDisableEvent deshabilita los eventos solicitados a través de IOCTL_KS_DISABLE_EVENT. Responde a todos los eventos habilitados previamente a través de KsEnableEvent. Si la longitud del búfer de entrada es cero, se supone que todos los eventos de la lista deben deshabilitarse. Solo se puede llamar a esta función en PASSIVE_LEVEL.

Sintaxis

KSDDKAPI NTSTATUS KsDisableEvent(
  [in]      PIRP              Irp,
  [in, out] PLIST_ENTRY       EventsList,
  [in]      KSEVENTS_LOCKTYPE EventsFlags,
  [in]      PVOID             EventsLock
);

Parámetros

[in] Irp

Especifica el IRP pasado a la función de eliminación, que usa el IRP para obtener información de contexto. El objeto de archivo asociado al IRP se usa para comparar con el objeto de archivo especificado originalmente al habilitar el evento. Esto permite usar una sola lista de eventos para varios clientes diferenciados por objetos de archivo.

[in, out] EventsList

Apunta al encabezado de la lista de KSEVENT_ENTRY elementos en los que se puede encontrar el evento. Si un cliente usa varias listas de eventos y no sabe en qué lista se encuentra este evento, el cliente puede llamar a esta función varias veces. Un evento no encontrado devolverá STATUS_UNSUCCESSFUL.

[in] EventsFlags

Especifica una marca de KSEVENTS_LOCKTYPE que especifica el tipo de bloqueo de exclusión que se va a usar para acceder a la lista de eventos. Si no se establece ninguna marca, no se toma ningún bloqueo.

[in] EventsLock

Se usa para sincronizar el acceso a un elemento de la lista. Una vez accedido al elemento, se marca como eliminado para que se produzca un error en las solicitudes de eliminación posteriores. A continuación, el bloqueo se libera después de llamar a la función de eliminación, si existe. La función de eliminación debe sincronizarse con la generación de eventos antes de quitar realmente el elemento de la lista.

Valor devuelto

La función KsDisableEvent devuelve STATUS_SUCCESS si se ejecuta correctamente o un error específico del evento que se está habilitando. La función siempre establece el IO_STATUS_BLOCK. Campo de información del PIRP. Elemento IoStatus dentro del IRP a cero. No establece el IO_STATUS_BLOCK. Campo de estado, ni completa el IRP.

Comentarios

Es importante que el controlador remove se sincronice con la generación de eventos para asegurarse de que, cuando se quita el evento de la lista, no se está realizando el servicio. Se supone que el acceso a esta lista se controla con el bloqueo pasado.

Requisitos

Requisito Value
Plataforma de destino Universal
Encabezado ks.h (incluya Ks.h)
Library Ks.lib

Consulte también

KsEnableEvent