__RxSynchronizeBlockingOperationsMaybeDroppingFcbLock function
__RxSynchronizeBlockingOperationsMaybeDroppingFcbLock synchronizes blocking I/O requests to the same work queue.
Syntax
NTSTATUS __RxSynchronizeBlockingOperationsMaybeDroppingFcbLock(
_Inout_ PRX_CONTEXT RxContext,
_Inout_ PLIST_ENTRY BlockingIoQ,
_In_ BOOLEAN DropFcbLock
);
Parameters
RxContext [in, out]
A pointer to the RX_CONTEXT of the operation being synchronized.
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
__RxSynchronizeBlockingOperationsMaybeDroppingFcbLock 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 __RxSynchronizeBlockingOperationsMaybeDroppingFcbLock routine synchronizes blocking I/O requests to the same work queue. RDBSS uses __RxSynchronizeBlockingOperationsMaybeDroppingFcbLock internally to synchronize named pipe operations. The work queue is the queue referenced by the file object extension (FOBX) associated with the pFcb member of the RX_CONTEXT structure pointed to by RxContext.
A network mini-redirector may use __RxSynchronizeBlockingOperationsMaybeDroppingFcbLock to synchronize operations on a separate queue that is maintained by the network mini-redirector.
If RxContext is marked for an asynchronous operation, __RxSynchronizeBlockingOperationsMaybeDroppingFcbLock will add the RxContext to the queue and return STATUS_PENDING. If RxContext is marked for a synchronous operation, __RxSynchronizeBlockingOperationsMaybeDroppingFcbLock will block and RxContext is resumed when a call is made to RxResumeBlockedOperations_Serially.
If the blocking I/O request was canceled, __RxSynchronizeBlockingOperationsMaybeDroppingFcbLock 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 __RxSynchronizeBlockingOperationsMaybeDroppingFcbLock. The FCB resource must be locked before calling __RxSynchronizeBlockingOperationsMaybeDroppingFcbLock if the DropFcbLock parameter is set to TRUE.
The following two macros are defined on Windows XP and Windows 2000 for calling __RxSynchronizeBlockingOperationsMaybeDroppingFcbLock :
RxSynchronizeBlockingOperations - calls with the DropFcbLock parameter set to FALSE.
RxSynchronizeBlockingOperationsAndDropFcbLock - calls with the DropFcbLock parameter set to TRUE.
Requirements
Target platform |
Desktop |
Version |
The __RxSynchronizeBlockingOperationsMaybeDroppingFcbLock routine is only available on Windows XP and Windows 2000. |
Header |
Rxcontx.h (include Rxcontx.h) |
See also
RxDereferenceAndDeleteRxContext_Real