cosmopolitan/libc/nt/enum/accessmask.h

89 lines
3.5 KiB
C
Raw Normal View History

2020-06-15 14:18:57 +00:00
#ifndef COSMOPOLITAN_LIBC_NT_ENUM_ACCESSMASK_H_
#define COSMOPOLITAN_LIBC_NT_ENUM_ACCESSMASK_H_
/**
* Can also be described as follows:
*
* struct NtAccessMask {
* union {
* uint32_t value;
* struct {
* uint16_t SpecificRights;
* unsigned char StandardRights;
* unsigned AccessSystemAcl : 1;
* unsigned Reserved : 3;
* unsigned GenericAll : 1;
* unsigned GenericExecute : 1;
* unsigned GenericWrite : 1;
* unsigned GenericRead : 1;
* };
* };
* };
*/
#define kNtGenericRead 0x80000000u
#define kNtGenericWrite 0x40000000u
#define kNtGenericExecute 0x20000000u
#define kNtGenericAll 0x10000000u
#define kNtDelete 0x00010000u
#define kNtReadControl 0x00020000u
#define kNtWriteDac 0x00040000u
#define kNtWriteOwner 0x00080000u
#define kNtSynchronize 0x00100000u
#define kNtStandardRightsRequired 0x000F0000u
#define kNtStandardRightsRead kNtReadControl
#define kNtStandardRightsWrite kNtReadControl
#define kNtStandardRightsExecute kNtReadControl
#define kNtStandardRightsAll 0x001F0000u
#define kNtSpecificRightsAll 0x0000FFFFu
#define kNtAccessSystemSecurity 0x01000000u
#define kNtMaximumAllowed 0x02000000u
#define kNtFileReadData 0x0001u
#define kNtFileListDirectory 0x0001u
#define kNtFileWriteData 0x0002u
#define kNtFileAddFile 0x0002u
#define kNtFileAppendData 0x0004u
#define kNtFileAddSubdirectory 0x0004u
#define kNtFileCreatePipeInstance 0x0004u
#define kNtFileReadEa 0x0008u
#define kNtFileWriteEa 0x0010u
#define kNtFileExecute 0x0020u
#define kNtFileTraverse 0x0020u
#define kNtFileDeleteChild 0x0040u
#define kNtFileReadAttributes 0x0080u
#define kNtFileWriteAttributes 0x0100u
#define kNtFileAllAccess (kNtStandardRightsRequired | kNtSynchronize | 0x1FFu)
#define kNtFileGenericRead \
(kNtStandardRightsRead | kNtFileReadData | kNtFileReadAttributes | \
kNtFileReadEa | kNtSynchronize)
#define kNtFileGenericWrite \
(kNtStandardRightsWrite | kNtFileWriteData | kNtFileWriteAttributes | \
kNtFileWriteEa | kNtFileAppendData | kNtSynchronize)
#define kNtFileGenericExecute \
(kNtStandardRightsExecute | kNtFileReadAttributes | kNtFileExecute | \
kNtSynchronize)
#define kNtTokenAssignPrimary 0x0001u
#define kNtTokenDuplicate 0x0002u
#define kNtTokenImpersonate 0x0004u
#define kNtTokenQuery 0x0008u
#define kNtTokenQuerySource 0x0010u
#define kNtTokenAdjustPrivileges 0x0020u
#define kNtTokenAdjustGroups 0x0040u
#define kNtTokenAdjustDefault 0x0080u
#define kNtTokenAdjustSessionid 0x0100u
#define kNtTokenAllAccessP \
(kNtStandardRightsRequired | kNtTokenAssignPrimary | kNtTokenDuplicate | \
kNtTokenImpersonate | kNtTokenQuery | kNtTokenQuerySource | \
kNtTokenAdjustPrivileges | kNtTokenAdjustGroups | kNtTokenAdjustDefault)
#define kNtTokenAllAccess kNtTokenAllAccessP | kNtTokenAdjustSessionid
#define kNtTokenRead kNtStandardRightsRead | kNtTokenQuery
#define kNtTokenWrite \
(kNtStandardRightsWrite | kNtTokenAdjustPrivileges | kNtTokenAdjustGroups | \
kNtTokenAdjustDefault)
#define kNtTokenExecute kNtStandardRightsExecute
#define kNtTokenTrustConstraintMask \
(kNtStandardRightsRead | kNtTokenQuery | kNtTokenQuerySource)
#define kNtTokenAccessPseudoHandleWin8 kNtTokenQuery | kNtTokenQuerySource
#define kNtTokenAccessPseudoHandle kNtTokenAccessPseudoHandleWin8
#endif /* COSMOPOLITAN_LIBC_NT_ENUM_ACCESSMASK_H_ */