RxFsdPostRequest function (rxprocs.h)
RxFsdPostRequest queues the I/O request packet (IRP) specified by an RX_CONTEXT structure to the worker queue for processing by the file system process (FSP).
Syntax
NTSTATUS RxFsdPostRequest(
[in] IN PRX_CONTEXT RxContext
);
Parameters
[in] RxContext
A pointer to the RX_CONTEXT containing the IRP to be queued to a worker thread.
Return value
RxFsdPostRequest returns the following values:
Return code | Description |
---|---|
|
An asynchronous request was made and has been queued to a worker thread for later processing. The status of the request is pending. |
Remarks
RxFsdPostRequest is normally called by RDBSS to process an asynchronous I/O request packet (IRP). These IRPs are normally received by RDBSS in response to a user-mode application requesting operations on a file. It is also possible for another kernel driver to issue such an IRP.
If the Flags member of the RX_CONTEXT structure pointed to by the RxContext parameter does not have the RX_CONTEXT_FLAG_NO_PREPOSTING_NEEDED bit set, then RxFsdPostRequest will try to lock down any user address space that is required for certain types of requests. The requests that result in this behavior are based on the MajorFunction member of RX_CONTEXT structure pointed to by RxContext and include the following:
- IRP_MJ_DIRECTORY CONTROL when RxContext->MinorFunction is IRP_MN_QUERY_DIRECTORY.
- IRP_MJ_QUERY_EA
- IRP_MJ_READ
- IRP_MJ_SET_EA
- IRP_MJ_WRITE
If the FileObject member of the IRP is not NULL and the request can be posted immediately for processing (the threshold for the device queue is empty), then this will occur. Otherwise, the request will be posted to an overflow queue on the volume.
All calls to RxFsdPostRequest are queued to a worker thread to call the RxFsdDispatch routine passing in the RxContext parameter.
Requirements
Requirement | Value |
---|---|
Target Platform | Desktop |
Header | rxprocs.h (include Rxprocs.h, Rxcontx.h) |
IRQL | <= APC_LEVEL |