MRxQueryEaInfo 例程
RDBSS 调用 MRxQueryEaInfo 例程来请求网络微型重定向程序查询文件系统对象上的扩展属性信息。
语法
PMRX_CALLDOWN MRxQueryEaInfo;
NTSTATUS MRxQueryEaInfo(
_Inout_ PRX_CONTEXT RxContext
)
{ ... }
参数
RxContext [in, out]
指向RX_CONTEXT 结构的指针。 此参数包含请求操作的 IRP。
返回值
MRxQueryEaInfo 在成功时返回STATUS_SUCCESS或适当的 NTSTATUS 值,例如以下值之一:
返回代码 | 说明 |
---|---|
STATUS_ACCESS_DENIED | 调用方对此操作缺乏适当的安全性。 |
STATUS_BUFFER_OVERFLOW | 用于接收扩展属性信息的缓冲区太小。 应将此返回值视为成功,并且应在 RxContext 参数指向的 RX_CONTEXT 结构的 Info.Buffer 成员中返回尽可能多的有效数据。 |
STATUS_BUFFER_TOO_SMALL | 缓冲区太小,无法接收请求的数据。 如果返回此值,则应将 RxContext 参数指向的 RX_CONTEXT 结构的 InformationToReturn 成员设置为预期缓冲区的最小大小,以便调用成功。 |
STATUS_CONNECTION_DISCONNECTED | 连接已断开连接。 |
STATUS_EA_CORRUPT_ERROR | 从远程服务器接收了无效的扩展属性信息。 |
STATUS_INSUFFICIENT_RESOURCES | 资源不足,无法完成查询。 |
STATUS_INVALID_PARAMETER | 指定的参数无效。 |
STATUS_NONEXISTENT_EA_ENTRY | 文件对象上没有扩展属性,并且用户提供了扩展属性索引。 |
STATUS_NOT_SUPPORTED | 不支持扩展属性。 |
STATUS_ONLY_IF_CONNECTED | SRV_OPEN结构未连接。 |
STATUS_REQUEST_ABORTED | 网络请求已中止。 |
注解
RDBSS 发出对 MRxQueryEaInfo 的调用,以响应接收 IRP_MJ_QUERY_EA 请求。
在调用 MRxQueryEaInfo 之前,RDBSS 修改 RxContext 参数指向的 RX_CONTEXT 结构中的以下成员:
Info.Buffer 成员设置为来自 I/O 请求数据包的用户缓冲区。 如果需要,RDBSS 已锁定此缓冲区。
Info.LengthRemaining 成员设置为 IrpSp-Parameters.QueryEa.Length>。
QueryEa.UserEaList 成员设置为 IrpSp-Parameters.QueryEa.EaList>。
QueryEa.UserEaListLength 成员设置为 IrpSp-Parameters.QueryEa.EaListLength>。
QueryEa.UserEaIndex 成员设置为 IrpSp-Parameters.QueryEa.EaIndex>。
如果 IrpSp-Flags> 具有SL_RESTART_SCAN位,则 QueryEa.RestartScan 成员设置为非零。
如果 IrpSp-Flags> 具有SL_RETURN_SINGLE_ENTRY位,则 QueryEa.ReturnSingleEntry 成员设置为非零。
如果 IrpSp-Flags> 具有SL_INDEX_SPECIFIED位,则 QueryEa.IndexSpecified 成员设置为非零。
成功后,MRxQueryEaInfo 应将 RX_CONTEXT 结构的 Info.LengthRemaininging 成员设置为返回的扩展属性信息的长度,并更新 Fobx-OffsetOfNextEaToReturn> 成员。 如果成功调用 MRxQueryEaInfo,RDBSS 会将 IRP 的 IoStatus.Information 成员设置为 IrpSp-Parameters.QueryEa.Length> 减去 RX_CONTEXT 的 Info.LengthRemaining 成员。
要求
目标平台 |
桌面 |
标头 |
Mrx.h (包括 Mrx.h) |