Поделиться через


Функция RtlSelfRelativeToAbsoluteSD (ntifs.h)

Подпрограмма RtlSelfRelativeToAbsoluteSD создает новый дескриптор безопасности в абсолютном формате с помощью дескриптора безопасности в автономном формате в качестве шаблона.

Синтаксис

NTSYSAPI NTSTATUS RtlSelfRelativeToAbsoluteSD(
  [in]      PSECURITY_DESCRIPTOR SelfRelativeSecurityDescriptor,
  [out]     PSECURITY_DESCRIPTOR AbsoluteSecurityDescriptor,
  [in, out] PULONG               AbsoluteSecurityDescriptorSize,
  [out]     PACL                 Dacl,
  [in, out] PULONG               DaclSize,
  [out]     PACL                 Sacl,
  [in, out] PULONG               SaclSize,
  [out]     PSID                 Owner,
  [in, out] PULONG               OwnerSize,
  [out]     PSID                 PrimaryGroup,
  [in, out] PULONG               PrimaryGroupSize
);

Параметры

[in] SelfRelativeSecurityDescriptor

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

[out] AbsoluteSecurityDescriptor

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

[in, out] AbsoluteSecurityDescriptorSize

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

[out] Dacl

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

[in, out] DaclSize

Указатель на выделенную вызывающим переменную, указывающую размер буфера в байтах, на который указывает параметр Dacl. Если буфер недостаточно велик для хранения DACL, RtlSelfRelativeToAbsoluteSD возвращает STATUS_BUFFER_TOO_SMALL и задает эту переменную минимальному требуемому размеру.

[out] Sacl

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

[in, out] SaclSize

Указатель на выделенную вызывающим переменную, указывающую размер буфера в байтах, на который указывает параметр Sacl. Если буфер недостаточно велик для хранения SACL, RtlSelfRelativeToAbsoluteSD возвращает STATUS_BUFFER_TOO_SMALL и задает для этой переменной минимальный требуемый размер.

[out] Owner

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

[in, out] OwnerSize

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

[out] PrimaryGroup

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

[in, out] PrimaryGroupSize

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

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

RtlSelfRelativeToAbsoluteSD возвращает STATUS_SUCCESS или соответствующее значение NTSTATUS, например одно из следующих значений:

Возвращаемый код Описание
STATUS_BAD_DESCRIPTOR_FORMAT
Буфер, на который указывает параметр AbsoluteSecurityDescriptor, не содержал SECURITY_DESCRIPTOR структуру в абсолютном формате. STATUS_BAD_DESCRIPTOR_FORMAT — это код ошибки.
STATUS_BUFFER_TOO_SMALL
Буфер, указывающий на AbsoluteSecurityDescriptor, Dacl, Sacl, Ownerили параметр primaryGroup primaryGroup слишком мал. STATUS_BUFFER_TOO_SMALL — это код ошибки.

Замечания

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

Обратите внимание, что параметр AbsoluteSecurityDescriptor получает только основной текст абсолютного дескриптора безопасности. Весь дескриптор абсолютной безопасности состоит из этого основного тела, а также всех компонентов дескриптора безопасности, возвращаемых в Dacl, Sacl, Ownerи буферов primaryGroup. Таким образом, вызывающий объект не может освободить эти буферы после вызова RtlSelfRelativeToAbsoluteSD, так как это приведет к недопустимости абсолютного дескриптора безопасности.

Чтобы создать дескриптор безопасности в автономном формате с помощью дескриптора безопасности в абсолютном формате в качестве шаблона, используйте RtlAbsoluteToSelfRelativeSD.

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

Требования

Требование Ценность
минимальные поддерживаемые клиентские Windows Server 2003 с пакетом обновления 1 (SP1)
целевая платформа Всеобщий
заголовка ntifs.h (include Ntifs.h)
библиотеки NtosKrnl.lib
DLL NtosKrnl.exe
IRQL <= APC_LEVEL

См. также

ACL

RtlAbsoluteToSelfRelativeSD

RtlCreateSecurityDescriptor

RtlLengthSecurityDescriptor

RtlSetDaclSecurityDescriptor

RtlSetOwnerSecurityDescriptor

RtlValidSecurityDescriptor