SeAccessCheck 함수(wdm.h)

SeAccessCheck 는 요청된 액세스 권한을 보안 설명자 및 개체 소유자로 보호되는 개체에 부여할 수 있는지 여부를 결정합니다.

구문

BOOLEAN SeAccessCheck(
  [in]  PSECURITY_DESCRIPTOR      SecurityDescriptor,
  [in]  PSECURITY_SUBJECT_CONTEXT SubjectSecurityContext,
  [in]  BOOLEAN                   SubjectContextLocked,
  [in]  ACCESS_MASK               DesiredAccess,
  [in]  ACCESS_MASK               PreviouslyGrantedAccess,
  [out] PPRIVILEGE_SET            *Privileges,
  [in]  PGENERIC_MAPPING          GenericMapping,
  [in]  KPROCESSOR_MODE           AccessMode,
  [out] PACCESS_MASK              GrantedAccess,
  [out] PNTSTATUS                 AccessStatus
);

매개 변수

[in] SecurityDescriptor

액세스되는 개체를 보호하는 보안 설명자를 설명하는 SECURITY_DESCRIPTOR 구조체에 대한 포인터입니다.

[in] SubjectSecurityContext

주체의 캡처된 보안 컨텍스트를 지정하는 불투명 SECURITY_SUBJECT_CONTEXT 구조체에 대한 포인터입니다.

[in] SubjectContextLocked

사용자의 주체 컨텍스트가 잠겨 있는지 여부를 나타내는 부울 값이므로 다시 잠글 필요가 없습니다.

[in] DesiredAccess

호출자가 획득하려는 액세스 권한에 대한 ACCESS_MASK 비트 마스크를 지정합니다. 호출자가 MAXIMUM_ALLOWED 비트를 설정하는 경우 루틴은 모든 DACL 검사를 수행합니다. 그러나 호출자가 ACCESS_SYSTEM_SECURITY 또는 WRITE_OWNER 비트를 설정하여 특별히 요청하지 않는 한 SeAccessCheck 는 권한 검사를 수행하지 않습니다.

[in] PreviouslyGrantedAccess

권한 보유의 결과로 부여된 액세스 권한과 같이 이미 부여된 액세스 권한의 ACCESS_MASK 비트 마스크를 지정합니다.

[out] Privileges

액세스 유효성 검사의 일부로 사용될 PRIVILEGE_SET 구조체의 주소로 설정할 호출자 제공 변수에 대한 포인터이거나 이 매개 변수는 NULL일 수 있습니다. 반환된 버퍼(있는 경우)는 SeFreePrivileges를 사용하여 호출자가 해제해야 합니다.

[in] GenericMapping

이 개체 형식과 연결된 GENERIC_MAPPING 구조체에 대한 포인터입니다. 이 값은 각 GENERIC_XXX 액세스 권한에 내포된 특정 액세스 권한을 지정합니다.

[in] AccessMode

검사 사용할 액세스 모드(UserMode 또는 KernelMode)를 지정합니다.

[out] GrantedAccess

부여된 액세스 권한을 나타내는 반환된 액세스 마스크에 대한 포인터입니다. 호출자가 MAXIMUM_ALLOWED 지정하고 SecurityDescriptor 의 DACL이 NULL인 경우 루틴은 호출자가 명시적으로 요청하는 추가 액세스와 GENERIC_ALL 반환합니다.

[out] AccessStatus

액세스가 거부된 이유를 나타내는 상태 값에 대한 포인터입니다.

반환 값

액세스가 허용되면 SeAccessCheck 은 TRUE를 반환합니다.

설명

SeAccessCheck 는 요청되는 액세스에 따라 SeTakeOwnershipPrivilegeSeSecurityPrivilege에 대한 권한 테스트를 수행할 수 있습니다. 운영 체제의 향후 릴리스에서 추가 권한 테스트를 수행할 수 있습니다.

이 루틴은 WRITE_DAC 또는 READ_CONTROL 액세스 권한을 부여하기 위해 호출자가 개체의 소유자인지 여부를 검사 수도 있습니다.

이 루틴이 FALSE를 반환하는 경우 호출자는 반환된 AccessStatus 를 반환 값으로 사용해야 합니다. 즉, 호출자는 반환 값 STATUS_ACCESS_DENIED 또는 기타 특정 STATUS_XXX 값을 하드 코딩하지 않아야 합니다.

보안 및 액세스 제어에 대한 자세한 내용은 드라이버 개발자를 위한 Windows 보안 모델 및 Microsoft Windows SDK 이러한 topics 대한 설명서를 참조하세요.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows 2000
대상 플랫폼 유니버설
헤더 wdm.h(Wdm.h, Ntddk.h, Ntifs.h 포함)
라이브러리 NtosKrnl.lib
DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL
DDI 규정 준수 규칙 HwStorPortProhibitedDDIs(storport), PowerIrpDDis(wdm)

추가 정보

ACCESS_MASK

GENERIC_MAPPING

IoGetFileObjectGenericMapping

PRIVILEGE_SET

SE_EXPORTS

SECURITY_DESCRIPTOR

SECURITY_SUBJECT_CONTEXT

SeFreePrivileges

SeValidSecurityDescriptor