Condividi tramite


Metodo SecurityProperty::GetOriginalCallerName (comsvcs.h)

Recupera il nome utente associato al processo di base che ha avviato la sequenza di chiamate da cui ha avuto origine la chiamata all'oggetto corrente.

Sintassi

HRESULT GetOriginalCallerName(
  [out] BSTR *bstrUserName
);

Parametri

[out] bstrUserName

Riferimento al nome utente associato al processo di base che ha avviato la sequenza di chiamate da cui ha avuto origine la chiamata all'oggetto corrente.

Valore restituito

Questo metodo può restituire i valori restituiti standard E_INVALIDARG, E_OUTOFMEMORY, E_UNEXPECTED, E_FAIL e S_OK.

Commenti

In genere, il chiamante originale di un oggetto è lo stesso processo del creatore originale. L'unica situazione in cui il chiamante originale e il creatore originale sarebbero diversi è quello in cui l'autore originale passa un riferimento a un altro processo e l'altro processo avvia la sequenza di chiamata.

Lo scenario seguente illustra le funzionalità di questo metodo:

  1. Il processo di base 1, in esecuzione nel server A come utente A, crea l'oggetto X, nel server B, in esecuzione come utente B.
  2. Il processo di base 1 passa quindi il riferimento all'oggetto X al processo di base 2, in esecuzione nel server D come utente D.
  3. Il processo di base 2 usa tale riferimento per chiamare nell'oggetto X.
  4. L'oggetto X chiama quindi nell'oggetto Y, in esecuzione nel server C. Se l'oggetto Y chiama GetOriginalCallerName, viene restituito il nome dell'utente D, non l'utente A, che ha originariamente creato l'oggetto.
Il percorso del chiamante originale viene interrotto se un oggetto lungo la catena è stato creato da un altro mezzo rispetto a ObjectContext::CreateInstance o ITransactionContext::CreateInstance. Ad esempio, se il processo di base 1 usa CoCreateInstance per creare l'oggetto X, quando l'oggetto Y chiama GetOriginalCallerName, il nome restituito sarà il nome dell'utente B, non l'utente D. Ciò avviene perché la sequenza di chiamata viene tracciata nel contesto degli oggetti e COM+ può creare un contesto solo per un oggetto creato con ObjectContext::CreateInstance o ITransactionContext::CreateInstance.

Requisiti

   
Client minimo supportato Windows 2000 Professional [solo app desktop]
Server minimo supportato Windows 2000 Server [solo app desktop]
Piattaforma di destinazione Windows
Intestazione comsvcs.h

Vedi anche

SecurityProperty