public static extern NtStatus RtlSetSecurityObjectEx(
     SecurityInformation SecurityInformation,
     SafeBuffer ModificationDescriptor,
     ref IntPtr ObjectsSecurityDescriptor, // SafeBuffer.
     SecurityAutoInheritFlags AutoInheritFlags,
     ref GenericMapping GenericMapping,
     SafeKernelObjectHandle Token
     );
 public static extern NtStatus RtlNewSecurityObjectEx(
     SafeBuffer ParentDescriptor,
     SafeBuffer CreatorDescriptor,
     out SafeProcessHeapBuffer NewDescriptor,
     OptionalGuid ObjectType,
     [MarshalAs(UnmanagedType.U1)] bool IsDirectoryObject,
     SecurityAutoInheritFlags AutoInheritFlags,
     SafeKernelObjectHandle Token,
     ref GenericMapping GenericMapping);
 public static extern NtStatus RtlNewSecurityObjectWithMultipleInheritance(
     SafeBuffer ParentDescriptor,
     SafeBuffer CreatorDescriptor,
     out SafeProcessHeapBuffer NewDescriptor,
     SafeGuidArrayBuffer ObjectTypes,  // GUID**
     int GuidCount,
     [MarshalAs(UnmanagedType.U1)] bool IsDirectoryObject,
     SecurityAutoInheritFlags AutoInheritFlags,
     SafeKernelObjectHandle Token,
     ref GenericMapping GenericMapping);