Función RxFsdDispatch (mrx.h)
RxFsdDispatch implementa el envío del controlador del sistema de archivos (FSD) para QUE RDBSS procese un paquete de solicitud de E/S (IRP). Un puntero a esta rutina se copia a través de la tabla de distribución del controlador de dispositivo para el controlador minidirector de red mediante la rutina RxDriverEntry cuando se inicializa RDBSS.
Sintaxis
NTSTATUS RxFsdDispatch(
[in] IN PRDBSS_DEVICE_OBJECT RxDeviceObject,
[in] IN PIRP Irp
);
Parámetros
[in] RxDeviceObject
Puntero al objeto de dispositivo RDBSS para este minidirector de red.
[in] Irp
Puntero al paquete de solicitud de E/S que se está procesando.
Valor devuelto
RxFsdDispatch devuelve uno de los siguientes valores:
Código devuelto | Descripción |
---|---|
STATUS_INVALID_DEVICE_REQUEST | Se realizó una solicitud en un objeto de dispositivo no válido. Por ejemplo, este error se devuelve si se pasa un objeto del sistema de archivos como parámetro RxDeviceObject . Este valor de estado indica un error. |
STATUS_OBJECT_NAME_INVALID | Se realizó una solicitud no válida para crear una canalización con nombre o un mailslot (el miembro MajorFunction del Irp se IRP_MJ_CREATE_MAILSLOT o IRP_MJ_CREATE_NAMED_PIPE). Este valor de estado indica un error. |
STATUS_PENDING | Se realizó una solicitud asincrónica y el estado de la solicitud está pendiente. |
STATUS_SUCCESS | La llamada rutinaria RxFsdDispatch se realizó correctamente. |
Comentarios
RDBSS llama a RxFsdDispatch para procesar un paquete de solicitud de E/S (IRP). Estos IRP normalmente los recibe RDBSS en respuesta a una aplicación en modo de usuario que solicita operaciones en un archivo. También es posible que otro controlador de kernel emita este tipo de IRP.
Se copia un puntero a la rutina RxFsdDispatch a través de la tabla de distribución del controlador para un controlador minidirector de red cuando se llama a la rutina RxDriverEntry para inicializar RDBSS.
Internamente, RDBSS mantiene dos vectores de distribución:
Vector de distribución común para la mayoría de las operaciones.
Vector de distribución privado para las operaciones FCB del dispositivo de archivos.
Si el IRP es una solicitud IRP_MJ_CREATE, RxFsdDispatch usará un vector de distribución común. Si irP es para una operación en un FCB de un objeto de archivo, RxFsdDispatch comprobará si se debe usar un vector de envío privado. De lo contrario, se usará un vector de distribución común para procesar el IRP.
RxFsdDispatch llama a rutinas internas para procesar los IRP estándar, lo que da lugar a una llamada a una de las rutinas de devolución de llamada implementadas por el controlador minidirector de red.
Algunos IRP se tratan como especiales y se controlan internamente mediante RDBSS. Por ejemplo, el IRP_MJ_SYSTEM_CONTROL se usa internamente si WMI está habilitado. IRP_MJ_CREATE_MAILSLOT o IRP_MJ_CREATE_NAMED_PIPE solicitudes se tratan especialmente y rechazan (se devuelve un error de STATUS_OBJECT_NAME_INVALID).
Requisitos
Requisito | Value |
---|---|
Plataforma de destino | Escritorio |
Encabezado | mrx.h (incluya Mrx.h, Rxstruc.h, Struchdr.h) |
IRQL | <= APC_LEVEL |