ISecurityProperty::GetOriginalCallerSID 方法 (comsvcs.h)
擷取起始呼叫序列之基底進程的安全性標識碼,從中呼叫目前方法。
取得原始呼叫端相關信息的慣用方式是使用 ISecurityCallContext 介面。
語法
HRESULT GetOriginalCallerSID(
[out] PSID *pSID
);
參數
[out] pSID
起始呼叫目前方法之呼叫序列之基底進程之安全性標識符的參考。
傳回值
這個方法可以傳回標準傳回值E_INVALIDARG、E_OUTOFMEMORY、E_UNEXPECTED和E_FAIL,以及下列值。
傳回碼 | 描述 |
---|---|
|
在 參數 pSid 中會傳回產生呼叫目前物件之基底進程的安全性標識碼。 |
|
目前的 對象沒有與其相關聯的內容,因為元件未匯入應用程式,或是未使用其中一個 COM+ CreateInstance 方法建立物件。 |
備註
您可以使用 GetOriginalCallerSID 方法來判斷起始呼叫序列之原始進程的安全性識別碼,該呼叫順序是從中呼叫目前方法,而不是來源程式 (或建立者) 進程。 雖然物件的指標可以透過一系列伺服器和用戶傳遞, 但 GetOriginalCallerSID 一律會傳回進程的第一部伺服器和使用者,即使該使用者不是物件的原始建立者也一樣。 下列案例說明 GetOriginalCallerSID 方法的功能。
- 以使用者 A 身分在伺服器 A 上執行的基底進程 1,會在伺服器 B 上建立物件 X,以使用者 B 身分執行。
- 基底進程 1 會將其物件 X 上的參考傳遞至基底進程 2,以使用者 D 身分在伺服器 D 上執行。
- 基底進程 2 會使用該參考來呼叫物件 X。
- 物件 X 會呼叫物件 Y,並在伺服器 C 上執行。如果物件 Y 接著呼叫 GetOriginalCallerSID,則會傳回使用者 D 的安全性識別碼,而不是最初建立對象的使用者 A。
注意 通常,物件的原始呼叫端與原始建立者的程式相同。 原始呼叫者和原始建立者的唯一情況是原始建立者將參考傳遞給另一個進程,而另一個進程會起始呼叫順序 (,如上述範例) 所示。
當您完成使用時,必須在安全性標識符上呼叫 ReleaseSID 。
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | Windows 2000 Professional [僅限傳統型應用程式] |
最低支援的伺服器 | Windows 2000 Server [僅限桌面應用程式] |
目標平台 | Windows |
標頭 | comsvcs.h |