Функция RxFsdDispatch (mrx.h)
RxFsdDispatch реализует диспетчеризацию драйвера файловой системы (FSD) для RDBSS для обработки пакета запроса ввода-вывода (IRP). Указатель на эту подпрограмму копируется в таблицу диспетчера драйвера устройства для драйвера сетевого мини-перенаправления подпрограммой RxDriverEntry при инициализации RDBSS.
Синтаксис
NTSTATUS RxFsdDispatch(
[in] IN PRDBSS_DEVICE_OBJECT RxDeviceObject,
[in] IN PIRP Irp
);
Параметры
[in] RxDeviceObject
Указатель на объект устройства RDBSS для этого сетевого мини-перенаправителя.
[in] Irp
Указатель на обрабатываемый пакет запроса ввода-вывода.
Возвращаемое значение
RxFsdDispatch возвращает одно из следующих значений:
Код возврата | Описание |
---|---|
STATUS_INVALID_DEVICE_REQUEST | Был сделан запрос на недопустимый объект устройства. Например, эта ошибка возвращается, если объект файловой системы передается в качестве параметра RxDeviceObject . Это значение состояния указывает на сбой. |
STATUS_OBJECT_NAME_INVALID | Был сделан недопустимый запрос на создание именованного канала или почтового потока (член MajorFunctionIrp был IRP_MJ_CREATE_MAILSLOT или IRP_MJ_CREATE_NAMED_PIPE). Это значение состояния указывает на сбой. |
STATUS_PENDING | Выполнен асинхронный запрос, состояние запроса находится в состоянии ожидания. |
STATUS_SUCCESS | Обычный вызов RxFsdDispatch выполнен успешно. |
Комментарии
RxFsdDispatch вызывается RDBSS для обработки пакета запроса ввода-вывода (IRP). Эти irP обычно получаются RDBSS в ответ на запросы операций с файлом в пользовательском режиме. Такой IRP также может выдать другой драйвер ядра.
Указатель на подпрограмму RxFsdDispatch копируется в таблицу диспетчеризации драйверов для драйвера сетевого мини-перенаправления при вызове подпрограммы RxDriverEntry для инициализации RDBSS.
Внутри RDBSS поддерживает два вектора диспетчеризации:
Общий вектор диспетчеризации для большинства операций.
Частный вектор диспетчеризации для операций FCB файлового устройства.
Если IRP является запросом IRP_MJ_CREATE, RxFsdDispatch будет использовать общий вектор диспетчеризации. Если IRP предназначен для операции с FCB файлового объекта, RxFsdDispatch будет проверка, если следует использовать частный вектор диспетчеризации. В противном случае для обработки IRP будет использоваться общий вектор диспетчеризации.
RxFsdDispatch вызывает внутренние подпрограммы для обработки стандартных irP, большинство из которых приводит к вызову одной из подпрограмм обратного вызова, реализованных драйвером сетевого мини-перенаправления.
Несколько irP рассматриваются как специальные и обрабатываются внутренне RDBSS. Например, IRP_MJ_SYSTEM_CONTROL используется внутри, если включен инструментарий WMI. IRP_MJ_CREATE_MAILSLOT или IRP_MJ_CREATE_NAMED_PIPE запросы обрабатываются специально и отклоняются (возвращается ошибка STATUS_OBJECT_NAME_INVALID).
Требования
Требование | Значение |
---|---|
Целевая платформа | Персональный компьютер |
Верхняя часть | mrx.h (включая Mrx.h, Rxstruc.h, Struchdr.h) |
IRQL | <= APC_LEVEL |