Функция 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

См. также раздел

RxDriverEntry