Bagikan melalui


Metode ISecurityProperty::GetOriginalCallerSID (comsvcs.h)

Mengambil pengidentifikasi keamanan dari proses dasar yang memulai urutan panggilan dari mana metode saat ini dipanggil.

Cara yang disukai untuk mendapatkan informasi tentang pemanggil asli adalah dengan menggunakan antarmuka ISecurityCallContext .

Sintaks

HRESULT GetOriginalCallerSID(
  [out] PSID *pSID
);

Parameter

[out] pSID

Referensi ke ID keamanan dari proses dasar yang memulai urutan panggilan dari mana metode saat ini dipanggil.

Nilai kembali

Metode ini dapat mengembalikan nilai pengembalian standar E_INVALIDARG, E_OUTOFMEMORY, E_UNEXPECTED, dan E_FAIL, serta nilai berikut.

Menampilkan kode Deskripsi
S_OK
ID keamanan dari proses dasar yang berasal dari panggilan ke objek saat ini dikembalikan dalam parameter pSid.
CONTEXT_E_NOCONTEXT
Objek saat ini tidak memiliki konteks yang terkait dengannya karena komponen tidak diimpor ke dalam aplikasi atau objek tidak dibuat dengan salah satu metode COM+ CreateInstance .

Keterangan

Anda menggunakan metode GetOriginalCallerSID untuk menentukan ID keamanan proses asli yang memulai urutan panggilan dari mana metode saat ini dipanggil, bukan pencetus (atau pembuat) proses. Meskipun pointer ke objek dapat diteruskan melalui serangkaian server dan pengguna, GetOriginalCallerSID selalu mengembalikan server pertama dan pengguna proses, bahkan jika pengguna tersebut bukan pembuat asli objek. Skenario berikut mengilustrasikan fungsionalitas metode GetOriginalCallerSID .

Diagram memperlihatkan hasil metode GetOriginalCallerSID untuk referensi objek yang diteruskan di antara empat server yang menjalankan dua proses dasar.

  1. Proses Dasar 1, berjalan di Server A sebagai pengguna A, membuat Objek X, di Server B, berjalan sebagai pengguna B.
  2. Proses Dasar 1 meneruskan referensinya pada Objek X ke Proses Dasar 2, berjalan di Server D sebagai pengguna D.
  3. Proses Dasar 2 menggunakan referensi tersebut untuk memanggil objek X.
  4. Panggilan Objek X ke Objek Y, berjalan di Server C. Jika Object Y kemudian memanggil GetOriginalCallerSID, ID keamanan pengguna D dikembalikan, bukan pengguna A, yang awalnya membuat objek.
Catatan Biasanya, pemanggil asli objek adalah proses yang sama dengan pembuat aslinya. Satu-satunya situasi di mana penelepon asli dan pembuat asli akan berbeda adalah satu di mana pembuat asli meneruskan referensi ke proses lain dan proses lain memulai urutan panggilan (seperti dalam contoh sebelumnya).
 
Jalur ke pemanggil asli rusak jika ada objek di sepanjang rantai yang dibuat dengan beberapa cara selain IObjectContext::CreateInstance atau ITransactionContext::CreateInstance. Misalnya, jika Proses Dasar 1 menggunakan CoCreateInstance untuk membuat Objek X, ketika Object Y memanggil GetOriginalCallerSID ID keamanan yang didapatkannya kembali adalah ID keamanan pengguna B, bukan pengguna D. Ini karena urutan panggilan ditelusuri kembali melalui konteks objek dan COM+ hanya dapat membuat konteks untuk objek yang dibuat dengan IObjectContext::CreateInstance atau ITransactionContext::CreateInstance.

Anda harus memanggil ReleaseSID pada ID keamanan setelah selesai menggunakannya.

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Windows 2000 Professional [hanya aplikasi desktop]
Server minimum yang didukung Windows 2000 Server [hanya aplikasi desktop]
Target Platform Windows
Header comsvcs.h

Lihat juga

ISecurityProperty