Función KsSetMajorFunctionHandler (ks.h)

La función KsSetMajorFunctionHandler establece el controlador de una función principal especificada para usar el envío interno. Enruta a través de un KSDISPATCH_TABLE contenido en el encabezado de objeto opaco para que sea el primer elemento dentro de una estructura a la que apunta un FsContext dentro de un objeto de archivo. La distribución supone que el dispositivo inicializa la tabla y la estructura FsContext mediante KsAllocateObjectHeader.

Sintaxis

KSDDKAPI NTSTATUS KsSetMajorFunctionHandler(
  [in] PDRIVER_OBJECT DriverObject,
  [in] ULONG          MajorFunction
);

Parámetros

[in] DriverObject

Especifica el objeto de controlador cuya función principal se va a controlar.

[in] MajorFunction

Especifica el identificador de función principal que se va a controlar. Esto establece el puntero de función principal del objeto de controlador en una función interna que, a continuación, envía a la función KSDISPATCH_TABLE . Se supone que el puntero a esta tabla es el primer elemento de una estructura a la que apunta FsContext en el objeto de archivo del IRP específico que se envía. Los identificadores de función principales válidos se muestran como se muestra.

Identificador Descripción
IRP_MJ_CREATE Create IRP. En este caso, se podría usar una solicitud de creación para crear una nueva instancia de un filtro o para crear algún objeto, como un pin bajo un filtro o un reloj debajo de un pin. Se supone que el primer elemento de la extensión del objeto de controlador contiene una estructura de KSDEVICE_HEADER que se usa para buscar el tipo de objeto que se va a crear, en función del nombre pasado. Si se especifica un objeto de archivo primario, ese objeto KSDISPATCH_TABLE. ChildCreateHandlerTable en FsContext se examina para determinar qué controlador usar para la creación o usar la tabla del objeto de dispositivo.
IRP_MJ_CLOSE Cierre IRP.
IRP_MJ_DEVICE_CONTROL IRP de control de dispositivos.
IRP_MJ_READ Lee IRP.
IRP_MJ_WRITE Escriba IRP.
IRP_MJ_FLUSH_BUFFERS Vacíe IRP.
IRP_MJ_QUERY_SECURITY Consulta de la información de seguridad.
IRP_MJ_SET_SECURITY Establezca la información de seguridad.
KSDISPATCH_FASTIO Esta marca se puede agregar al identificador MajorFunction para especificar que la entrada hace referencia a la tabla de distribución de E/S rápida, en lugar de a la entrada de función principal típica. Esto solo es válido con IRP_MJ_READ, IRP_MJ_WRITE o IRP_MJ_DEVICE_CONTROL. El controlador es responsable de crear la tabla DriverObject-FastIoDispatch>. Al igual que con el envío normal, si se establece un controlador para el objeto de controlador, todos los objetos de archivo deben controlar esa E/S rápida, incluso si la entrada apunta a DispatchFastIoDeviceControlFailure o a una función similar.

Valor devuelto

Devuelve STATUS_SUCCESS si el identificador MajorFunction es válido.

Comentarios

Si se establece un controlador de función principal para un objeto de controlador, todos los objetos de archivo deben controlar esa función principal, incluso si la entrada solo apunta a KsDispatchInvalidDeviceRequest.

KSDISPATCH_FASTIO

Esta marca se puede usar para especificar que se debe establecer la entrada de E/S rápida en lugar de la entrada basada en IRP.

Requisitos

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