Поделиться через


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

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

Синтаксис

NTSTATUS RxFsdPostRequest(
  [in] IN PRX_CONTEXT RxContext
);

Параметры

[in] RxContext

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

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

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

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

Замечания

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

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

  • IRP_MJ_DIRECTORY CONTROL, если RxContext->MinorFunctionIRP_MN_QUERY_DIRECTORY.
  • IRP_MJ_QUERY_EA
  • IRP_MJ_READ
  • IRP_MJ_SET_EA
  • IRP_MJ_WRITE
MajorFunction член RxContext определит, в какую рабочую очередь будет размещен этот запрос. Запрос IRP_MJ_DEVICE_CONTROL, где элемент Parameters.DeviceIoControl.IoControlCode IOCTL_REDIR_QUERY_PATH будет размещен в отложенной рабочей очереди. В этом случае элемент флагов в параметре 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