Функция RxFsdPostRequest (rxprocs.h)
RxFsdPostRequest помещает пакет запроса ввода-вывода(IRP), указанный структурой RX_CONTEXT в рабочую очередь для обработки процессом файловой системы (FSP).
Синтаксис
NTSTATUS RxFsdPostRequest(
[in] IN PRX_CONTEXT RxContext
);
Параметры
[in] RxContext
Указатель на RX_CONTEXT, содержащий IRP для очереди в рабочий поток.
Возвращаемое значение
RxFsdPostRequest возвращает следующие значения:
Возвращаемый код | Описание |
---|---|
|
Был выполнен асинхронный запрос и был помещен в очередь в рабочий поток для последующей обработки. Состояние запроса ожидается. |
Замечания
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
Если FileObject члена IRP не NULL и запрос можно опубликовать немедленно для обработки (пороговое значение для очереди устройства пусто), то это произойдет. В противном случае запрос будет размещен в очереди переполнения в томе.
Все вызовы RxFsdPostRequest помещаются в рабочий поток для вызова RxFsdDispatch подпрограммы, передаваемой в параметр RxContext.
Требования
Требование | Ценность |
---|---|
целевая платформа | Настольный |
заголовка | rxprocs.h (включая Rxprocs.h, Rxcontx.h) |
IRQL | <= APC_LEVEL |