__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 返回成功时STATUS_SUCCESS或适当的 NTSTATUS 值,例如以下值之一:
返回代码 | 说明 |
---|---|
|
I/O 请求和关联的RX_CONTEXT已取消。 |
|
RxContext 用于异步操作,RxContext 已添加到队列中。 |
注解
__RxSynchronizeBlockingOperations例程将阻塞 I/O 请求同步到同一工作队列。 RDBSS 在内部使用 __RxSynchronizeBlockingOperations 来同步命名管道操作。 工作队列是由与 Fcb 关联的文件对象扩展名 (FOBX) 引用的队列。
网络微型重定向程序可以使用 __RxSynchronizeBlockingOperations 来同步由网络微型重定向程序维护的单独队列上的操作。
如果将 RxContext 标记为异步操作, __RxSynchronizeBlockingOperations 会将 RxContext 添加到队列并返回STATUS_PENDING。 如果 RxContext 标记为同步操作,__RxSynchronizeBlockingOperations将阻止,并在调用 RxResumeBlockedOperations_Serially 时恢复 RxContext。
如果已取消阻止 I/O 请求, __RxSynchronizeBlockingOperations 将返回STATUS_CANCELLED以指示错误。
在调用 __RxSynchronizeBlockingOperations 之前,必须重置 RxContext 指向的 RX_CONTEXT 结构的 SyncEvent 成员。 如果 DropFcbLock 参数设置为 TRUE,则必须在调用 __RxSynchronizeBlockingOperations 之前锁定 FCB 资源。
以下两个宏是在 Windows Server 2003 或更高版本上定义的,用于调用 __RxSynchronizeBlockingOperations:
RxSynchronizeBlockingOperations - 将 DropFcbLock 参数设置为 FALSE 的调用。
RxSynchronizeBlockingOperationsAndDropFcbLock - 将 DropFcbLock 参数设置为 TRUE 的调用。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | __RxSynchronizeBlockingOperations例程仅在 Windows Server 2003 上可用。 |
目标平台 | 桌面 |
标头 | rxcontx.h (包括 Rxcontx.h) |
另请参阅
RxDereferenceAndDeleteRxContext_Real
反馈
https://aka.ms/ContentUserFeedback。
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈