Compartilhar via


Método SecurityProperty::GetOriginalCallerName (comsvcs.h)

Recupera o nome de usuário associado ao processo base que iniciou a sequência de chamadas das quais a chamada para o objeto atual foi originada.

Sintaxe

HRESULT GetOriginalCallerName(
  [out] BSTR *bstrUserName
);

Parâmetros

[out] bstrUserName

Uma referência ao nome de usuário associado ao processo base que iniciou a sequência de chamadas das quais a chamada para o objeto atual foi originada.

Valor retornado

Esse método pode retornar os valores retornados padrão E_INVALIDARG, E_OUTOFMEMORY, E_UNEXPECTED, E_FAIL e S_OK.

Comentários

Geralmente, o chamador original de um objeto é o mesmo processo que seu criador original. A única situação em que o chamador original e o criador original seriam diferentes é uma em que o criador original passa uma referência a outro processo e o outro processo inicia a sequência de chamadas.

O cenário a seguir ilustra a funcionalidade desse método:

  1. O processo base 1, em execução no servidor A como usuário A, cria o objeto X, no servidor B, em execução como usuário B.
  2. Em seguida, o processo base 1 passa sua referência no objeto X para o processo base 2, em execução no servidor D como usuário D.
  3. O processo base 2 usa essa referência para chamar o objeto X.
  4. Em seguida, o objeto X chama o objeto Y, em execução no servidor C. Se o objeto Y chamar GetOriginalCallerName, o nome do usuário D será retornado, não o usuário A, que originalmente criou o objeto.
O caminho para o chamador original será interrompido se qualquer objeto ao longo da cadeia tiver sido criado por outros meios além de ObjectContext::CreateInstance ou ITransactionContext::CreateInstance. Por exemplo, se o processo base 1 usa CoCreateInstance para criar o objeto X, quando o objeto Y chama GetOriginalCallerName, o nome que ele recebe de volta será o nome do usuário B, não o usuário D. Isso ocorre porque a sequência de chamadas é rastreada de volta pelo contexto dos objetos e COM+ pode criar um contexto somente para um objeto criado com ObjectContext::CreateInstance ou ITransactionContext::CreateInstance.

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 comsvcs.h

Confira também

SecurityProperty