Абсолютные и Self-Relative дескрипторы безопасности
дескриптор безопасности может находиться в абсолютном или автономном формате. В абсолютном формате дескриптор безопасности содержит указатели на сведения, а не сами сведения. В автономном формате дескриптор безопасности сохраняет структуру SECURITY_DESCRIPTOR и связанную информацию о безопасности в непрерывном блоке памяти. Чтобы определить, является ли дескриптор безопасности самостоятельным или абсолютным, вызовите функцию GetSecurityDescriptorControl и проверьте флаг SE_SELF_RELATIVE параметра SECURITY_DESCRIPTOR_CONTROL. Вы можете использовать функции MakeSelfRelativeSD и MakeAbsoluteSD для преобразования между этими двумя форматами.
Абсолютный формат полезен при создании дескриптора безопасности и имеет указатели на все компоненты, например когда доступны параметры по умолчанию для владельца, группы и списка ACL. В этом случае можно вызвать функцию InitializeSecurityDescriptor для инициализации структуры SECURITY_DESCRIPTOR, а затем вызывать такие функции, как setSecurityDescriptorDacl, чтобы назначить указатели ACL и SID дескриптору безопасности.
В автономном формате дескриптор безопасности всегда начинается со структуры SECURITY_DESCRIPTOR, но другие компоненты дескриптора безопасности могут следовать структуре в любом порядке. Вместо использования адресов памяти компоненты дескриптора безопасности определяются смещениями с начала дескриптора. Этот формат полезен, если дескриптор безопасности должен храниться на диске, передается с помощью протокола связи или скопирован в памяти.
За исключением MakeAbsoluteSD, все функции, возвращающие дескриптор безопасности, делают это с помощью самостоятельного формата. Дескрипторы безопасности, передаваемые в качестве аргументов функции, могут быть либо относительной, либо абсолютной формой. Дополнительные сведения см. в документации по функции.