__RxSynchronizeBlockingOperationsMaybeDroppingFcbLock 函数

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

语法

NTSTATUS __RxSynchronizeBlockingOperationsMaybeDroppingFcbLock(
  _Inout_ PRX_CONTEXT RxContext,
  _Inout_ PLIST_ENTRY BlockingIoQ,
  _In_    BOOLEAN     DropFcbLock
);

参数

RxContext [in, out]
指向正在同步的操作RX_CONTEXT的指针。

BlockingIoQ [in, out]
指向队列LIST_ENTRY的指针。

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

返回值

__RxSynchronizeBlockingOperationsMaybeDroppingFcbLock 返回成功时STATUS_SUCCESS或适当的 NTSTATUS 值,例如以下值之一:

返回代码 说明
STATUS_CANCELLED

I/O 请求和关联的RX_CONTEXT已取消。

STATUS_PENDING

RxContext 用于异步操作,RxContext 已添加到队列中。

注解

__RxSynchronizeBlockingOperationsMaybeDroppingFcbLock例程将阻止 I/O 请求同步到同一工作队列。 RDBSS 在内部使用 __RxSynchronizeBlockingOperationsMaybeDroppingFcbLock 来同步命名管道操作。 工作队列是由与 RxContext 指向的 RX_CONTEXT 结构的 pFcb 成员关联的文件对象扩展 (FOBX) 引用的队列。

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

如果 RxContext 标记为异步操作, __RxSynchronizeBlockingOperationsMaybeDroppingFcbLock 会将 RxContext 添加到队列并返回STATUS_PENDING。 如果 RxContext 标记为同步操作,__RxSynchronizeBlockingOperationsMaybeDroppingFcbLock将阻止,并在调用 RxResumeBlockedOperations_Serially 时恢复 RxContext

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

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

以下两个宏是在 Windows XP 和 Windows 2000 上定义的,用于调用 __RxSynchronizeBlockingOperationsMaybeDroppingFcbLock

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

RxSynchronizeBlockingOperationsAndDropFcbLock - 将 DropFcbLock 参数设置为 TRUE 的调用。

要求

目标平台

桌面

版本

__RxSynchronizeBlockingOperationsMaybeDroppingFcbLock例程仅适用于 Windows XP 和 Windows 2000。

标头

Rxcontx.h (包括 Rxcontx.h)

另请参阅

RxCompleteRequest_Real

RxCreateRxContext

RxDereference

RxDereferenceAndDeleteRxContext_Real

RxInitializeContext

RxPrepareContextForReuse

RxResumeBlockedOperations_Serially

__RxSynchronizeBlockingOperations