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 |