Поделиться через


Функция SeAccessCheckFromStateEx (ntifs.h)

SeAccessCheckFromStateEx проверяет, могут ли запрошенные права доступа предоставляться объекту, защищенному дескриптором безопасности и необязательным владельцем объекта.

Синтаксис

BOOLEAN SeAccessCheckFromStateEx(
  PSECURITY_DESCRIPTOR SecurityDescriptor,
  PACCESS_TOKEN        PrimaryToken,
  PACCESS_TOKEN        ClientToken,
  ACCESS_MASK          DesiredAccess,
  ACCESS_MASK          PreviouslyGrantedAccess,
  PPRIVILEGE_SET       *Privileges,
  PGENERIC_MAPPING     GenericMapping,
  KPROCESSOR_MODE      AccessMode,
  PACCESS_MASK         GrantedAccess,
  PNTSTATUS            AccessStatus
);

Параметры

SecurityDescriptor

[in] Указатель на структуру SECURITY_DESCRIPTOR, содержащую сведения о безопасности, защищающие доступ к объекту.

PrimaryToken

[in] Указатель на непрозрачную структуру ACCESS_TOKEN для первичного маркера. Эта структура предоставляет сведения о маркере, необходимые для проверки доступа.

ClientToken

[in_opt] Необязательный указатель на непрозрачную структуру ACCESS_TOKEN для маркера клиента.

DesiredAccess

[in] Значение ACCESS_MASK, указывающее требуемые права доступа для проверки.

PreviouslyGrantedAccess

[in] Значение ACCESS_MASK, указывающее все доступы, которые пользователь уже предоставил; например, в результате проведения привилегий.

Privileges

[out] Указатель на структуру PRIVILEGE_SET, в которой возвращается набор привилегий, чтобы указать все привилегии, которые использовались в рамках проверки доступа.

GenericMapping

[in] Указатель на структуру GENERIC_MAPPING, связанную с этим типом объекта.

AccessMode

[in] Значение KPROCESSOR_MODE, указывающее режим процессора, используемый в проверке. AccessMode можно KernelMode или UserMode. Драйверы нижнего уровня должны указывать KernelMode.

GrantedAccess

[out] Указатель на возвращаемое значение ACCESS_MASK, указывающее предоставленный доступ.

AccessStatus

[out] Указатель на значение состояния NT, которое можно вернуть, чтобы указать, почему доступ был отклонен. См. примечания.

Возвращаемое значение

SeAccessCheckFromStateEx возвращает ЗНАЧЕНИЕ TRUE, если доступ разрешен; возвращает значение FALSE, если доступ не разрешен.

Замечания

SeAccessCheckFromStateEx может выполнять тесты для следующих привилегий в зависимости от запрашиваемых доступа:

  • SeTakeOwnershipPrivilege
  • SeSecurityPrivilege

Эта подпрограмма также может проверить, является ли вызывающий объект владельцем объекта, чтобы предоставить WRITE_DAC или READ_CONTROL доступ.

Если эта подпрограмма возвращает значение FALSE, вызывающий объект должен использовать возвращенный AccessStatus в качестве возвращаемого значения. То есть вызывающий объект должен избегать жесткой кодировки возвращаемого значения STATUS_ACCESS_DENIED или любого другого конкретного значения STATUS_XXX.

Эта подпрограмма может вызываться на уровне DPC, поэтому не должна быть на страницу.

Требования

Требование Ценность
минимальные поддерживаемые клиентские Windows 2000
заголовка ntifs.h
библиотеки NtosKrnl.lib
DLL NtosKrnl.exe

См. также

SeAccessCheck

SeAccessCheckFromState