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

Recupera el nombre de usuario asociado al proceso base que inició la secuencia de llamadas desde la que se originó la llamada al objeto actual.

Sintaxis

HRESULT GetOriginalCallerName(
  [out] BSTR *bstrUserName
);

Parámetros

[out] bstrUserName

Referencia al nombre de usuario asociado al proceso base que inició la secuencia de llamadas desde la que se originó la llamada al objeto actual.

Valor devuelto

Este método puede devolver los valores devueltos estándar E_INVALIDARG, E_OUTOFMEMORY, E_UNEXPECTED, E_FAIL y S_OK.

Comentarios

Por lo general, el autor de la llamada original de un objeto es el mismo proceso que su creador original. La única situación en la que el autor de la llamada original y el creador original serían diferentes es uno en el que el creador original pasa una referencia a otro proceso y el otro proceso inicia la secuencia de llamadas.

En el escenario siguiente se muestra la funcionalidad de este método:

  1. El proceso base 1, que se ejecuta en el servidor A como usuario A, crea el objeto X, en el servidor B, que se ejecuta como usuario B.
  2. A continuación, el proceso base 1 pasa su referencia en el objeto X al proceso base 2, que se ejecuta en el servidor D como usuario D.
  3. El proceso base 2 usa esa referencia para llamar al objeto X.
  4. A continuación, el objeto X llama al objeto Y, ejecutándose en el servidor C. Si el objeto Y llama a GetOriginalCallerName, se devuelve el nombre del usuario D, no el usuario A, que creó originalmente el objeto .
La ruta de acceso al autor de la llamada original se interrumpe si algún objeto a lo largo de la cadena se creó por algún otro medio distinto de ObjectContext::CreateInstance o ITransactionContext::CreateInstance. Por ejemplo, si el proceso base 1 usa CoCreateInstance para crear el objeto X, cuando el objeto Y llama a GetOriginalCallerName, el nombre que devuelve será el nombre del usuario B, no del usuario D. Esto se debe a que la secuencia de llamadas se realiza un seguimiento a través del contexto de los objetos y COM+ solo puede crear un contexto para un objeto que se crea con ObjectContext::CreateInstance o ITransactionContext::CreateInstance.

Requisitos

   
Cliente mínimo compatible Windows 2000 Professional [solo aplicaciones de escritorio]
Servidor mínimo compatible Windows 2000 Server [solo aplicaciones de escritorio]
Plataforma de destino Windows
Encabezado comsvcs.h

Consulte también

SecurityProperty