__RxSynchronizeBlockingOperations - NtDoc

Native API online documentation, based on the System Informer (formerly Process Hacker) phnt headers
// rxcontx.h

NTSTATUS __RxSynchronizeBlockingOperations(
  [in, out] IN OUT PRX_CONTEXT RxContext,
  [in]      IN PFCB            Fcb,
  [in, out] IN OUT PLIST_ENTRY BlockingIoQ,
  [in]      IN BOOLEAN         DropFcbLock
);
View the official Windows Driver Kit DDI reference

NtDoc

No description available.

Windows Driver Kit DDI reference (nf-rxcontx-__rxsynchronizeblockingoperations)

__RxSynchronizeBlockingOperations function

Description

__RxSynchronizeBlockingOperations synchronizes blocking I/O requests to the same work queue.

Parameters

RxContext [in, out]

A pointer to the RX_CONTEXT of the operation being synchronized.

Fcb [in]

A pointer to the FCB.

BlockingIoQ [in, out]

A pointer to the LIST_ENTRY for the queue.

DropFcbLock [in]

A Boolean value that indicates if the FCB resource should be released. If this parameter is TRUE, then the FCB resource will be released.

Return value

__RxSynchronizeBlockingOperations returns STATUS_SUCCESS on success or an appropriate NTSTATUS value such as one of the following:

Return code Description
STATUS_CANCELLED The I/O request and the associated RX_CONTEXT was canceled.
STATUS_PENDING The RxContext was for an asynchronous operation and the RxContext has been added to the queue.

Remarks

The __RxSynchronizeBlockingOperations* routine synchronizes blocking I/O requests to the same work queue. RDBSS uses __RxSynchronizeBlockingOperations internally to synchronize named pipe operations. The work queue is the queue referenced by the file object extension (FOBX) associated with the *Fcb.

A network mini-redirector may use __RxSynchronizeBlockingOperations to synchronize operations on a separate queue that is maintained by the network mini-redirector.

If RxContext is marked for an asynchronous operation, __RxSynchronizeBlockingOperations* will add the *RxContext to the queue and return STATUS_PENDING. If RxContext is marked for a synchronous operation, __RxSynchronizeBlockingOperations will block and RxContext is resumed when a call is made to RxResumeBlockedOperations_Serially.

If the blocking I/O request was canceled, __RxSynchronizeBlockingOperations returns STATUS_CANCELLED to indicate the error.

The SyncEvent member of the RX_CONTEXT structure pointed to by RxContext must have been reset before calling __RxSynchronizeBlockingOperations. The FCB resource must be locked before calling **__RxSynchronizeBlockingOperations if the *DropFcbLock* parameter is set to TRUE.

The following two macros are defined on Windows Server 2003 or later for calling __RxSynchronizeBlockingOperations:

RxSynchronizeBlockingOperations - calls with the DropFcbLock parameter set to FALSE.

RxSynchronizeBlockingOperationsAndDropFcbLock - calls with the DropFcbLock parameter set to TRUE.

See also

RxCompleteRequest_Real

RxCreateRxContext

RxDereference

RxDereferenceAndDeleteRxContext_Real

RxInitializeContext

RxPrepareContextForReuse

RxResumeBlockedOperations_Serially

__RxSynchronizeBlockingOperationsMaybeDroppingFcbLock