Функция AccessCheck (securitybaseapi.h)

Функция AccessCheck определяет, предоставляет ли дескриптор безопасности указанный набор прав доступа клиенту, определенному маркером доступа. Как правило, серверные приложения используют эту функцию для проверка доступа к частному объекту.

Синтаксис

BOOL AccessCheck(
  [in]            PSECURITY_DESCRIPTOR pSecurityDescriptor,
  [in]            HANDLE               ClientToken,
  [in]            DWORD                DesiredAccess,
  [in]            PGENERIC_MAPPING     GenericMapping,
  [out, optional] PPRIVILEGE_SET       PrivilegeSet,
  [in, out]       LPDWORD              PrivilegeSetLength,
  [out]           LPDWORD              GrantedAccess,
  [out]           LPBOOL               AccessStatus
);

Параметры

[in] pSecurityDescriptor

Указатель на структуру SECURITY_DESCRIPTOR , для которой проверяется доступ.

[in] ClientToken

Дескриптор маркера олицетворения , который представляет клиент, который пытается получить доступ. Дескриптор должен иметь TOKEN_QUERY доступ к маркеру; В противном случае функция завершается сбоем с ERROR_ACCESS_DENIED.

[in] DesiredAccess

Маска доступа, указывающая права доступа для проверка. Эта маска должна быть сопоставлена функцией MapGenericMask , чтобы она не содержала универсальных прав доступа.

Если этот параметр MAXIMUM_ALLOWED, функция задает маску доступа GrantedAccess , чтобы указать максимальные права доступа , которые дескриптор безопасности разрешает клиенту.

[in] GenericMapping

Указатель на структуру GENERIC_MAPPING , связанную с объектом, для которого проверяется доступ.

[out, optional] PrivilegeSet

Указатель на структуру PRIVILEGE_SET , которая получает привилегии , используемые для проверки доступа. Если привилегии не использовались, функция устанавливает для элемента PrivilegeCount нулевое значение.

[in, out] PrivilegeSetLength

Указывает размер (в байтах) буфера, на который указывает параметр PrivilegeSet .

[out] GrantedAccess

Указатель на маску доступа , которая получает предоставленные права доступа. Если параметр AccessStatus имеет значение FALSE, функция устанавливает для маски доступа нулевое значение. Если функция завершается сбоем, она не устанавливает маску доступа.

[out] AccessStatus

Указатель на переменную, получающую результаты проверка доступа. Если дескриптор безопасности разрешает запрошенные права доступа клиенту, определяемого маркером доступа, accessStatus имеет значение TRUE. В противном случае accessStatus имеет значение FALSE, и вы можете вызвать GetLastError , чтобы получить расширенные сведения об ошибке.

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

Если функция выполняется успешно, возвращается ненулевое значение.

Если функция выполняется неудачно, возвращается нулевое значение. Дополнительные сведения об ошибке можно получить, вызвав GetLastError.

Комментарии

Дополнительные сведения см. в статье Общие сведения о работе AccessCheck .

Функция AccessCheck сравнивает указанный дескриптор безопасности с указанным маркером доступа и указывает в параметре AccessStatus , предоставлен или запрещен доступ. Если доступ предоставлен, запрошенная маска доступа становится маской доступа, предоставленной объекту.

Если DACL дескриптора безопасности имеет значение NULL, параметр AccessStatus возвращает значение TRUE, указывающее, что у клиента есть запрошенный доступ.

Функция AccessCheck завершается сбоем с ERROR_INVALID_SECURITY_DESCR, если дескриптор безопасности не содержит идентификаторы БЕЗОПАСНОСТИ владельца и группы.

Функция AccessCheck не создает аудит. Если приложению требуется аудит для проверок доступа, используйте такие функции, как AccessCheckAndAuditAlarm, AccessCheckByTypeAndAuditAlarm, AccessCheckByTypeResultListAndAuditAlarm или AccessCheckByTypeResultListAndAuditAlarmByHandle вместо AccessCheckCheck.

Примеры

Пример использования этой функции см. в разделе Проверка клиентского доступа с помощью списков управления доступом.

Требования

Требование Значение
Минимальная версия клиента Windows XP [только классические приложения]
Минимальная версия сервера Windows Server 2003 [только классические приложения]
Целевая платформа Windows
Header securitybaseapi.h (включая Windows.h)
Библиотека Advapi32.lib
DLL Advapi32.dll

См. также раздел

AccessCheckAndAuditAlarm

AreAllAccessesGranted

AreAnyAccessesGranted

Контроль доступа клиента или сервера

Функции контроль доступа клиента и сервера

GENERIC_MAPPING

Как работает AccessCheck

MakeAbsolutesd

MapGenericMask

PRIVILEGE_SET

PrivilegeCheck

SECURITY_DESCRIPTOR