home *** CD-ROM | disk | FTP | other *** search
/ PC Format (South-Africa) 2001 June / PCFJune.iso / Xenon / C++ / FreeCommandLineTools.exe / Include / aclapi.h < prev    next >
Encoding:
C/C++ Source or Header  |  2000-01-31  |  14.0 KB  |  558 lines

  1. /*++ BUILD Version: 0001    // Increment this if a change has global effects
  2.  
  3. Copyright (c) 1993-1999, Microsoft Corporation
  4.  
  5. Module Name:
  6.  
  7.     aclapi.h
  8.  
  9. Abstract:
  10.  
  11.     Public
  12.     Structure/constant definitions and typedefines for the Win32 Access
  13.     Control APIs
  14.  
  15. --*/
  16. #ifndef __ACCESS_CONTROL_API__
  17. #pragma option push -b -a8 -pc -A- /*P_O_Push*/
  18. #define __ACCESS_CONTROL_API__
  19.  
  20. #include <windows.h>
  21. #include <accctrl.h>
  22.  
  23. #ifdef __cplusplus
  24. extern "C" {
  25. #endif
  26.  
  27. WINADVAPI
  28. DWORD
  29. WINAPI
  30. SetEntriesInAclA(
  31.     IN  ULONG               cCountOfExplicitEntries,
  32.     IN  PEXPLICIT_ACCESS_A  pListOfExplicitEntries,
  33.     IN  PACL                OldAcl,
  34.     OUT PACL              * NewAcl
  35.     );
  36. WINADVAPI
  37. DWORD
  38. WINAPI
  39. SetEntriesInAclW(
  40.     IN  ULONG               cCountOfExplicitEntries,
  41.     IN  PEXPLICIT_ACCESS_W  pListOfExplicitEntries,
  42.     IN  PACL                OldAcl,
  43.     OUT PACL              * NewAcl
  44.     );
  45. #ifdef UNICODE
  46. #define SetEntriesInAcl  SetEntriesInAclW
  47. #else
  48. #define SetEntriesInAcl  SetEntriesInAclA
  49. #endif // !UNICODE
  50.  
  51.  
  52. WINADVAPI
  53. DWORD
  54. WINAPI
  55. GetExplicitEntriesFromAclA(
  56.     IN  PACL                  pacl,
  57.     OUT PULONG                pcCountOfExplicitEntries,
  58.     OUT PEXPLICIT_ACCESS_A  * pListOfExplicitEntries
  59.     );
  60. WINADVAPI
  61. DWORD
  62. WINAPI
  63. GetExplicitEntriesFromAclW(
  64.     IN  PACL                  pacl,
  65.     OUT PULONG                pcCountOfExplicitEntries,
  66.     OUT PEXPLICIT_ACCESS_W  * pListOfExplicitEntries
  67.     );
  68. #ifdef UNICODE
  69. #define GetExplicitEntriesFromAcl  GetExplicitEntriesFromAclW
  70. #else
  71. #define GetExplicitEntriesFromAcl  GetExplicitEntriesFromAclA
  72. #endif // !UNICODE
  73.  
  74.  
  75. WINADVAPI
  76. DWORD
  77. WINAPI
  78. GetEffectiveRightsFromAclA(
  79.     IN  PACL          pacl,
  80.     IN  PTRUSTEE_A    pTrustee,
  81.     OUT PACCESS_MASK  pAccessRights
  82.     );
  83. WINADVAPI
  84. DWORD
  85. WINAPI
  86. GetEffectiveRightsFromAclW(
  87.     IN  PACL          pacl,
  88.     IN  PTRUSTEE_W    pTrustee,
  89.     OUT PACCESS_MASK  pAccessRights
  90.     );
  91. #ifdef UNICODE
  92. #define GetEffectiveRightsFromAcl  GetEffectiveRightsFromAclW
  93. #else
  94. #define GetEffectiveRightsFromAcl  GetEffectiveRightsFromAclA
  95. #endif // !UNICODE
  96.  
  97.  
  98. WINADVAPI
  99. DWORD
  100. WINAPI
  101. GetAuditedPermissionsFromAclA(
  102.     IN  PACL          pacl,
  103.     IN  PTRUSTEE_A    pTrustee,
  104.     OUT PACCESS_MASK  pSuccessfulAuditedRights,
  105.     OUT PACCESS_MASK  pFailedAuditRights
  106.     );
  107. WINADVAPI
  108. DWORD
  109. WINAPI
  110. GetAuditedPermissionsFromAclW(
  111.     IN  PACL          pacl,
  112.     IN  PTRUSTEE_W    pTrustee,
  113.     OUT PACCESS_MASK  pSuccessfulAuditedRights,
  114.     OUT PACCESS_MASK  pFailedAuditRights
  115.     );
  116. #ifdef UNICODE
  117. #define GetAuditedPermissionsFromAcl  GetAuditedPermissionsFromAclW
  118. #else
  119. #define GetAuditedPermissionsFromAcl  GetAuditedPermissionsFromAclA
  120. #endif // !UNICODE
  121.  
  122. WINADVAPI
  123. DWORD
  124. WINAPI
  125. GetNamedSecurityInfoA(
  126.     IN  LPSTR                pObjectName,
  127.     IN  SE_OBJECT_TYPE         ObjectType,
  128.     IN  SECURITY_INFORMATION   SecurityInfo,
  129.     OUT PSID                 * ppsidOwner,
  130.     OUT PSID                 * ppsidGroup,
  131.     OUT PACL                 * ppDacl,
  132.     OUT PACL                 * ppSacl,
  133.     OUT PSECURITY_DESCRIPTOR * ppSecurityDescriptor
  134.     );
  135. WINADVAPI
  136. DWORD
  137. WINAPI
  138. GetNamedSecurityInfoW(
  139.     IN  LPWSTR                pObjectName,
  140.     IN  SE_OBJECT_TYPE         ObjectType,
  141.     IN  SECURITY_INFORMATION   SecurityInfo,
  142.     OUT PSID                 * ppsidOwner,
  143.     OUT PSID                 * ppsidGroup,
  144.     OUT PACL                 * ppDacl,
  145.     OUT PACL                 * ppSacl,
  146.     OUT PSECURITY_DESCRIPTOR * ppSecurityDescriptor
  147.     );
  148. #ifdef UNICODE
  149. #define GetNamedSecurityInfo  GetNamedSecurityInfoW
  150. #else
  151. #define GetNamedSecurityInfo  GetNamedSecurityInfoA
  152. #endif // !UNICODE
  153.  
  154. WINADVAPI
  155. DWORD
  156. WINAPI
  157. GetSecurityInfo(
  158.     IN  HANDLE                 handle,
  159.     IN  SE_OBJECT_TYPE         ObjectType,
  160.     IN  SECURITY_INFORMATION   SecurityInfo,
  161.     OUT PSID                 * ppsidOwner,
  162.     OUT PSID                 * ppsidGroup,
  163.     OUT PACL                 * ppDacl,
  164.     OUT PACL                 * ppSacl,
  165.     OUT PSECURITY_DESCRIPTOR * ppSecurityDescriptor
  166.     );
  167.  
  168. WINADVAPI
  169. DWORD
  170. WINAPI
  171. SetNamedSecurityInfoA(
  172.     IN LPSTR               pObjectName,
  173.     IN SE_OBJECT_TYPE        ObjectType,
  174.     IN SECURITY_INFORMATION  SecurityInfo,
  175.     IN PSID                  psidOwner,
  176.     IN PSID                  psidGroup,
  177.     IN PACL                  pDacl,
  178.     IN PACL                  pSacl
  179.     );
  180. WINADVAPI
  181. DWORD
  182. WINAPI
  183. SetNamedSecurityInfoW(
  184.     IN LPWSTR               pObjectName,
  185.     IN SE_OBJECT_TYPE        ObjectType,
  186.     IN SECURITY_INFORMATION  SecurityInfo,
  187.     IN PSID                  psidOwner,
  188.     IN PSID                  psidGroup,
  189.     IN PACL                  pDacl,
  190.     IN PACL                  pSacl
  191.     );
  192. #ifdef UNICODE
  193. #define SetNamedSecurityInfo  SetNamedSecurityInfoW
  194. #else
  195. #define SetNamedSecurityInfo  SetNamedSecurityInfoA
  196. #endif // !UNICODE
  197.  
  198. WINADVAPI
  199. DWORD
  200. WINAPI
  201. SetSecurityInfo(
  202.     IN HANDLE                handle,
  203.     IN SE_OBJECT_TYPE        ObjectType,
  204.     IN SECURITY_INFORMATION  SecurityInfo,
  205.     IN PSID                  psidOwner,
  206.     IN PSID                  psidGroup,
  207.     IN PACL                  pDacl,
  208.     IN PACL                  pSacl
  209.     );
  210.  
  211.  
  212. //----------------------------------------------------------------------------
  213. // The following API are provided for trusted servers to use to
  214. // implement access control on their own objects.
  215. //----------------------------------------------------------------------------
  216.  
  217. WINADVAPI
  218. DWORD
  219. WINAPI
  220. BuildSecurityDescriptorA(
  221.     IN  PTRUSTEE_A              pOwner,
  222.     IN  PTRUSTEE_A              pGroup,
  223.     IN  ULONG                   cCountOfAccessEntries,
  224.     IN  PEXPLICIT_ACCESS_A      pListOfAccessEntries,
  225.     IN  ULONG                   cCountOfAuditEntries,
  226.     IN  PEXPLICIT_ACCESS_A      pListOfAuditEntries,
  227.     IN  PSECURITY_DESCRIPTOR    pOldSD,
  228.     OUT PULONG                  pSizeNewSD,
  229.     OUT PSECURITY_DESCRIPTOR  * pNewSD
  230.     );
  231. WINADVAPI
  232. DWORD
  233. WINAPI
  234. BuildSecurityDescriptorW(
  235.     IN  PTRUSTEE_W              pOwner,
  236.     IN  PTRUSTEE_W              pGroup,
  237.     IN  ULONG                   cCountOfAccessEntries,
  238.     IN  PEXPLICIT_ACCESS_W      pListOfAccessEntries,
  239.     IN  ULONG                   cCountOfAuditEntries,
  240.     IN  PEXPLICIT_ACCESS_W      pListOfAuditEntries,
  241.     IN  PSECURITY_DESCRIPTOR    pOldSD,
  242.     OUT PULONG                  pSizeNewSD,
  243.     OUT PSECURITY_DESCRIPTOR  * pNewSD
  244.     );
  245. #ifdef UNICODE
  246. #define BuildSecurityDescriptor  BuildSecurityDescriptorW
  247. #else
  248. #define BuildSecurityDescriptor  BuildSecurityDescriptorA
  249. #endif // !UNICODE
  250.  
  251. WINADVAPI
  252. DWORD
  253. WINAPI
  254. LookupSecurityDescriptorPartsA(
  255.     OUT PTRUSTEE_A         * pOwner,
  256.     OUT PTRUSTEE_A         * pGroup,
  257.     OUT PULONG               cCountOfAccessEntries,
  258.     OUT PEXPLICIT_ACCESS_A * pListOfAccessEntries,
  259.     OUT PULONG               cCountOfAuditEntries,
  260.     OUT PEXPLICIT_ACCESS_A * pListOfAuditEntries,
  261.     IN  PSECURITY_DESCRIPTOR pSD
  262.     );
  263. WINADVAPI
  264. DWORD
  265. WINAPI
  266. LookupSecurityDescriptorPartsW(
  267.     OUT PTRUSTEE_W         * pOwner,
  268.     OUT PTRUSTEE_W         * pGroup,
  269.     OUT PULONG               cCountOfAccessEntries,
  270.     OUT PEXPLICIT_ACCESS_W * pListOfAccessEntries,
  271.     OUT PULONG               cCountOfAuditEntries,
  272.     OUT PEXPLICIT_ACCESS_W * pListOfAuditEntries,
  273.     IN  PSECURITY_DESCRIPTOR pSD
  274.     );
  275. #ifdef UNICODE
  276. #define LookupSecurityDescriptorParts  LookupSecurityDescriptorPartsW
  277. #else
  278. #define LookupSecurityDescriptorParts  LookupSecurityDescriptorPartsA
  279. #endif // !UNICODE
  280.  
  281.  
  282. //----------------------------------------------------------------------------
  283. // The following helper API are provided for building
  284. // access control structures.
  285. //----------------------------------------------------------------------------
  286.  
  287. WINADVAPI
  288. VOID
  289. WINAPI
  290. BuildExplicitAccessWithNameA(
  291.     IN OUT PEXPLICIT_ACCESS_A  pExplicitAccess,
  292.     IN     LPSTR             pTrusteeName,
  293.     IN     DWORD               AccessPermissions,
  294.     IN     ACCESS_MODE         AccessMode,
  295.     IN     DWORD               Inheritance
  296.     );
  297. WINADVAPI
  298. VOID
  299. WINAPI
  300. BuildExplicitAccessWithNameW(
  301.     IN OUT PEXPLICIT_ACCESS_W  pExplicitAccess,
  302.     IN     LPWSTR             pTrusteeName,
  303.     IN     DWORD               AccessPermissions,
  304.     IN     ACCESS_MODE         AccessMode,
  305.     IN     DWORD               Inheritance
  306.     );
  307. #ifdef UNICODE
  308. #define BuildExplicitAccessWithName  BuildExplicitAccessWithNameW
  309. #else
  310. #define BuildExplicitAccessWithName  BuildExplicitAccessWithNameA
  311. #endif // !UNICODE
  312.  
  313. WINADVAPI
  314. VOID
  315. WINAPI
  316. BuildImpersonateExplicitAccessWithNameA(
  317.     IN OUT PEXPLICIT_ACCESS_A  pExplicitAccess,
  318.     IN     LPSTR             pTrusteeName,
  319.     IN     PTRUSTEE_A          pTrustee,
  320.     IN     DWORD               AccessPermissions,
  321.     IN     ACCESS_MODE         AccessMode,
  322.     IN     DWORD               Inheritance
  323.     );
  324. WINADVAPI
  325. VOID
  326. WINAPI
  327. BuildImpersonateExplicitAccessWithNameW(
  328.     IN OUT PEXPLICIT_ACCESS_W  pExplicitAccess,
  329.     IN     LPWSTR             pTrusteeName,
  330.     IN     PTRUSTEE_W          pTrustee,
  331.     IN     DWORD               AccessPermissions,
  332.     IN     ACCESS_MODE         AccessMode,
  333.     IN     DWORD               Inheritance
  334.     );
  335. #ifdef UNICODE
  336. #define BuildImpersonateExplicitAccessWithName  BuildImpersonateExplicitAccessWithNameW
  337. #else
  338. #define BuildImpersonateExplicitAccessWithName  BuildImpersonateExplicitAccessWithNameA
  339. #endif // !UNICODE
  340.  
  341. WINADVAPI
  342. VOID
  343. WINAPI
  344. BuildTrusteeWithNameA(
  345.     IN OUT PTRUSTEE_A  pTrustee,
  346.         IN     LPSTR     pName
  347.     );
  348. WINADVAPI
  349. VOID
  350. WINAPI
  351. BuildTrusteeWithNameW(
  352.     IN OUT PTRUSTEE_W  pTrustee,
  353.         IN     LPWSTR     pName
  354.     );
  355. #ifdef UNICODE
  356. #define BuildTrusteeWithName  BuildTrusteeWithNameW
  357. #else
  358. #define BuildTrusteeWithName  BuildTrusteeWithNameA
  359. #endif // !UNICODE
  360.  
  361. WINADVAPI
  362. VOID
  363. WINAPI
  364. BuildImpersonateTrusteeA(
  365.     IN OUT PTRUSTEE_A  pTrustee,
  366.     IN     PTRUSTEE_A  pImpersonateTrustee
  367.     );
  368. WINADVAPI
  369. VOID
  370. WINAPI
  371. BuildImpersonateTrusteeW(
  372.     IN OUT PTRUSTEE_W  pTrustee,
  373.     IN     PTRUSTEE_W  pImpersonateTrustee
  374.     );
  375. #ifdef UNICODE
  376. #define BuildImpersonateTrustee  BuildImpersonateTrusteeW
  377. #else
  378. #define BuildImpersonateTrustee  BuildImpersonateTrusteeA
  379. #endif // !UNICODE
  380.  
  381. WINADVAPI
  382. VOID
  383. WINAPI
  384. BuildTrusteeWithSidA(
  385.     IN OUT PTRUSTEE_A  pTrustee,
  386.     IN     PSID        pSid
  387.     );
  388. WINADVAPI
  389. VOID
  390. WINAPI
  391. BuildTrusteeWithSidW(
  392.     IN OUT PTRUSTEE_W  pTrustee,
  393.     IN     PSID        pSid
  394.     );
  395. #ifdef UNICODE
  396. #define BuildTrusteeWithSid  BuildTrusteeWithSidW
  397. #else
  398. #define BuildTrusteeWithSid  BuildTrusteeWithSidA
  399. #endif // !UNICODE
  400.  
  401. WINADVAPI
  402. VOID
  403. WINAPI
  404. BuildTrusteeWithObjectsAndSidA(
  405.     IN OUT PTRUSTEE_A         pTrustee,
  406.     IN     POBJECTS_AND_SID   pObjSid,
  407.     IN     GUID             * pObjectGuid,
  408.     IN     GUID             * pInheritedObjectGuid,
  409.     IN     PSID               pSid
  410.     );
  411. WINADVAPI
  412. VOID
  413. WINAPI
  414. BuildTrusteeWithObjectsAndSidW(
  415.     IN OUT PTRUSTEE_W         pTrustee,
  416.     IN     POBJECTS_AND_SID   pObjSid,
  417.     IN     GUID             * pObjectGuid,
  418.     IN     GUID             * pInheritedObjectGuid,
  419.     IN     PSID               pSid
  420.     );
  421. #ifdef UNICODE
  422. #define BuildTrusteeWithObjectsAndSid  BuildTrusteeWithObjectsAndSidW
  423. #else
  424. #define BuildTrusteeWithObjectsAndSid  BuildTrusteeWithObjectsAndSidA
  425. #endif // !UNICODE
  426.  
  427. WINADVAPI
  428. VOID
  429. WINAPI
  430. BuildTrusteeWithObjectsAndNameA(
  431.     IN OUT PTRUSTEE_A          pTrustee,
  432.     IN     POBJECTS_AND_NAME_A pObjName,
  433.     IN     SE_OBJECT_TYPE      ObjectType,
  434.     IN     LPSTR             ObjectTypeName,
  435.     IN     LPSTR             InheritedObjectTypeName,
  436.     IN     LPSTR             Name
  437.     );
  438. WINADVAPI
  439. VOID
  440. WINAPI
  441. BuildTrusteeWithObjectsAndNameW(
  442.     IN OUT PTRUSTEE_W          pTrustee,
  443.     IN     POBJECTS_AND_NAME_W pObjName,
  444.     IN     SE_OBJECT_TYPE      ObjectType,
  445.     IN     LPWSTR             ObjectTypeName,
  446.     IN     LPWSTR             InheritedObjectTypeName,
  447.     IN     LPWSTR             Name
  448.     );
  449. #ifdef UNICODE
  450. #define BuildTrusteeWithObjectsAndName  BuildTrusteeWithObjectsAndNameW
  451. #else
  452. #define BuildTrusteeWithObjectsAndName  BuildTrusteeWithObjectsAndNameA
  453. #endif // !UNICODE
  454.  
  455. WINADVAPI
  456. LPSTR
  457. WINAPI
  458. GetTrusteeNameA(
  459.     IN PTRUSTEE_A  pTrustee
  460.     );
  461. WINADVAPI
  462. LPWSTR
  463. WINAPI
  464. GetTrusteeNameW(
  465.     IN PTRUSTEE_W  pTrustee
  466.     );
  467. #ifdef UNICODE
  468. #define GetTrusteeName  GetTrusteeNameW
  469. #else
  470. #define GetTrusteeName  GetTrusteeNameA
  471. #endif // !UNICODE
  472.  
  473. WINADVAPI
  474. TRUSTEE_TYPE
  475. WINAPI
  476. GetTrusteeTypeA(
  477.     IN PTRUSTEE_A  pTrustee
  478.     );
  479. WINADVAPI
  480. TRUSTEE_TYPE
  481. WINAPI
  482. GetTrusteeTypeW(
  483.     IN PTRUSTEE_W  pTrustee
  484.     );
  485. #ifdef UNICODE
  486. #define GetTrusteeType  GetTrusteeTypeW
  487. #else
  488. #define GetTrusteeType  GetTrusteeTypeA
  489. #endif // !UNICODE
  490.  
  491. WINADVAPI
  492. TRUSTEE_FORM
  493. WINAPI
  494. GetTrusteeFormA(
  495.     IN PTRUSTEE_A  pTrustee
  496.     );
  497. WINADVAPI
  498. TRUSTEE_FORM
  499. WINAPI
  500. GetTrusteeFormW(
  501.     IN PTRUSTEE_W  pTrustee
  502.     );
  503. #ifdef UNICODE
  504. #define GetTrusteeForm  GetTrusteeFormW
  505. #else
  506. #define GetTrusteeForm  GetTrusteeFormA
  507. #endif // !UNICODE
  508.  
  509. WINADVAPI
  510. MULTIPLE_TRUSTEE_OPERATION
  511. WINAPI
  512. GetMultipleTrusteeOperationA(
  513.     IN PTRUSTEE_A  pTrustee
  514.     );
  515. WINADVAPI
  516. MULTIPLE_TRUSTEE_OPERATION
  517. WINAPI
  518. GetMultipleTrusteeOperationW(
  519.     IN PTRUSTEE_W  pTrustee
  520.     );
  521. #ifdef UNICODE
  522. #define GetMultipleTrusteeOperation  GetMultipleTrusteeOperationW
  523. #else
  524. #define GetMultipleTrusteeOperation  GetMultipleTrusteeOperationA
  525. #endif // !UNICODE
  526.  
  527. WINADVAPI
  528. PTRUSTEE_A
  529. WINAPI
  530. GetMultipleTrusteeA(
  531.     IN PTRUSTEE_A  pTrustee
  532.     );
  533. WINADVAPI
  534. PTRUSTEE_W
  535. WINAPI
  536. GetMultipleTrusteeW(
  537.     IN PTRUSTEE_W  pTrustee
  538.     );
  539. #ifdef UNICODE
  540. #define GetMultipleTrustee  GetMultipleTrusteeW
  541. #else
  542. #define GetMultipleTrustee  GetMultipleTrusteeA
  543. #endif // !UNICODE
  544.  
  545. //
  546. // Temporary requirement for the technology preview, no longer required
  547. //
  548. #define AccProvInit(err)
  549.  
  550. #ifdef __cplusplus
  551. }
  552. #endif
  553.  
  554.  
  555. #pragma option pop /*P_O_Pop*/
  556. #endif // __ACCESS_CONTROL_API__
  557.  
  558.