Compartilhar via


Método ISecurityProperty::GetDirectCallerSID (comsvcs.h)

Recupera o identificador de segurança do processo externo que chamou o método em execução no momento. Você também pode obter essas informações usando ISecurityCallContext.

Sintaxe

HRESULT GetDirectCallerSID(
  [out] PSID *pSID
);

Parâmetros

[out] pSID

Uma referência à ID de segurança do processo do qual o método atual foi invocado.

Retornar valor

Esse método pode retornar os valores retornados padrão E_INVALIDARG, E_OUTOFMEMORY, E_UNEXPECTED e E_FAIL, bem como os valores a seguir.

Código de retorno Descrição
S_OK
A ID de segurança do processo que chamou o método atual é retornada no parâmetro pSid.
CONTEXT_E_NOCONTEXT
O objeto atual não tem um contexto associado a ele porque o componente não foi importado para um aplicativo ou o objeto não foi criado com um dos métodos COM+ CreateInstance.

Comentários

Use o método GetDirectCallerSID para determinar a ID de segurança do processo que chamou o método em execução do objeto no momento. A segurança é imposta entre os limites do processo. Isso significa que a ID de segurança retornada por GetDirectCallerSID é a ID de segurança associada ao processo que chamou o processo no qual o objeto atual está em execução, não necessariamente o chamador imediato no próprio objeto. Se um objeto chama outro objeto dentro do mesmo processo, quando o segundo objeto chama GetDirectCallerSID , ele obtém a ID de segurança do chamador mais imediato fora de seu próprio limite de processo, não a ID de segurança do objeto que chamou diretamente nele.

Os cenários a seguir ilustram a funcionalidade do método GetDirectCallerSID :

  • Um processo base em execução no Servidor A, como usuário A, chama o Objeto X no Servidor B, em execução como usuário B. Em seguida, o Objeto X chama o Objeto Y, em execução no Servidor C. Se o Objeto Y chamar GetDirectCallerSID, a ID de segurança do usuário B será retornada.
  • Um processo base, em execução no Servidor A como usuário A, chama o Objeto X no Servidor B, em execução como usuário B. Em seguida, o Objeto X chama o Objeto Y, em execução no mesmo processo que o Objeto X, também no Servidor B. Quando o Objeto Y chama GetDirectCallerSID, a ID de segurança do usuário A é retornada, não a ID de segurança do usuário B.
Você deve chamar ISecurityProperty::ReleaseSID em uma ID de segurança quando terminar de usá-la.

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows 2000 Professional [somente aplicativos da área de trabalho]
Servidor mínimo com suporte Windows 2000 Server [somente aplicativos da área de trabalho]
Plataforma de Destino Windows
Cabeçalho comsvcs.h

Confira também

ISecurityProperty