Функция 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 |