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

Функция MakeAbsoluteSD создает дескриптор безопасности в абсолютном формате, используя в качестве шаблона дескриптор безопасности в относительном формате.

Синтаксис

BOOL MakeAbsoluteSD(
  [in]            PSECURITY_DESCRIPTOR pSelfRelativeSecurityDescriptor,
  [out, optional] PSECURITY_DESCRIPTOR pAbsoluteSecurityDescriptor,
  [in, out]       LPDWORD              lpdwAbsoluteSecurityDescriptorSize,
  [out, optional] PACL                 pDacl,
  [in, out]       LPDWORD              lpdwDaclSize,
  [out, optional] PACL                 pSacl,
  [in, out]       LPDWORD              lpdwSaclSize,
  [out, optional] PSID                 pOwner,
  [in, out]       LPDWORD              lpdwOwnerSize,
  [out, optional] PSID                 pPrimaryGroup,
  [in, out]       LPDWORD              lpdwPrimaryGroupSize
);

Параметры

[in] pSelfRelativeSecurityDescriptor

Указатель на структуру SECURITY_DESCRIPTOR в автономном формате. Функция создает версию этого дескриптора безопасности в абсолютном формате без изменения исходного дескриптора безопасности.

[out, optional] pAbsoluteSecurityDescriptor

Указатель на буфер, который функция заполняет main телом дескриптора безопасности абсолютного формата. Эти сведения форматируются в виде структуры SECURITY_DESCRIPTOR .

[in, out] lpdwAbsoluteSecurityDescriptorSize

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

[out, optional] pDacl

Указатель на буфер, который функция заполняет списком управления доступом на уровне пользователей (DACL) дескриптора безопасности абсолютного формата. Текст main дескриптора безопасности абсолютного формата ссылается на этот указатель.

[in, out] lpdwDaclSize

Указатель на переменную, указывающую размер буфера, на который указывает параметр pDacl . Если буфер недостаточно велик для списка управления доступом (ACL), функция завершается сбоем и устанавливает для этой переменной минимальный требуемый размер.

[out, optional] pSacl

Указатель на буфер, который функция заполняет списком системного управления доступом (SACL) дескриптора безопасности абсолютного формата. Текст main дескриптора безопасности абсолютного формата ссылается на этот указатель.

[in, out] lpdwSaclSize

Указатель на переменную, указывающую размер буфера, на который указывает параметр pSacl . Если буфер недостаточно велик для ACL, функция завершается сбоем и устанавливает для этой переменной минимальный требуемый размер.

[out, optional] pOwner

Указатель на буфер, который функция заполняет идентификатором безопасности (SID) владельца дескриптора безопасности абсолютного формата. Текст main дескриптора безопасности абсолютного формата ссылается на этот указатель.

[in, out] lpdwOwnerSize

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

[out, optional] pPrimaryGroup

Указатель на буфер, который функция заполняет идентификатором безопасности основной группы дескриптора безопасности абсолютного формата. Текст main дескриптора безопасности абсолютного формата ссылается на этот указатель.

[in, out] lpdwPrimaryGroupSize

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

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

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

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

Возвращаемый код/значение Описание
ERROR_INSUFFICIENT_BUFFER
0x7A
Один или несколько буферов слишком малы.

Комментарии

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

Сервер, который копирует защищенные объекты на различные носители, может использовать функцию MakeAbsoluteSD для создания абсолютного дескриптора безопасности из самостоятельного дескриптора безопасности и функции MakeSelfRelativeSD для создания дескриптора безопасности на основе абсолютного дескриптора безопасности.

Требования

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

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

Низкоуровневые контроль доступа

Низкоуровневые функции контроль доступа

MakeSelfRelativeSD

SECURITY_DESCRIPTOR