Share via


SecurityProperty::GetOriginalCallerName-Methode (comsvcs.h)

Ruft den Benutzernamen ab, der dem Basisprozess zugeordnet ist, der die Aufrufsequenz initiiert hat, aus der der Aufruf des aktuellen Objekts stammt.

Syntax

HRESULT GetOriginalCallerName(
  [out] BSTR *bstrUserName
);

Parameter

[out] bstrUserName

Ein Verweis auf den Benutzernamen, der dem Basisprozess zugeordnet ist, der die Aufrufsequenz initiiert hat, aus der der Aufruf des aktuellen Objekts stammt.

Rückgabewert

Diese Methode kann die Standardrückgabewerte E_INVALIDARG, E_OUTOFMEMORY, E_UNEXPECTED, E_FAIL und S_OK zurückgeben.

Hinweise

Im Allgemeinen ist der ursprüngliche Aufrufer eines Objekts derselbe Prozess wie sein ursprünglicher Ersteller. Die einzige Situation, in der sich der ursprüngliche Aufrufer und der ursprüngliche Ersteller unterscheiden, ist eine, in der der ursprüngliche Ersteller einen Verweis auf einen anderen Prozess übergibt und der andere Prozess die Aufrufsequenz initiiert.

Im folgenden Szenario wird die Funktionalität dieser Methode veranschaulicht:

  1. Der Basisprozess 1, der auf Server A als Benutzer A ausgeführt wird, erstellt Objekt X auf Server B, das als Benutzer B ausgeführt wird.
  2. Dann übergibt Der Basisprozess 1 seinen Verweis auf Objekt X an den Basisprozess 2, der auf Server D als Benutzer D ausgeführt wird.
  3. Basisprozess 2 verwendet diesen Verweis, um Objekt X aufzurufen.
  4. Objekt X ruft dann Objekt Y auf, das auf Server C ausgeführt wird. Wenn Objekt Y dann GetOriginalCallerName aufruft, wird der Name des Benutzers D zurückgegeben, nicht Benutzer A, der das Objekt ursprünglich erstellt hat.
Der Pfad zum ursprünglichen Aufrufer wird unterbrochen, wenn ein Objekt entlang der Kette auf andere Weise als ObjectContext::CreateInstance oder ITransactionContext::CreateInstance erstellt wurde. Wenn der Basisprozess 1 beispielsweise CoCreateInstance verwendet, um Objekt X zu erstellen, wenn Objekt Y GetOriginalCallerName aufruft, lautet der Zurückrufname der Name von Benutzer B, nicht Benutzer D. Dies liegt daran, dass die Aufrufsequenz durch den Kontext der Objekte zurückverfolgt wird und COM+ nur einen Kontext für ein Objekt erstellen kann, das entweder mit ObjectContext::CreateInstance oder ITransactionContext::CreateInstance erstellt wird.

Anforderungen

   
Unterstützte Mindestversion (Client) Windows 2000 Professional [nur Desktop-Apps]
Unterstützte Mindestversion (Server) Windows 2000 Server [nur Desktop-Apps]
Zielplattform Windows
Kopfzeile comsvcs.h

Weitere Informationen

SecurityProperty