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 |
---|---|
|
Indica que RpcServerInqCallAttributes deve preencher o membro ServerPrincipalName dessa estrutura. |
|
Indica que RpcServerInqCallAttributes deve preencher o membro ClientPrincipalName dessa estrutura. |
|
Indica que RpcServerInqCallAttributes deve preencher o membro CallLocalAddress dessa estrutura. |
|
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 |
---|---|
|
A chamada está em andamento. |
|
A chamada foi cancelada. |
|
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) |