SecLookupAccountSid 함수(ntifs.h)

SecLookupAccountSid 는 SID(보안 식별자)를 입력으로 허용합니다. 이 SID에 대한 계정 이름과 이 SID가 발견된 첫 번째 도메인의 이름을 검색합니다.

구문

KSECDDDECLSPEC NTSTATUS SEC_ENTRY SecLookupAccountSid(
  [in]            PSID            Sid,
  [out]           PULONG          NameSize,
  [in, out]       PUNICODE_STRING NameBuffer,
  [out]           PULONG          DomainSize,
  [out, optional] PUNICODE_STRING DomainBuffer,
  [out]           PSID_NAME_USE   NameUse
);

매개 변수

[in] Sid

조회할 SID에 대한 포인터입니다.

[out] NameSize

NameBuffer의 크기를 지정하는 변수에 대한 포인터입니다. 입력에서 이 값은 입력 NameBuffer의 크기(바이트)를 지정합니다. 버퍼가 너무 작기 때문에 함수가 실패하면 이 변수는 필요한 버퍼 크기를 받습니다. 성공 시 이 변수에는 반환된 NameBuffer의 크기가 포함됩니다.

[in, out] NameBuffer

Sid와 연결된 계정의 이름을 받는 버퍼에 대한 포인터입니다. 이 매개 변수가 NULL이면 NameSize 는 0이 됩니다.

[out] DomainSize

DomainBuffer 매개 변수의 크기를 지정하는 ULONG에 대한 포인터입니다. 버퍼가 너무 작기 때문에 함수가 실패하면 이 변수는 필요한 버퍼 크기를 받습니다. DomainBuffer 매개 변수가 NULL이면 이 매개 변수는 0으로 설정됩니다.

[out, optional] DomainBuffer

이 SID가 있는 첫 번째 도메인의 이름을 받는 버퍼에 대한 포인터입니다.

[out] NameUse

계정 유형을 수신하는 SID_NAME_USE 열거형 형식에 대한 포인터입니다.

반환 값

SecLookupAccountSid 는 성공 시 STATUS_SUCCESS 반환하거나 실패 시 다음 오류 코드 중 하나를 반환합니다.

반환 코드 설명
SEC_E_INTERNAL_ERROR LSA(로컬 시스템 기관) 또는 LPC(로컬 프로시저 호출)에 보안 공급자에 연결하는 동안 내부 오류가 발생했습니다.
STATUS_ACCESS_DENIED 현재 실행 중인 스레드와 연결된 프로세스 ID가 현재 프로세스 ID와 일치하지 않습니다.
STATUS_BUFFER_TOO_SMALL NameBuffer 또는 ReferencedDomain 매개 변수의 버퍼 크기가 너무 작습니다.
STATUS_INVALID_PARAMETER Name 매개 변수의 길이가 LSA(로컬 시스템 기관)에 대한 메시지에서 허용되는 길이를 초과했습니다.
STATUS_NO_MEMORY 이 함수에서 사용하는 임시 내부 버퍼에 충분한 메모리를 할당할 수 없었습니다.
STATUS_NONE_MAPPED Sid 매개 변수를 찾을 수 없습니다.
STATUS_PROCESS_IS_TERMINATING 이 프로세스가 종료되었으므로 LPC(로컬 프로시저 호출) 연결을 설정할 수 없습니다.

설명

SecLookupAccountSid 는 먼저 잘 알려진 SID 목록을 확인하여 지정된 SID의 이름을 찾으려고 시도합니다. 제공된 SID가 잘 알려진 SID에 해당하지 않는 경우 함수는 기본 제공 및 관리적으로 정의된 로컬 계정을 확인합니다. 다음으로, 함수는 주 도메인을 확인합니다. 주 도메인에서 인식할 수 없는 보안 식별자는 해당 SID 접두사에 해당하는 신뢰할 수 있는 도메인에 대해 검사됩니다.

함수가 SID에 대한 계정 이름을 찾을 수 없는 경우 SecLookupAccountSid 가 실패합니다. 네트워크 시간 제한으로 인해 함수가 이름을 찾을 수 없는 경우 이 문제가 발생할 수 있습니다. 로그온 세션을 식별하는 로그온 SID와 같이 해당 계정 이름이 없는 SID에도 발생합니다.

로컬 계정, 로컬 도메인 계정 및 명시적으로 신뢰할 수 있는 도메인 계정에 대한 SID를 조회하는 것 외에도 SecLookupAccountSid 는 포리스트에 있는 계정의 SIDhistory 필드에만 표시되는 SID를 포함하여 포리스트의 모든 도메인에 있는 모든 계정에 대한 SID를 조회할 수 있습니다. SIDhistory 필드는 다른 도메인에서 이동된 계정의 이전 SID를 저장합니다. SID를 조회하기 위해 SecLookupAccountSid 는 포리스트의 글로벌 카탈로그를 쿼리합니다.

SecLookupAccountSid 는 Win32 LookupAccountSid 함수와 동일합니다.

SecLookupAccountSid 는 사용자 모드 도우미 서비스를 사용하여 이 함수를 구현하는 ksecdd 드라이버에서 내보냅니다. 따라서 파일 시스템 내에서 이 함수를 사용하려면 사용자 모드 서비스와의 통신에 대한 일반적인 규칙을 준수해야 합니다. 파일 I/O 페이징 중에는 SecLookupAccountSid를 사용할 수 없습니다.

요구 사항

   
지원되는 최소 클라이언트 Windows XP
대상 플랫폼 유니버설
헤더 ntifs.h(Ntifs.h 포함)
라이브러리 Ksecdd.lib
IRQL <= APC_LEVEL

참고 항목

Sid

SID_NAME_USE

SecLookupAccountName

SecLookupWellKnownSid