Функция 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. Возможные коды возврата включают, помимо прочего, следующие.
Возвращаемый код/значение | Описание |
---|---|
|
Один или несколько буферов слишком малы. |
Комментарии
Дескриптор безопасности в абсолютном формате содержит указатели на содержащиеся в нем сведения, а не сами сведения. Дескриптор безопасности в автономном формате содержит сведения в непрерывном блоке памяти. В самостоятельном дескрипторе безопасности структура SECURITY_DESCRIPTOR всегда запускает сведения, но другие компоненты дескриптора безопасности могут следовать за структурой в любом порядке. Вместо использования адресов памяти компоненты самостоятельного дескриптора безопасности идентифицируются по смещениям от начала дескриптора безопасности. Этот формат удобен, когда дескриптор безопасности должен храниться на диске или передаваться по протоколу связи.
Сервер, который копирует защищенные объекты на различные носители, может использовать функцию MakeAbsoluteSD для создания абсолютного дескриптора безопасности из самостоятельного дескриптора безопасности и функции MakeSelfRelativeSD для создания дескриптора безопасности на основе абсолютного дескриптора безопасности.
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Windows XP [классические приложения | Приложения UWP] |
Минимальная версия сервера | Windows Server 2003 [классические приложения | Приложения UWP] |
Целевая платформа | Windows |
Header | securitybaseapi.h (включая Windows.h) |
Библиотека | Advapi32.lib |
DLL | Advapi32.dll |
См. также раздел
Низкоуровневые контроль доступа