Функция RxFsdPostRequest (rxprocs.h)

RxFsdPostRequest помещает пакет запроса ввода-вывода (IRP), заданный структурой RX_CONTEXT, в рабочую очередь для обработки процессом файловой системы (FSP).

Синтаксис

NTSTATUS RxFsdPostRequest(
  [in] IN PRX_CONTEXT RxContext
);

Параметры

[in] RxContext

Указатель на RX_CONTEXT, содержащий IRP для постановки в очередь рабочего потока.

Возвращаемое значение

RxFsdPostRequest возвращает следующие значения:

Код возврата Описание
STATUS_PENDING
Был выполнен асинхронный запрос, помещенный в очередь в рабочий поток для последующей обработки. Состояние запроса ожидается.

Комментарии

RDBSS обычно вызывает rxFsdPostRequest для обработки асинхронного пакета запросов ввода-вывода (IRP). Эти irP обычно получаются RDBSS в ответ на запросы операций с файлом приложения в пользовательском режиме. Такой IRP также может выдать другой драйвер ядра.

Если элемент Flags структуры RX_CONTEXT, на который указывает параметр RxContext , не имеет RX_CONTEXT_FLAG_NO_PREPOSTING_NEEDED бита, RxFsdPostRequest попытается заблокировать любое адресное пространство пользователя, необходимое для определенных типов запросов. Запросы, которые приводят к такому поведению, основаны на элементе MajorFunction RX_CONTEXT структуры, на которую указывает RxContext , и включают следующее:

  • IRP_MJ_DIRECTORY CONTROL при IRP_MN_QUERY_DIRECTORY IRP_MN_QUERY_DIRECTORY RxContext->MinorFunction.
  • IRP_MJ_QUERY_EA
  • IRP_MJ_READ
  • IRP_MJ_SET_EA
  • IRP_MJ_WRITE
Член MajorFunctionRxContext определит, в какую рабочую очередь будет отправляться этот запрос. Запрос IRP_MJ_DEVICE_CONTROL, в котором IOCTL_REDIR_QUERY_PATH член Parameters.DeviceIoControl.IoControlCode , будет помещен в отложенную рабочую очередь. В этом случае элемент Flags параметра RxContext будет иметь RX_CONTEXT_FLAG_FSP_DELAYED_OVERFLOW_QUEUE бит. Все остальные запросы отправляются в очередь критически важных рабочих, а элементу Flags параметра RxContext будет задан бит RX_CONTEXT_FLAG_FSP_CRITICAL_OVERFLOW_QUEUE.

Если элемент FileObject IRP не равен NULL и запрос может быть немедленно опубликован для обработки (пороговое значение для очереди устройств пустое), это произойдет. В противном случае запрос будет помещен в очередь переполнения тома.

Все вызовы RxFsdPostRequest помещаются в очередь в рабочий поток для вызова подпрограммы RxFsdDispatch , передавая параметр RxContext .

Требования

Требование Значение
Целевая платформа Персональный компьютер
Верхняя часть rxprocs.h (включая Rxprocs.h, Rxcontx.h)
IRQL <= APC_LEVEL

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

RxFsdDispatch