MRxCreate 例程

MRxCreate 例程由 RDBSS 调用,以请求网络微型重定向程序创建文件系统对象。

语法

PMRX_CALLDOWN MRxCreate;

NTSTATUS MRxCreate(
  _Inout_ PRX_CONTEXT RxContext
)
{ ... }

参数

RxContext [in, out]
指向RX_CONTEXT结构的指针。 此参数包含请求操作的 IRP。

返回值

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

返回代码 说明
STATUS_INSUFFICIENT_RESOURCES

资源不足,无法完成操作。

STATUS_NETWORK_ACCESS_DENIED

网络访问被拒绝。 如果要求网络微型重定向程序在只读共享上打开新文件,则可能会返回此错误。

STATUS_NOT_IMPLEMENTED

请求的功能(如远程启动或远程页面文件)未实现。

STATUS_NOT_SUPPORTED

不支持请求的功能,例如扩展属性。

STATUS_OBJECT_NAME_COLLISION

要求网络微型重定向程序创建已存在的文件。

STATUS_OBJECT_NAME_NOT_FOUND

找不到对象名称。 如果要求网络微型重定向程序打开不存在的文件,则可能会返回此错误。

STATUS_OBJECT_PATH_NOT_FOUND

找不到对象路径。 如果请求了 NTFS 流对象,并且远程文件系统不支持流,则可能会返回此错误。

STATUS_REPARSE

需要重新分析来处理符号链接。

STATUS_RETRY

应重试该操作。 如果网络微型重定向程序遇到共享冲突或拒绝访问错误,可能会返回此错误。

注解

MRxCreate 由 RDBSS 调用,以请求网络微型重定向程序跨网络打开文件系统对象。 此调用由 RDBSS 发出,以响应接收 IRP_MJ_CREATE 请求。

在调用 MRxCreate 之前,RDBSS 修改 RxContext 参数指向的 RX_CONTEXT 结构中的以下成员:

pRelevantSrvOpen 设置为 SRV_OPEN 结构。

Create.pSrvCall 设置为 SRV_CALL 结构。

Create.NtCreateParameters 设置为请求的NT_CREATE_PARAMETERS。

在网络微型重定向器的上下文中,文件对象引用关联的文件控制块 (FCB) 和文件扩展名 (FOBX) 结构。 文件对象和 FOBX 之间有一对一的对应关系。 许多文件对象将引用同一 FCB,它表示远程服务器上的单个文件。 客户端可以有多个不同的打开请求 (NtCreateFile 请求) 在同一个 FCB 上,其中每个都将创建新的文件对象。 RDBSS 和网络微型重定向程序可以选择发送比接收的 NtCreateFile 请求少的 MRxCreate 请求,实际上在多个 FOBX 之间共享SRV_OPEN结构。

如果 MRxCreate 请求针对文件覆盖且 MRxCreate 返回STATUS_SUCCESS,则 RDBSS 将获取分页 I/O 资源并截断文件。 如果文件由缓存管理器缓存,RDBSS 将使用刚刚从服务器接收的大小更新缓存管理器的大小。

在返回之前,MRxCreate 必须设置 RxContext 参数指向的 RX_CONTEXT 结构的 CurrentIrp-IoStatus.Information> 成员。

要求

目标平台

桌面

标头

Mrx.h (包括 Mrx.h)

另请参阅

MRxAreFilesAliased

MRxCleanupFobx

MRxCloseSrvOpen

MRxCollapseOpen

MRxCreate

MRxDeallocateForFcb

MRxDeallocateForFobx

MRxExtendForCache

MRxExtendForNonCache

MRxFlush

MRxForceClosed

MRxIsLockRealizable

MRxShouldTryToCollapseThisOpen

MRxTruncate

MRxZeroExtend