Condividi tramite


Metodo ISecurityProperty::GetDirectCallerSID (comsvcs.h)

Recupera l'identificatore di sicurezza del processo esterno che ha chiamato il metodo attualmente in esecuzione. È anche possibile ottenere queste informazioni usando ISecurityCallContext.

Sintassi

HRESULT GetDirectCallerSID(
  [out] PSID *pSID
);

Parametri

[out] pSID

Riferimento all'ID di sicurezza del processo da cui è stato richiamato il metodo corrente.

Valore restituito

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

Codice restituito Descrizione
S_OK
ID di sicurezza del processo che ha chiamato il metodo corrente viene restituito nel parametro pSid.
CONTEXT_E_NOCONTEXT
L'oggetto corrente non ha un contesto associato a esso perché il componente non è stato importato in un'applicazione o l'oggetto non è stato creato con uno dei metodi COM+ CreateInstance.

Commenti

Utilizzare il metodo GetDirectCallerSID per determinare l'ID di sicurezza del processo che ha chiamato il metodo attualmente in esecuzione dell'oggetto. La sicurezza viene applicata tra i limiti del processo. Ciò significa che l'ID di sicurezza restituito da GetDirectCallerSID è l'ID di sicurezza associato al processo chiamato nel processo in cui l'oggetto corrente è in esecuzione, non necessariamente il chiamante immediato nell'oggetto stesso. Se un oggetto chiama in un altro oggetto nello stesso processo, quando il secondo oggetto chiama GetDirectCallerSID ottiene l'ID di sicurezza del chiamante più immediato al di fuori del proprio limite di processo, non l'ID di sicurezza dell'oggetto che lo chiama direttamente.

Gli scenari seguenti illustrano la funzionalità del metodo GetDirectCallerSID :

  • Un processo di base in esecuzione su Server A, come utente A, chiama in Object X in Server B, in esecuzione come utente B. Quindi Object X chiama in Object Y, in esecuzione in Server C. Se Object Y chiama GetDirectCallerSID, viene restituito l'ID di sicurezza dell'utente B.
  • Un processo di base, in esecuzione su Server A come utente A, chiama in Object X in Server B, in esecuzione come utente B. Quindi Object X chiama in Object Y, in esecuzione nello stesso processo di Object X, anche in Server B. Quando Object Y chiama GetDirectCallerSID, viene restituito l'ID di sicurezza dell'utente A, non l'ID di sicurezza dell'utente B.
È necessario chiamare ISecurityProperty::ReleaseSID in un ID di sicurezza al termine dell'uso.

Requisiti

Requisito Valore
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

ISecurityProperty