home *** CD-ROM | disk | FTP | other *** search
/ Beginning C++ Through Gam…rogramming (2nd Edition) / BCGP2E.ISO / bloodshed / devcpp-4.9.9.2_setup.exe / accctrl.h < prev    next >
C/C++ Source or Header  |  2005-01-29  |  12KB  |  330 lines

  1. #ifndef _ACCCTRL_H
  2. #define _ACCCTRL_H
  3. #if __GNUC__ >=3
  4. #pragma GCC system_header
  5. #endif
  6.  
  7. #ifdef __cplusplus
  8. extern "C" {
  9. #endif
  10.  
  11. #define AccFree LocalFree
  12. #define ACTRL_RESERVED            0x00000000
  13. #define ACTRL_ACCESS_PROTECTED    0x00000001
  14. #define ACTRL_ACCESS_ALLOWED      0x00000001
  15. #define ACTRL_ACCESS_DENIED       0x00000002
  16. #define ACTRL_AUDIT_SUCCESS       0x00000004
  17. #define ACTRL_AUDIT_FAILURE       0x00000008
  18. #define ACTRL_SYSTEM_ACCESS       0x04000000
  19. #define ACTRL_DELETE              0x08000000
  20. #define ACTRL_READ_CONTROL        0x10000000
  21. #define ACTRL_CHANGE_ACCESS       0x20000000
  22. #define ACTRL_CHANGE_OWNER        0x40000000
  23. #define ACTRL_SYNCHRONIZE         0x80000000
  24. #define ACTRL_STD_RIGHTS_ALL      0xf8000000
  25.  
  26. #define ACTRL_FILE_READ           0x00000001
  27. #define ACTRL_FILE_WRITE          0x00000002
  28. #define ACTRL_FILE_APPEND         0x00000004
  29. #define ACTRL_FILE_READ_PROP      0x00000008
  30. #define ACTRL_FILE_WRITE_PROP     0x00000010
  31. #define ACTRL_FILE_EXECUTE        0x00000020
  32. #define ACTRL_FILE_READ_ATTRIB    0x00000080
  33. #define ACTRL_FILE_WRITE_ATTRIB   0x00000100
  34. #define ACTRL_FILE_CREATE_PIPE    0x00000200
  35. #define ACTRL_DIR_LIST            0x00000001
  36. #define ACTRL_DIR_CREATE_OBJECT   0x00000002
  37. #define ACTRL_DIR_CREATE_CHILD    0x00000004
  38. #define ACTRL_DIR_DELETE_CHILD    0x00000040
  39. #define ACTRL_DIR_TRAVERSE        0x00000020
  40. #define ACTRL_KERNEL_TERMINATE    0x00000001
  41. #define ACTRL_KERNEL_THREAD       0x00000002
  42. #define ACTRL_KERNEL_VM           0x00000004
  43. #define ACTRL_KERNEL_VM_READ      0x00000008
  44. #define ACTRL_KERNEL_VM_WRITE     0x00000010
  45. #define ACTRL_KERNEL_DUP_HANDLE   0x00000020
  46. #define ACTRL_KERNEL_PROCESS      0x00000040
  47. #define ACTRL_KERNEL_SET_INFO     0x00000080
  48. #define ACTRL_KERNEL_GET_INFO     0x00000100
  49. #define ACTRL_KERNEL_CONTROL      0x00000200
  50. #define ACTRL_KERNEL_ALERT        0x00000400
  51. #define ACTRL_KERNEL_GET_CONTEXT  0x00000800
  52. #define ACTRL_KERNEL_SET_CONTEXT  0x00001000
  53. #define ACTRL_KERNEL_TOKEN        0x00002000
  54. #define ACTRL_KERNEL_IMPERSONATE  0x00004000
  55. #define ACTRL_KERNEL_DIMPERSONATE 0x00008000
  56. #define ACTRL_PRINT_SADMIN        0x00000001
  57. #define ACTRL_PRINT_SLIST         0x00000002
  58. #define ACTRL_PRINT_PADMIN        0x00000004
  59. #define ACTRL_PRINT_PUSE          0x00000008
  60. #define ACTRL_PRINT_JADMIN        0x00000010
  61. #define ACTRL_SVC_GET_INFO        0x00000001
  62. #define ACTRL_SVC_SET_INFO        0x00000002
  63. #define ACTRL_SVC_STATUS          0x00000004
  64. #define ACTRL_SVC_LIST            0x00000008
  65. #define ACTRL_SVC_START           0x00000010
  66. #define ACTRL_SVC_STOP            0x00000020
  67. #define ACTRL_SVC_PAUSE           0x00000040
  68. #define ACTRL_SVC_INTERROGATE     0x00000080
  69. #define ACTRL_SVC_UCONTROL        0x00000100
  70. #define ACTRL_REG_QUERY           0x00000001
  71. #define ACTRL_REG_SET             0x00000002
  72. #define ACTRL_REG_CREATE_CHILD    0x00000004
  73. #define ACTRL_REG_LIST            0x00000008
  74. #define ACTRL_REG_NOTIFY          0x00000010
  75. #define ACTRL_REG_LINK            0x00000020
  76. #define ACTRL_WIN_CLIPBRD         0x00000001
  77. #define ACTRL_WIN_GLOBAL_ATOMS    0x00000002
  78. #define ACTRL_WIN_CREATE          0x00000004
  79. #define ACTRL_WIN_LIST_DESK       0x00000008
  80. #define ACTRL_WIN_LIST            0x00000010
  81. #define ACTRL_WIN_READ_ATTRIBS    0x00000020
  82. #define ACTRL_WIN_WRITE_ATTRIBS   0x00000040
  83. #define ACTRL_WIN_SCREEN          0x00000080
  84. #define ACTRL_WIN_EXIT            0x00000100
  85. #define ACTRL_ACCESS_NO_OPTIONS                 0x00000000
  86. #define ACTRL_ACCESS_SUPPORTS_OBJECT_ENTRIES    0x00000001
  87. #define ACCCTRL_DEFAULT_PROVIDERA   "Windows NT Access Provider"
  88. #define ACCCTRL_DEFAULT_PROVIDERW  L"Windows NT Access Provider"
  89. #define TRUSTEE_ACCESS_ALLOWED    0x00000001L
  90. #define TRUSTEE_ACCESS_READ       0x00000002L
  91. #define TRUSTEE_ACCESS_WRITE      0x00000004L
  92. #define TRUSTEE_ACCESS_EXPLICIT   0x00000001L
  93. #define TRUSTEE_ACCESS_READ_WRITE   (TRUSTEE_ACCESS_READ | TRUSTEE_ACCESS_WRITE)
  94. #define TRUSTEE_ACCESS_ALL        0xFFFFFFFFL
  95. #define NO_INHERITANCE              0x0
  96. #define SUB_OBJECTS_ONLY_INHERIT  0x1
  97. #define SUB_CONTAINERS_ONLY_INHERIT 0x2
  98. #define SUB_CONTAINERS_AND_OBJECTS_INHERIT  0x3
  99. #define INHERIT_NO_PROPAGATE      0x4
  100. #define INHERIT_ONLY              0x8
  101. #define INHERITED_ACCESS_ENTRY    0x10
  102. #define INHERITED_PARENT          0x10000000
  103. #define INHERITED_GRANDPARENT     0x20000000
  104.  
  105. typedef ULONG INHERIT_FLAGS, *PINHERIT_FLAGS;
  106. typedef ULONG ACCESS_RIGHTS, *PACCESS_RIGHTS;
  107.  
  108. typedef enum _ACCESS_MODE {
  109.     NOT_USED_ACCESS = 0,
  110.     GRANT_ACCESS,
  111.     SET_ACCESS,
  112.     DENY_ACCESS,
  113.     REVOKE_ACCESS,
  114.     SET_AUDIT_SUCCESS,
  115.     SET_AUDIT_FAILURE
  116. } ACCESS_MODE;
  117. typedef enum _SE_OBJECT_TYPE {
  118.     SE_UNKNOWN_OBJECT_TYPE = 0,
  119.     SE_FILE_OBJECT,
  120.     SE_SERVICE,
  121.     SE_PRINTER,
  122.     SE_REGISTRY_KEY,
  123.     SE_LMSHARE,
  124.     SE_KERNEL_OBJECT,
  125.     SE_WINDOW_OBJECT,
  126.     SE_DS_OBJECT,
  127.     SE_DS_OBJECT_ALL,
  128.     SE_PROVIDER_DEFINED_OBJECT,
  129.     SE_WMIGUID_OBJECT,
  130.     SE_REGISTRY_WOW64_32KEY
  131. } SE_OBJECT_TYPE;
  132. typedef enum _TRUSTEE_TYPE {
  133.     TRUSTEE_IS_UNKNOWN,
  134.     TRUSTEE_IS_USER,
  135.     TRUSTEE_IS_GROUP,
  136.     TRUSTEE_IS_DOMAIN,
  137.     TRUSTEE_IS_ALIAS,
  138.     TRUSTEE_IS_WELL_KNOWN_GROUP,
  139.     TRUSTEE_IS_DELETED,
  140.     TRUSTEE_IS_INVALID,
  141.     TRUSTEE_IS_COMPUTER
  142. } TRUSTEE_TYPE;
  143. typedef enum _TRUSTEE_FORM {
  144.     TRUSTEE_IS_SID,
  145.     TRUSTEE_IS_NAME,
  146.     TRUSTEE_BAD_FORM,
  147.     TRUSTEE_IS_OBJECTS_AND_SID,
  148.     TRUSTEE_IS_OBJECTS_AND_NAME
  149. } TRUSTEE_FORM;
  150. typedef enum _MULTIPLE_TRUSTEE_OPERATION {
  151.     NO_MULTIPLE_TRUSTEE,
  152.     TRUSTEE_IS_IMPERSONATE
  153. } MULTIPLE_TRUSTEE_OPERATION;
  154. typedef struct _TRUSTEE_A {
  155.     struct _TRUSTEE_A          *pMultipleTrustee;
  156.     MULTIPLE_TRUSTEE_OPERATION  MultipleTrusteeOperation;
  157.     TRUSTEE_FORM                TrusteeForm;
  158.     TRUSTEE_TYPE                TrusteeType;
  159.     LPSTR                       ptstrName;
  160. } TRUSTEE_A, *PTRUSTEE_A, TRUSTEEA, *PTRUSTEEA;
  161. typedef struct _TRUSTEE_W {
  162.     struct _TRUSTEE_W          *pMultipleTrustee;
  163.     MULTIPLE_TRUSTEE_OPERATION  MultipleTrusteeOperation;
  164.     TRUSTEE_FORM                TrusteeForm;
  165.     TRUSTEE_TYPE                TrusteeType;
  166.     LPWSTR                      ptstrName;
  167. } TRUSTEE_W, *PTRUSTEE_W, TRUSTEEW, *PTRUSTEEW;
  168. typedef struct _ACTRL_ACCESS_ENTRYA {
  169.     TRUSTEE_A       Trustee;
  170.     ULONG           fAccessFlags;
  171.     ACCESS_RIGHTS   Access;
  172.     ACCESS_RIGHTS   ProvSpecificAccess;
  173.     INHERIT_FLAGS   Inheritance;
  174.     LPCSTR          lpInheritProperty;
  175. } ACTRL_ACCESS_ENTRYA, *PACTRL_ACCESS_ENTRYA;
  176. typedef struct _ACTRL_ACCESS_ENTRYW {
  177.     TRUSTEE_W       Trustee;
  178.     ULONG           fAccessFlags;
  179.     ACCESS_RIGHTS   Access;
  180.     ACCESS_RIGHTS   ProvSpecificAccess;
  181.     INHERIT_FLAGS   Inheritance;
  182.     LPCWSTR         lpInheritProperty;
  183. } ACTRL_ACCESS_ENTRYW, *PACTRL_ACCESS_ENTRYW;
  184. typedef struct _ACTRL_ACCESS_ENTRY_LISTA {
  185.     ULONG                  cEntries;
  186.     ACTRL_ACCESS_ENTRYA    *pAccessList;
  187. } ACTRL_ACCESS_ENTRY_LISTA, *PACTRL_ACCESS_ENTRY_LISTA;
  188. typedef struct _ACTRL_ACCESS_ENTRY_LISTW {
  189.     ULONG                  cEntries;
  190.     ACTRL_ACCESS_ENTRYW    *pAccessList;
  191. } ACTRL_ACCESS_ENTRY_LISTW, *PACTRL_ACCESS_ENTRY_LISTW;
  192. typedef struct _ACTRL_PROPERTY_ENTRYA {
  193.     LPCSTR                      lpProperty;
  194.     PACTRL_ACCESS_ENTRY_LISTA   pAccessEntryList;
  195.     ULONG                       fListFlags;
  196. } ACTRL_PROPERTY_ENTRYA, *PACTRL_PROPERTY_ENTRYA;
  197. typedef struct _ACTRL_PROPERTY_ENTRYW {
  198.     LPCWSTR                     lpProperty;
  199.     PACTRL_ACCESS_ENTRY_LISTW   pAccessEntryList;
  200.     ULONG                       fListFlags;
  201. } ACTRL_PROPERTY_ENTRYW, *PACTRL_PROPERTY_ENTRYW;
  202. typedef struct _ACTRL_ALISTA {
  203.     ULONG                       cEntries;
  204.     PACTRL_PROPERTY_ENTRYA      pPropertyAccessList;
  205. } ACTRL_ACCESSA, *PACTRL_ACCESSA, ACTRL_AUDITA, *PACTRL_AUDITA;
  206. typedef struct _ACTRL_ALISTW {
  207.     ULONG                       cEntries;
  208.     PACTRL_PROPERTY_ENTRYW      pPropertyAccessList;
  209. } ACTRL_ACCESSW, *PACTRL_ACCESSW, ACTRL_AUDITW, *PACTRL_AUDITW;
  210. typedef struct _TRUSTEE_ACCESSA { 
  211.     LPSTR           lpProperty;
  212.     ACCESS_RIGHTS   Access;
  213.     ULONG           fAccessFlags;
  214.     ULONG           fReturnedAccess;
  215. } TRUSTEE_ACCESSA, *PTRUSTEE_ACCESSA;
  216. typedef struct _TRUSTEE_ACCESSW {
  217.     LPWSTR          lpProperty;
  218.     ACCESS_RIGHTS   Access;
  219.     ULONG           fAccessFlags;
  220.     ULONG           fReturnedAccess;
  221. } TRUSTEE_ACCESSW, *PTRUSTEE_ACCESSW;
  222. typedef struct _ACTRL_OVERLAPPED {
  223.     _ANONYMOUS_UNION
  224.     union {
  225.         PVOID Provider;
  226.         ULONG Reserved1;
  227.     } DUMMYUNIONNAME;
  228.     ULONG       Reserved2;
  229.     HANDLE      hEvent;
  230. } ACTRL_OVERLAPPED, *PACTRL_OVERLAPPED;
  231. typedef struct _ACTRL_ACCESS_INFOA {
  232.     ULONG       fAccessPermission;
  233.     LPSTR       lpAccessPermissionName;
  234. } ACTRL_ACCESS_INFOA, *PACTRL_ACCESS_INFOA;
  235. typedef struct _ACTRL_ACCESS_INFOW {
  236.     ULONG       fAccessPermission;
  237.     LPWSTR      lpAccessPermissionName;
  238. } ACTRL_ACCESS_INFOW, *PACTRL_ACCESS_INFOW;
  239. typedef struct _ACTRL_CONTROL_INFOA {
  240.     LPSTR       lpControlId;
  241.     LPSTR       lpControlName;
  242. } ACTRL_CONTROL_INFOA, *PACTRL_CONTROL_INFOA;
  243. typedef struct _ACTRL_CONTROL_INFOW {
  244.     LPWSTR      lpControlId;
  245.     LPWSTR      lpControlName;
  246. } ACTRL_CONTROL_INFOW, *PACTRL_CONTROL_INFOW;
  247. typedef struct _EXPLICIT_ACCESS_A {
  248.     DWORD        grfAccessPermissions;
  249.     ACCESS_MODE  grfAccessMode;
  250.     DWORD        grfInheritance;
  251.     TRUSTEE_A    Trustee;
  252. } EXPLICIT_ACCESS_A, *PEXPLICIT_ACCESS_A, EXPLICIT_ACCESSA, *PEXPLICIT_ACCESSA;
  253. typedef struct _EXPLICIT_ACCESS_W {
  254.     DWORD        grfAccessPermissions;
  255.     ACCESS_MODE  grfAccessMode;
  256.     DWORD        grfInheritance;
  257.     TRUSTEE_W    Trustee;
  258. } EXPLICIT_ACCESS_W, *PEXPLICIT_ACCESS_W, EXPLICIT_ACCESSW, *PEXPLICIT_ACCESSW;
  259. typedef struct _OBJECTS_AND_SID {
  260.     DWORD   ObjectsPresent;
  261.     GUID    ObjectTypeGuid;
  262.     GUID    InheritedObjectTypeGuid;
  263.     SID     * pSid;
  264. } OBJECTS_AND_SID, *POBJECTS_AND_SID;
  265. typedef struct _OBJECTS_AND_NAME_A {
  266.     DWORD    ObjectsPresent;
  267.     SE_OBJECT_TYPE ObjectType;
  268.     LPSTR    ObjectTypeName;
  269.     LPSTR    InheritedObjectTypeName;
  270.     LPSTR    ptstrName;
  271. } OBJECTS_AND_NAME_A, *POBJECTS_AND_NAME_A;
  272. typedef struct _OBJECTS_AND_NAME_W {
  273.     DWORD          ObjectsPresent;
  274.     SE_OBJECT_TYPE ObjectType;
  275.     LPWSTR   ObjectTypeName;
  276.     LPWSTR   InheritedObjectTypeName;
  277.     LPWSTR   ptstrName;
  278. } OBJECTS_AND_NAME_W, *POBJECTS_AND_NAME_W;
  279. #if (_WIN32_WINNT >= 0x0501)
  280. typedef struct {
  281.     LONG     GenerationGap;
  282.     LPSTR    AncestorName;
  283. } INHERITED_FROMA, *PINHERITED_FROMA;
  284. typedef struct {
  285.     LONG     GenerationGap;
  286.     LPWSTR   AncestorName;
  287. } INHERITED_FROMW, *PINHERITED_FROMW;
  288. #endif /* (_WIN32_WINNT >= 0x0501) */
  289.  
  290. #ifdef UNICODE
  291. #define ACCCTRL_DEFAULT_PROVIDER ACCCTRL_DEFAULT_PROVIDERW
  292. typedef TRUSTEE_W TRUSTEE_, *PTRUSTEE_;
  293. typedef TRUSTEEW TRUSTEE, *PTRUSTEE;
  294. typedef ACTRL_ACCESSW ACTRL_ACCESS, *PACTRL_ACCESS;
  295. typedef ACTRL_ACCESS_ENTRY_LISTW ACTRL_ACCESS_ENTRY_LIST, *PACTRL_ACCESS_ENTRY_LIST;
  296. typedef ACTRL_ACCESS_INFOW ACTRL_ACCESS_INFO, *PACTRL_ACCESS_INFO;
  297. typedef ACTRL_ACCESS_ENTRYW ACTRL_ACCESS_ENTRY, *PACTRL_ACCESS_ENTRY;
  298. typedef ACTRL_AUDITW ACTRL_AUDIT, *PACTRL_AUDIT;
  299. typedef ACTRL_CONTROL_INFOW ACTRL_CONTROL_INFO, *PACTRL_CONTROL_INFO;
  300. typedef EXPLICIT_ACCESS_W EXPLICIT_ACCESS_, *PEXPLICIT_ACCESS_;
  301. typedef EXPLICIT_ACCESSW EXPLICIT_ACCESS, *PEXPLICIT_ACCESS;
  302. typedef TRUSTEE_ACCESSW TRUSTEE_ACCESS, *PTRUSTEE_ACCESS;
  303. typedef OBJECTS_AND_NAME_W OBJECTS_AND_NAME_, *POBJECTS_AND_NAME_;
  304. #if (_WIN32_WINNT >= 0x0501)
  305. typedef INHERITED_FROMW INHERITED_FROM, *PINHERITED_FROM;
  306. #endif
  307. #else
  308. #define ACCCTRL_DEFAULT_PROVIDER ACCCTRL_DEFAULT_PROVIDERA
  309. typedef TRUSTEE_A TRUSTEE_, *PTRUSTEE_;
  310. typedef TRUSTEEA TRUSTEE, *PTRUSTEE;
  311. typedef ACTRL_ACCESSA ACTRL_ACCESS, *PACTRL_ACCESS;
  312. typedef ACTRL_ACCESS_ENTRY_LISTA ACTRL_ACCESS_ENTRY_LIST, *PACTRL_ACCESS_ENTRY_LIST;
  313. typedef ACTRL_ACCESS_INFOA ACTRL_ACCESS_INFO, *PACTRL_ACCESS_INFO;
  314. typedef ACTRL_ACCESS_ENTRYA ACTRL_ACCESS_ENTRY, *PACTRL_ACCESS_ENTRY;
  315. typedef ACTRL_AUDITA ACTRL_AUDIT, *PACTRL_AUDIT;
  316. typedef ACTRL_CONTROL_INFOA ACTRL_CONTROL_INFO, *PACTRL_CONTROL_INFO;
  317. typedef EXPLICIT_ACCESS_A EXPLICIT_ACCESS_, *PEXPLICIT_ACCESS_;
  318. typedef EXPLICIT_ACCESSA EXPLICIT_ACCESS, *PEXPLICIT_ACCESS;
  319. typedef TRUSTEE_ACCESSA TRUSTEE_ACCESS, *PTRUSTEE_ACCESS;
  320. typedef OBJECTS_AND_NAME_A OBJECTS_AND_NAME_, *POBJECTS_AND_NAME_;
  321. #if (_WIN32_WINNT >= 0x0501)
  322. typedef INHERITED_FROMA INHERITED_FROM, *PINHERITED_FROM;
  323. #endif
  324. #endif /* UNICODE */
  325.  
  326. #ifdef __cplusplus
  327. }
  328. #endif
  329. #endif 
  330.