Compartilhar via


estrutura RPC_CALL_ATTRIBUTES_V2_A (rpcasync.h)

A estrutura RPC_CALL_ATTRIBUTES_V2 fornece parâmetros para a função RpcServerInqCallAttributes . A versão 2 especifica suporte para endereços locais e IDs de processo do cliente.

Sintaxe

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

Membros

Version

Versão da estrutura RPC_CALL_ATTRIBUTES . Para essa estrutura, esse valor deve ser definido como 2.

Flags

Sinalizadores com máscara de bits que indicam quais membros dessa estrutura devem ser preenchidos pela chamada para RpcServerInqCallAttributes para o qual essa estrutura foi passada.

Valor Significado
RPC_QUERY_SERVER_PRINCIPAL_NAME
Indica que RpcServerInqCallAttributes deve preencher o membro ServerPrincipalName dessa estrutura.
RPC_QUERY_CLIENT_PRINCIPAL_NAME
Indica que RpcServerInqCallAttributes deve preencher o membro ClientPrincipalName dessa estrutura.
RPC_QUERY_CALL_LOCAL_ADDRESS
Indica que RpcServerInqCallAttributes deve preencher o membro CallLocalAddress dessa estrutura.
RPC_QUERY_CLIENT_PID
Indica que RpcServerInqCallAttributes deve preencher o membro ClientPID dessa estrutura. Esse sinalizador só tem suporte para a sequência de protocolo ncalrpc.

ServerPrincipalNameBufferLength

Comprimento de ServerPrincipalName, em bytes. Se não for suficiente, ServerPrincipalName ficará inalterado e ServerPrincipalNameBufferLength indicará o comprimento do buffer necessário, incluindo o caractere NULL de terminação, e ERROR_MORE_DATA será retornado. Se ServerPrincipalNameBufferLength for maior do que o necessário, no retorno, ele será definido como o comprimento real usado, em bytes, incluindo o caractere NULL de terminação. Consulte Observações.

Se a sequência de protocolo não der suporte à recuperação de um nome de entidade de segurança do servidor, ServerPrincipalNameBufferLength será definido como zero no retorno e o buffer apontado por ServerPrincipalName não será modificado. Windows XP: Somente o grupo de ncacn_* de sequências de protocolo dá suporte à recuperação do nome da entidade de segurança do servidor.

Se o sinalizador RPC_QUERY_SERVER_PRINCIPAL_NAME não for especificado, ServerPrincipalNameBufferLength será ignorado. Se ServerPrincipalNameBufferLength não for zero e ServerPrincipalName for NULL, ERROR_INVALID_PARAMETER será retornado.

ServerPrincipalName

Ponteiro para o nome da entidade de segurança do servidor, se solicitado em Sinalizadores e com suporte pela sequência de protocolo. Após qualquer valor retornado diferente de RPC_S_OK ou ERROR_MORE_DATA, o conteúdo de ServerPrincipalName é indefinido e pode ter sido modificado pelo RPC.

ClientPrincipalNameBufferLength

Comprimento do buffer apontado por ClientPrincipalName, em bytes. Se insuficiente, ClientPrincipalName será inalterado e ClientPrincipalNameBufferLength indicará o comprimento do buffer necessário, incluindo o caractere NULL de terminação, e ERROR_MORE_DATA será retornado. Se ClientPrincipalNameBufferLength for maior do que o necessário, ao retornar, ele será definido como o comprimento real usado, em bytes, incluindo o caractere NULL de terminação.

Se a sequência de protocolo não der suporte à recuperação de um nome de entidade de segurança do cliente, ClientPrincipalNameBufferLength será definido como zero no retorno e o buffer apontado por ClientPrincipalName não será modificado. Windows XP: Somente a sequência de protocolo ncalrpc dá suporte à recuperação do nome da entidade de segurança do cliente.

Se o sinalizador RPC_QUERY_CLIENT_PRINCIPAL_NAME não for especificado, ClientPrincipalNameBufferLength será ignorado. Se ClientPrincipalNameBufferLength não for zero e ClientPrincipalName for NULL, ERROR_INVALID_PARAMETER será retornado.

ClientPrincipalName

Ponteiro para o nome da entidade de segurança do cliente, se solicitado no membro Flags e com suporte pela sequência de protocolo. Após qualquer valor retornado diferente de RPC_S_OK ou ERROR_MORE_DATA, o conteúdo de ClientPrincipalName é indefinido e pode ter sido modificado pelo RPC.

AuthenticationLevel

Nível de autenticação para a chamada. Consulte Constantes de nível de autenticação para obter níveis de autenticação compatíveis com RPC.

AuthenticationService

O serviço de autenticação, ou provedor de segurança, usado para fazer a chamada de procedimento remoto.

NullSession

Especifica se uma sessão Null é usada. Zero indica que a chamada não está chegando em uma sessão nula ; qualquer outro valor indica uma sessão nula .

KernelModeCaller

ProtocolSequence

Constante que indica a sequência de protocolo sobre a qual a chamada foi feita.

IsClientLocal

Valor de enumeração RpcCallClientLocality que indica a localidade do cliente (local, remoto ou desconhecido).

ClientPID

Identificador que contém a ID do processo do cliente de chamada. Esse campo só tem suporte para a sequência de protocolo ncalrpc e é preenchido somente quando RPC_QUERY_CLIENT_PID é especificado no parâmetro Flags .

CallStatus

Campo de bits que especifica o status da chamada RPC.

Valor Significado
RPC_CALL_STATUS_IN_PROGRESS
0x01
A chamada está em andamento.
RPC_CALL_STATUS_CANCELLED
0x02
A chamada foi cancelada.
RPC_CALL_STATUS_DISCONNECTED
0x03
O cliente se desconectou.

CallType

Valor de enumeração RpcCallType que indica o tipo da chamada RPC.

CallLocalAddress

Ponteiro para uma estrutura RPC_CALL_LOCAL_ADDRESS que contém informações ao servidor sobre o endereço local no qual a chamada foi feita.

Esse campo não deverá ser NULL se RPC_QUERY_CALL_LOCAL_ADDRESS for especificado em Sinalizadores; caso contrário, RPC_S_INVALID_ARG é retornado.

Se o buffer fornecido pelo aplicativo for insuficiente, RpcServerInqCallAttributes retornará ERROR_MORE_DATA.

OpNum

O valor opnum associado à chamada no arquivo IDL correspondente.

InterfaceUuid

A interface UUID na qual a chamada é feita.

Comentários

A estrutura RPC_CALL_ATTRIBUTES usa um esquema de controle de versão para habilitar a função RpcServerInqCallAttributes para incorporar novos recursos sem precisar introduzir novas funções com identificadores de sufixo. Por exemplo, uma segunda versão do RPC_CALL_ATTRIBUTES, identificada com uma #define simples no cabeçalho, pode adicionar novos membros para facilitar a nova funcionalidade incorporada a versões futuras da função RpcServerInqCallAttributes , sem precisar liberar uma função alternativa correspondente.

O membro Version indica a versão da estrutura de RPC_CALL_ATTRIBUTES (atualmente RPC_CALL_ATTRIBUTES_V1 ou RPC_CALL_ATTRIBUTES_V2) sendo usada pelo aplicativo de chamada. Essa identificação permite que o tempo de execução do RPC forneça compatibilidade com versões anteriores para aplicativos que não usam a versão mais atual da estrutura.

Até que o processo seja encerrado, o ClientPID identifica exclusivamente esse processo no cliente. Quando o processo é encerrado, a ID do processo especificada pelo ClientPID pode ser usada por novos processos.

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows Vista [somente aplicativos da área de trabalho]
Servidor mínimo com suporte Windows Server 2008 [somente aplicativos da área de trabalho]
Cabeçalho rpcasync.h (inclua Rpc.h)

Confira também

RpcServerInqCallAttributes