#ifndef _NTRTL_H
/**
* The RtlSetOwnerSecurityDescriptor routine sets the owner information of an absolute-format security descriptor. It replaces any owner information that is already present in the security descriptor.
*
* \param SecurityDescriptor Pointer to the SECURITY_DESCRIPTOR structure whose owner is to be set. RtlSetOwnerSecurityDescriptor replaces any existing owner with the new owner.
* \param Owner Pointer to a security identifier (SID) structure for the security descriptor's new primary owner.
* \li \c This pointer, not the SID structure itself, is copied into the security descriptor.
* \li \c If this parameter is NULL, RtlSetOwnerSecurityDescriptor clears the security descriptor's owner information. This marks the security descriptor as having no owner.
* \param OwnerDefaulted Set to TRUE if the owner information is derived from a default mechanism.
* \li \c If this value is TRUE, it is default information. RtlSetOwnerSecurityDescriptor sets the SE_OWNER_DEFAULTED flag in the security descriptor's SECURITY_DESCRIPTOR_CONTROL field.
* \li \c If this parameter is FALSE, the SE_OWNER_DEFAULTED flag is cleared.
* \return NTSTATUS Successful or errant status.
* \see https://learn.microsoft.com/en-us/windows-hardware/drivers/ddi/ntifs/nf-ntifs-rtlsetownersecuritydescriptor
*/
NTSYSAPI
NTSTATUS
NTAPI
RtlSetOwnerSecurityDescriptor(
_Inout_ PSECURITY_DESCRIPTOR SecurityDescriptor,
_In_opt_ PSID Owner,
_In_ BOOLEAN OwnerDefaulted
);
View code on GitHub
// ntifs.h
NTSYSAPI NTSTATUS RtlSetOwnerSecurityDescriptor(
[in, out] PSECURITY_DESCRIPTOR SecurityDescriptor,
[in, optional] PSID Owner,
[in, optional] BOOLEAN OwnerDefaulted
);
View the official Windows Driver Kit DDI reference
This function is documented in Windows Driver Kit.
The RtlSetOwnerSecurityDescriptor routine sets the owner information of an absolute-format security descriptor. It replaces any owner information that is already present in the security descriptor.
SecurityDescriptor
[in, out]Pointer to the SECURITY_DESCRIPTOR structure whose owner is to be set. RtlSetOwnerSecurityDescriptor replaces any existing owner with the new owner.
Owner
[in, optional]Pointer to a security identifier (SID) structure for the security descriptor's new primary owner. This pointer, not the SID structure itself, is copied into the security descriptor. If this parameter is NULL, RtlSetOwnerSecurityDescriptor clears the security descriptor's owner information. This marks the security descriptor as having no owner.
OwnerDefaulted
[in, optional]Set to TRUE if the owner information is derived from a default mechanism. If this value is TRUE, it is default information. RtlSetOwnerSecurityDescriptor sets the SE_OWNER_DEFAULTED flag in the security descriptor's SECURITY_DESCRIPTOR_CONTROL field. If this parameter is FALSE, the SE_OWNER_DEFAULTED flag is cleared.
RtlSetOwnerSecurityDescriptor can return one of the following status codes:
Return code | Description |
---|---|
STATUS_SUCCESS | The owner was successfully set or reset. |
STATUS_UNKNOWN_REVISION | The given security descriptor's version is not recognized by this routine. |
STATUS_INVALID_SECURITY_DESCR | The given security descriptor is not a valid absolute security descriptor. |
For more information about security and access control, see Windows security model for driver developers and the documentation on these topics in the Windows SDK.
RtlCreateSecurityDescriptorRelative