Тут ни единого слова про DACL.
Вот так его менять- ZwSetSecurityObject .
Описание для юзер мода, но верно и для кернел мода.
ZwSetSecurityObject
ZwSetSecurityObject sets the security descriptor protecting an object.
NTSYSAPI
NTSTATUS
NTAPI
ZwSetSecurityObject(
IN HANDLE Handle,
IN SECURITY_INFORMATION SecurityInformation,
IN PSECURITY_DESCRIPTOR SecurityDescriptor
);
Parameters
Handle
A handle to an object.The handle must either grant WRITE_OWNER and/or WRITE_DAC
access to the object as appropriate, or the caller must be the owner of the object.To
access the system ACL of the object, the handle must grant ACCESS_SYSTEM_SECURITY.
SecurityInformation
A bit mask specifying the type of information being set.The defined values are:
OWNER_SECURITY_INFORMATION 0x01
GROUP_SECURITY_INFORMATION 0x02
DACL_SECURITY_INFORMATION 0x04
SACL_SECURITY_INFORMATION 0x08
SecurityDescriptor
Points to a SECURITY_DESCRIPTOR structure containing the new security information.
The SECURITY_DESCRIPTOR structure must be in self-relative format.
Return Value
Returns STATUS_SUCCESS or an error status, such as STATUS_ACCESS_DENIED.
Related Win32 Functions
SetKernelObjectSecurity, SetUserObjectSecurity.
Remarks
SetKernelObjectSecurity and SetUserObjectSecurity both expose the full functionality
of ZwSetSecurityObject.
SeSecurityPrivilege is needed to open an object for ACCESS_SYSTEM_SECURITY
access.This privilege need not be enabled at the time of calling ZwSetSecurityObject.