Функция 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. Однако SeAccessCheck не выполняет никаких проверок привилегий, если вызывающий объект специально не запрашивает их, задавая ACCESS_SYSTEM_SECURITY или WRITE_OWNER биты.

[in] PreviouslyGrantedAccess

Указывает ACCESS_MASK битовую маску уже предоставленных прав доступа, например прав доступа, предоставленных в результате владения привилегией.

[out] Privileges

Указатель на переменную, предоставленную вызывающей стороны, для установки адреса структуры PRIVILEGE_SET , которая будет использоваться в процессе проверки доступа, или этот параметр может иметь значение NULL. Возвращаемый буфер, если таковой есть, должен быть освобожден вызывающим объектом с помощью SeFreePrivileges.

[in] GenericMapping

Указатель на структуру GENERIC_MAPPING , связанную с данным типом объекта. Это значение указывает конкретные права доступа, подразумеваемые каждым правом доступа GENERIC_XXXX .

[in] AccessMode

Указывает режим доступа, используемый в проверка, UserMode или KernelMode.

[out] GrantedAccess

Указатель на возвращенную маску доступа, указывающую предоставленный доступ. Если вызывающий объект указывает MAXIMUM_ALLOWED, а daCL в SecurityDescriptor имеет значение NULL, то подпрограмма возвращает GENERIC_ALL плюс любой дополнительный доступ, который вызывающий объект явно запрашивает.

[out] AccessStatus

Указатель на значение состояния, указывающее, почему было отказано в доступе.

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

Если доступ разрешен, Функция SeAccessCheck возвращает значение TRUE.

Комментарии

SeAccessCheck может выполнять тесты привилегий для SeTakeOwnershipPrivilege и SeSecurityPrivilege в зависимости от запрашиваемого доступа. В будущих выпусках операционной системы может выполняться дополнительное тестирование привилегий.

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

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

Дополнительные сведения о безопасности и управлении доступом см. в статье Модель безопасности Windows для разработчиков драйверов и документацию по этим темам в Microsoft Windows SDK.

Требования

Требование Значение
Минимальная версия клиента 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