ACCESS_STATE 구조체(wdm.h)

ACCESS_STATE 구조는 진행 중인 액세스의 상태를 설명합니다. 개체의 주체 컨텍스트, 나머지 원하는 액세스 형식, 부여된 액세스 형식 및 필요에 따라 액세스를 허용하는 데 사용된 권한을 나타내는 권한 집합이 포함됩니다.

드라이버는 ACCESS_STATE 구조를 직접 수정하지 않습니다. 이 구조를 만들고 조작하려면 참고 항목 섹션에 나열된 지원 루틴을 사용합니다.

구문

typedef struct _ACCESS_STATE {
  LUID                     OperationID;
  BOOLEAN                  SecurityEvaluated;
  BOOLEAN                  GenerateAudit;
  BOOLEAN                  GenerateOnClose;
  BOOLEAN                  PrivilegesAllocated;
  ULONG                    Flags;
  ACCESS_MASK              RemainingDesiredAccess;
  ACCESS_MASK              PreviouslyGrantedAccess;
  ACCESS_MASK              OriginalDesiredAccess;
  SECURITY_SUBJECT_CONTEXT SubjectSecurityContext;
  PSECURITY_DESCRIPTOR     SecurityDescriptor;
  PVOID                    AuxData;
  union {
    INITIAL_PRIVILEGE_SET InitialPrivilegeSet;
    PRIVILEGE_SET         PrivilegeSet;
  } Privileges;
  BOOLEAN                  AuditPrivileges;
  UNICODE_STRING           ObjectName;
  UNICODE_STRING           ObjectTypeName;
} ACCESS_STATE, *PACCESS_STATE;

멤버

OperationID

이 액세스와 관련된 작업의 식별자입니다. 이 멤버는 AuxData 멤버의 TransactionId로 대체되며 현재 드라이버에서 사용되지 않습니다.

SecurityEvaluated

보안이 액세스 검사 일부로 평가되었는지 여부를 지정하는 부울 값입니다. 이 멤버는 현재 드라이버에서 사용되지 않습니다.

GenerateAudit

액세스에서 감사를 생성해야 하는지 여부를 지정하는 부울 값입니다. 이 멤버는 현재 드라이버에서 사용되지 않습니다.

GenerateOnClose

생성되는 핸들을 닫을 때 감사를 생성해야 하는지 여부를 지정하는 부울 값입니다. 이 멤버는 현재 드라이버에서 사용되지 않습니다.

PrivilegesAllocated

액세스 검사 일부로 권한이 할당되었는지 여부를 지정하는 부울 값입니다. 이 멤버는 현재 드라이버에서 사용되지 않습니다.

Flags

액세스에 대한 비트 필드 플래그를 포함하는 32비트 값입니다. 드라이버는 트래버스 액세스 플래그(TOKEN_HAS_TRAVERSE_PRIVILEGE)에 대해 검사 수 있습니다. 트래버스 액세스를 검사 방법에 대한 자세한 내용은 IRP_MJ_CREATE 대한 트래버스 권한 확인을 참조하세요. 드라이버는 TOKEN_IS_RESTRICTED 플래그에 대해 검사 수도 있습니다. 이러한 플래그는 Ntifs.h에 정의되어 있습니다.

RemainingDesiredAccess

호출자에게 아직 부여되지 않은 액세스 권한을 설명하는 ACCESS_MASK 형식입니다. 드라이버는 이 멤버를 사용하여 Windows 보안 시스템에서 액세스 권한을 부여할 수 있는지 확인합니다. 액세스 권한을 부여할 수 있는 경우 드라이버는 PreviouslyGrantedAccessRemainingDesiredAccess 멤버를 적절하게 업데이트합니다.

PreviouslyGrantedAccess

보안 참조 모니터 루틴 중 하나의 호출자에게 이미 부여된 액세스에 대한 정보를 지정하는 ACCESS_MASK 형식입니다. Windows 보안 시스템은 호출자의 권한(예: 오른쪽 트래버스)(하위 디렉터리 또는 파일 열기의 일부로 디렉터리를 트래버스하는 기능)과 같은 특정 권한을 부여합니다.

OriginalDesiredAccess

호출자가 요청한 원래 액세스 권한이 포함된 ACCESS_MASK 형식입니다.

SubjectSecurityContext

액세스의 유효성을 검사하고 감사하는 데 사용되는 주체 보안 컨텍스트에 대한 정보를 포함하는 SECURITY_SUBJECT_CONTEXT 구조체입니다.

SecurityDescriptor

이 액세스와 관련된 개체에 대한 보안 정보를 포함하는 SECURITY_DESCRIPTOR 구조체에 대한 포인터입니다.

AuxData

액세스에 대한 보조 데이터를 포함하는 메모리 블록에 대한 포인터입니다.

Privileges

다음 구조체 중 하나를 포함할 수 있는 공용 구조체입니다. 이 공용 구조체를 사용하면 액세스 상태 구조에 세 가지 권한을 포함할 수 있습니다. 작업 중에 더 많은 권한이 필요한 경우 AuxData 멤버 확장에 할당됩니다. 이 멤버는 현재 드라이버에서 사용되지 않습니다.

Privileges.InitialPrivilegeSet

액세스에 대한 초기 권한 집합을 지정하는 INITIAL_PRIVILEGE_SET 구조체입니다.

Privileges.PrivilegeSet

액세스 권한 집합을 지정하는 PRIVILEGE_SET 구조체입니다.

AuditPrivileges

권한 사용을 감사해야 하는지 여부를 지정하는 부울 값입니다. 이 멤버는 현재 드라이버에서 사용되지 않습니다.

ObjectName

액세스에 대한 개체 이름 문자열을 포함하는 UNICODE_STRING 구조체입니다. 이 멤버는 감사에 사용됩니다.

ObjectTypeName

액세스에 대한 개체 형식 이름 문자열을 포함하는 UNICODE_STRING 구조체입니다. 이 멤버는 감사에 사용됩니다.

요구 사항

요구 사항
헤더 wdm.h(Ntifs.h 포함)

추가 정보

ACCESS_MASK

IRP_MJ_CREATE

Luid

ObOpenObjectByPointer

PRIVILEGE_SET

SECURITY_DESCRIPTOR

SECURITY_SUBJECT_CONTEXT

SeAppendPrivileges

SeCaptureSubjectContext

SeOpenObjectAuditAlarm

SeOpenObjectForDeleteAuditAlarm

SeSetAccessStateGenericMapping

UNICODE_STRING