Função RpcImpersonateClient (rpcdce.h)
Um thread de servidor que está processando chamadas de procedimento remoto do cliente pode chamar a função RpcImpersonateClient para representar o cliente ativo.
Sintaxe
RPC_STATUS RpcImpersonateClient(
RPC_BINDING_HANDLE BindingHandle
);
Parâmetros
BindingHandle
Identificador de associação no servidor que representa uma associação a um cliente. O servidor representa o cliente indicado por esse identificador. Se um valor igual a zero for especificado, o servidor representará o cliente que está sendo atendido por esse thread de servidor.
Valor retornado
Valor | Significado |
---|---|
|
A chamada foi bem-sucedida. |
|
Nenhum cliente está ativo neste thread de servidor. |
|
Não há suporte para a função para o sistema operacional, o transporte ou esse subsistema de segurança. |
|
O identificador de associação era inválido. |
|
Esse foi o tipo errado de associação para a operação. |
|
O servidor não tem permissão para representar o cliente. |
Comentários
Em um aplicativo multithreaded, se a chamada para RpcImpersonateClient estiver com um identificador para outro thread de cliente, você deverá chamar RpcRevertToSelfEx com o identificador para esse thread para encerrar a representação.
Todas as funções que representam marcar para determinar se o chamador dessa função (o RPC Server) tem o privilégio SeImpersonatePrivilege. Se o chamador tiver o SeImpersonatePrivilege ou se a identidade autenticada for a mesma que a identidade do chamador dessa função, a representação solicitada será permitida. Caso contrário, a representação terá êxito apenas no nível de Identificação.
Windows XP/2000/NT: O privilégio SeImpersonatePrivilege não tem suporte até o Windows XP com Service Pack 2 (SP2).
Comentários de segurança
Se a chamada para RpcImpersonateClient falhar por qualquer motivo, a conexão do cliente não será representada e a solicitação do cliente será feita no contexto de segurança do processo. Se o processo estiver em execução como uma conta altamente privilegiada, como LocalSystem ou como membro de um grupo administrativo, o usuário poderá executar ações que, de outra forma, não seriam permitidas. Portanto, é importante sempre marcar o valor retornado da chamada e, se falhar, gerar um erro; não continuar a execução da solicitação do cliente.Requisitos
Cliente mínimo com suporte | Windows 2000 Professional [somente aplicativos da área de trabalho] |
Servidor mínimo com suporte | Windows 2000 Server [somente aplicativos da área de trabalho] |
Plataforma de Destino | Windows |
Cabeçalho | rpcdce.h |
Biblioteca | Rpcrt4.lib |
DLL | Rpcrt4.dll |