PMRX_CHANGE_BUFFERING_STATE_CALLDOWN回调函数 (mrx.h)

RDBSS 调用MRxCompleteBufferingStateChangeRequest 例程,以通知网络微型重定向程序缓冲状态更改请求已完成。

语法

PMRX_CHANGE_BUFFERING_STATE_CALLDOWN PmrxChangeBufferingStateCalldown;

NTSTATUS PmrxChangeBufferingStateCalldown(
  [in, out] IN OUT PRX_CONTEXT RxContext,
  [in, out] IN OUT PMRX_SRV_OPEN SrvOpen,
  [in]      IN PVOID MRxContext
)
{...}

参数

[in, out] RxContext

指向RX_CONTEXT结构的指针。 此参数包含请求操作的 IRP。

[in, out] SrvOpen

指向供网络微型重定向程序回调例程使用的上下文参数的指针。

[in] MRxContext

指向要更改的SRV_OPEN结构和关联的 FCB 结构的指针。

返回值

MRxCompleteBufferingStateChangeRequest 返回成功时STATUS_SUCCESS或相应的 NTSTATUS 值,如下所示:

返回代码 说明
STATUS_NOT_SUPPORTED 不支持缓冲请求更改中的选项。

注解

在调用 MRxCompleteBufferingStateChangeRequest、RDBSS 之前:

  • 获取 FCB 结构的独占锁。

  • SrvOpen-Fcb>FcbState 成员设置为 FCB_STATE_BUFFERSTATE_CHANGING。

  • 修改 RxContext 参数指向的 RX_CONTEXT 结构中的以下成员:

    • pRelevantSrvOpen 设置为 SRV_OPEN 结构。
    • pFcb 设置为 FCB 结构。
    • pFobx 设置为 FOBX 结构。

如果启用了锁缓冲, MRxCompleteBufferingStateChangeRequest 需要将字节范围锁刷新到服务器。 锁定区域列表将传递到 RX_CONTEXT 结构的 LowIoContext.ParamsFor.Locks.LockList 成员中的网络微型重定向程序。

服务器消息块 (SMB) 重定向器使用 MRxCompleteBufferingStateChangeRequest 发送 oplock 中断响应,或者在文件不再使用的情况下关闭 oplock 中断的句柄。 需要刷新到服务器的字节范围锁将传递到RX_CONTEXT结构的 LowIoContext.ParamsFor.Locks.Locks.LockList 成员中的网络微型重定向程序。 新的 oplock 级别在 MrxContext 参数中传递。

RDBSS 忽略 MRxCompleteBufferingStateChangeRequest 中的返回值。

要求

要求
目标平台 桌面
标头 mrx.h (包括 Mrx.h)

另请参阅

MRxComputeNewBufferingState

MRxGetConnectionId