__RxSynchronizeBlockingOperations函数 (rxcontx.h)

__RxSynchronizeBlockingOperations 将阻止 I/O 请求同步到同一工作队列。

语法

NTSTATUS __RxSynchronizeBlockingOperations(
  [in, out] IN OUT PRX_CONTEXT RxContext,
  [in]      IN PFCB            Fcb,
  [in, out] IN OUT PLIST_ENTRY BlockingIoQ,
  [in]      IN BOOLEAN         DropFcbLock
);

参数

[in, out] RxContext

指向要同步的作的RX_CONTEXT的指针。

[in] Fcb

指向 FCB 的指针。

[in, out] BlockingIoQ

指向队列LIST_ENTRY的指针。

[in] DropFcbLock

一个布尔值,该值指示是否应释放 FCB 资源。 如果此参数 TRUE,则将释放 FCB 资源。

返回值

__RxSynchronizeBlockingOperations 返回成功或相应的 NTSTATUS 值STATUS_SUCCESS,例如以下值之一:

返回代码 描述
STATUS_CANCELLED
I/O 请求和关联的RX_CONTEXT已取消。
STATUS_PENDING
RxContext 用于异步作,RxContext 已添加到队列。

言论

__RxSynchronizeBlockingOperations 例程将阻止 I/O 请求同步到同一工作队列。 RDBSS 在内部使用 __RxSynchronizeBlockingOperations 来同步命名管道作。 工作队列是由与 Fcb关联的文件对象扩展 (FOBX) 引用的队列。

网络微型重定向程序可以使用 __RxSynchronizeBlockingOperations 来同步由网络微型重定向程序维护的单独队列上的作。

如果 RxContext 标记为异步作,__RxSynchronizeBlockingOperations 会将 RxContext 添加到队列并返回STATUS_PENDING。 如果 RxContext 标记为同步作,则当调用 RxResumeBlockedOperations_Serially时,__RxSynchronizeBlockingOperations 将阻止和 RxContext

如果阻止 I/O 请求已取消,__RxSynchronizeBlockingOperations 返回STATUS_CANCELLED以指示错误。

RxContext 指向的 RX_CONTEXT 结构的 SyncEvent 成员必须在调用 __RxSynchronizeBlockingOperations之前重置。 如果 DropFcbLock 参数设置为 TRUE,则必须锁定 FCB 资源,然后才能调用 __RxSynchronizeBlockingOperations

Windows Server 2003 或更高版本上定义了以下两个宏,用于调用 __RxSynchronizeBlockingOperations

RxSynchronizeBlockingOperations - DropFcbLock 参数设置为 FALSE的调用。

RxSynchronizeBlockingOperationsAndDropFcbLock - 调用 DropFcbLock 参数设置为 TRUE

要求

要求 价值
最低支持的客户端 __RxSynchronizeBlockingOperations例程仅在 Windows Server 2003 上可用。
目标平台 桌面
标头 rxcontx.h (包括 Rxcontx.h)

另请参阅

RxCompleteRequest_Real

RxCreateRxContext

RxDereference

RxDereferenceAndDeleteRxContext_Real

RxInitializeContext

RxPrepareContextForReuse

RxResumeBlockedOperations_Serially

__RxSynchronizeBlockingOperationsMaybeDroppingFcbLock