RPC_CALL_ATTRIBUTES_V2_W 结构 (rpcasync.h)

RPC_CALL_ATTRIBUTES_V2 结构为 RpcServerInqCallAttributes 函数提供参数。 版本 2 指定对本地地址和客户端进程 ID 的支持。

语法

typedef struct tagRPC_CALL_ATTRIBUTES_V2_W {
  unsigned int              Version;
  unsigned long             Flags;
  unsigned long             ServerPrincipalNameBufferLength;
  unsigned short            *ServerPrincipalName;
  unsigned long             ClientPrincipalNameBufferLength;
  unsigned short            *ClientPrincipalName;
  unsigned long             AuthenticationLevel;
  unsigned long             AuthenticationService;
  BOOL                      NullSession;
  BOOL                      KernelModeCaller;
  unsigned long             ProtocolSequence;
  RpcCallClientLocality     IsClientLocal;
  HANDLE                    ClientPID;
  unsigned long             CallStatus;
  RpcCallType               CallType;
  RPC_CALL_LOCAL_ADDRESS_V1 *CallLocalAddress;
  unsigned short            OpNum;
  UUID                      InterfaceUuid;
} RPC_CALL_ATTRIBUTES_V2_W;

成员

Version

RPC_CALL_ATTRIBUTES 结构的版本。 对于此结构,此值必须设置为 2。

Flags

指示应通过调用此结构传递到的 RpcServerInqCallAttributes 来填充此结构的哪些成员的位掩码标志。

含义
RPC_QUERY_SERVER_PRINCIPAL_NAME
指示 RpcServerInqCallAttributes 应填充此结构的 ServerPrincipalName 成员。
RPC_QUERY_CLIENT_PRINCIPAL_NAME
指示 RpcServerInqCallAttributes 应填充此结构的 ClientPrincipalName 成员。
RPC_QUERY_CALL_LOCAL_ADDRESS
指示 RpcServerInqCallAttributes 应填充此结构的 CallLocalAddress 成员。
RPC_QUERY_CLIENT_PID
指示 RpcServerInqCallAttributes 应填充此结构的 ClientPID 成员。 仅 ncalrpc 协议序列支持此标志。

ServerPrincipalNameBufferLength

ServerPrincipalName 的长度(以字节为单位)。 如果不足, 则 ServerPrincipalName 保持不变, ServerPrincipalNameBufferLength 指示所需的缓冲区长度(包括终止 NULL 字符),并返回ERROR_MORE_DATA。 如果 ServerPrincipalNameBufferLength 超过必要长度,则返回时,它会设置为使用的实际长度(以字节为单位),包括终止 NULL 字符。 请参阅“备注”。

如果协议序列不支持检索服务器主体名称, 则 ServerPrincipalNameBufferLength 在返回时设置为零, ServerPrincipalName 指向的缓冲区未修改。 Windowsxp: 只有 ncacn_* 组协议序列支持检索服务器主体名称。

如果未指定RPC_QUERY_SERVER_PRINCIPAL_NAME标志,则忽略 ServerPrincipalNameBufferLength 。 如果 ServerPrincipalNameBufferLength 为非零值, ServerPrincipalNameNULL,则返回ERROR_INVALID_PARAMETER。

ServerPrincipalName

指向服务器主体名称的指针(如果在 标志 中请求,并且受协议序列支持)。 除 RPC_S_OK 或 ERROR_MORE_DATA 以外的任何返回值时, ServerPrincipalName 的内容是未定义且可能已被 RPC 修改。

ClientPrincipalNameBufferLength

ClientPrincipalName 指向的缓冲区的长度(以字节为单位)。 如果不足, 则 ClientPrincipalName 保持不变, ClientPrincipalNameBufferLength 指示所需的缓冲区长度(包括终止 NULL 字符),并返回ERROR_MORE_DATA。 如果 ClientPrincipalNameBufferLength 超过必要长度,则返回时,它会设置为使用的实际长度(以字节为单位),包括终止 NULL 字符。

如果协议序列不支持检索客户端主体名称, 则 ClientPrincipalNameBufferLength 在返回时设置为零,并且 ClientPrincipalName 指向的缓冲区未修改。 Windowsxp: 只有 ncalrpc 协议序列支持检索客户端主体名称。

如果未指定 RPC_QUERY_CLIENT_PRINCIPAL_NAME 标志,则会忽略 ClientPrincipalNameBufferLength 。 如果 ClientPrincipalNameBufferLength 为非零值, ClientPrincipalNameNULL,则返回ERROR_INVALID_PARAMETER。

ClientPrincipalName

指向客户端主体名称的指针(如果在 Flags 成员中请求并受协议序列支持)。 在除 RPC_S_OK 或 ERROR_MORE_DATA 以外的任何返回值时, ClientPrincipalName 的内容是未定义且可能已被 RPC 修改。

AuthenticationLevel

呼叫的身份验证级别。 有关 RPC 支持的身份验证级别,请参阅 身份验证级别常量

AuthenticationService

身份验证服务或安全提供程序,用于进行远程过程调用。

NullSession

指定是否使用 Null 会话。 零表示调用不是通过 Null 会话进行;任何其他值指示 Null 会话。

KernelModeCaller

ProtocolSequence

指示调用所基于的协议序列的常量。

IsClientLocal

RpcCallClientLocality 枚举值,该值指示客户端 (本地、远程或未知) 。

ClientPID

包含调用客户端的进程 ID 的句柄。 仅 ncalrpc 协议序列支持此字段,仅在 Flags 参数中指定RPC_QUERY_CLIENT_PID时才填充此字段。

CallStatus

指定 RPC 调用状态的位字段。

含义
RPC_CALL_STATUS_IN_PROGRESS
0x01
调用正在进行中。
RPC_CALL_STATUS_CANCELLED
0x02
呼叫已取消。
RPC_CALL_STATUS_DISCONNECTED
0x03
客户端已断开连接。

CallType

RpcCallType 枚举值,该值指示 RPC 调用的类型。

CallLocalAddress

指向 RPC_CALL_LOCAL_ADDRESS 结构的指针,该结构包含有关进行调用的本地地址的服务器的信息。

如果在 Flags 中指定了RPC_QUERY_CALL_LOCAL_ADDRESS,则此字段不得为 NULL。否则,返回RPC_S_INVALID_ARG。

如果应用程序提供的缓冲区不足, RpcServerInqCallAttributes 将返回ERROR_MORE_DATA。

OpNum

与相应 IDL 文件中的调用关联的 opnum 值。

InterfaceUuid

进行调用的接口 UUID。

注解

RPC_CALL_ATTRIBUTES 结构使用版本控制方案,使 RpcServerInqCallAttributes 函数能够合并新功能,而无需引入具有后缀标识符的新函数。 例如, RPC_CALL_ATTRIBUTES的第二个版本(在标头中用简单 #define 标识)可以添加新成员,以促进内置到 RpcServerInqCallAttributes 函数的未来版本中的新功能,而无需发布相应的替代函数。

Version 成员指示调用应用程序当前RPC_CALL_ATTRIBUTES_V1或RPC_CALL_ATTRIBUTES_V2) (RPC_CALL_ATTRIBUTES结构的版本。 此标识使 RPC 运行时能够为不使用最新版本结构的应用程序提供向后兼容性。

在进程终止之前, ClientPID 在客户端上唯一标识该进程。 当进程终止时,新进程可以使用 ClientPID 指定的进程 ID。

要求

要求
最低受支持的客户端 Windows Vista [仅限桌面应用]
最低受支持的服务器 Windows Server 2008 [仅限桌面应用]
标头 rpcasync.h (包括 Rpc.h)

另请参阅

RpcServerInqCallAttributes