Функция 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 Был сделан недопустимый запрос на создание именованного канала или почтового объекта (MajorFunction член Irp был IRP_MJ_CREATE_MAILSLOT или IRP_MJ_CREATE_NAMED_PIPE). Это значение состояния указывает на сбой.
STATUS_PENDING Был выполнен асинхронный запрос, и состояние запроса ожидается.
STATUS_SUCCESS вызов RxFsdDispatch выполнен успешно.

Замечания

RxFsdDispatch вызывается RDBSS для обработки пакета запросов ввода-вывода (IRP). Эти irPs обычно получаются RDBSS в ответ на запросы операций в пользовательском режиме приложения с запросом операций в файле. Кроме того, для другого драйвера ядра может возникнуть такая ошибка IRP.

Указатель на подпрограмму RxFsdDispatch копируется через таблицу диспетчера драйверов для драйвера мини-перенаправления сети при вызове подпрограммы RxDriverEnt ry для инициализации RDBSS.

В внутренней части RDBSS поддерживает два вектора отправки:

  • Распространенный вектор отправки для большинства операций.

  • Вектор частной диспетчеризации для операций FCB файлового устройства.

Если IRP является запросом IRP_MJ_CREATE, RxFsdDispatch будет использовать общий вектор отправки. Если IRP предназначен для операции с ФКБ объекта файла, RxFsdDispatch будет проверять, следует ли использовать частный вектор отправки. В противном случае для обработки IRP будет использоваться общий вектор диспетчера.

RxFsdDispatch вызывает внутренние подпрограммы для обработки стандартных IRPs, большинство из которых приводит к вызову одной из подпрограмм обратного вызова, реализованных драйвером мини-перенаправления сети.

Несколько 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