home *** CD-ROM | disk | FTP | other *** search
/ PC Plus SuperCD (UK) 2000 May / PCP163A.iso / Runimage / Cbuilder4 / Include / ACLAPI.H < prev    next >
Encoding:
C/C++ Source or Header  |  1999-01-26  |  27.3 KB  |  718 lines

  1. //+-------------------------------------------------------------------
  2. //
  3. //  Microsoft Windows
  4. //  Copyright (C) Microsoft Corporation, 1993-1997.
  5. //
  6. //  File:        aclapi.h
  7. //
  8. //  Contents:    public header file for acl and trusted server access control
  9. //               APIs
  10. //
  11. //--------------------------------------------------------------------
  12. #ifndef __ACCESS_CONTROL_API__
  13. #pragma option push -b -a8 -pc -A- /*P_O_Push_S*/
  14. #define __ACCESS_CONTROL_API__
  15.  
  16.  
  17. #ifdef __cplusplus
  18. extern "C" {
  19. #endif
  20.  
  21. #include <windows.h>
  22. #include <accctrl.h>
  23.  
  24. DWORD
  25. WINAPI
  26. SetEntriesInAclA( IN  ULONG               cCountOfExplicitEntries,
  27.                   IN  PEXPLICIT_ACCESS_A  pListOfExplicitEntries,
  28.                   IN  PACL                OldAcl,
  29.                   OUT PACL              * NewAcl);
  30. DWORD
  31. WINAPI
  32. SetEntriesInAclW( IN  ULONG               cCountOfExplicitEntries,
  33.                   IN  PEXPLICIT_ACCESS_W  pListOfExplicitEntries,
  34.                   IN  PACL                OldAcl,
  35.                   OUT PACL              * NewAcl);
  36. #ifdef UNICODE
  37. #define SetEntriesInAcl  SetEntriesInAclW
  38. #else
  39. #define SetEntriesInAcl  SetEntriesInAclA
  40. #endif // !UNICODE
  41.  
  42.  
  43. DWORD
  44. WINAPI
  45. GetExplicitEntriesFromAclA( IN  PACL                  pacl,
  46.                             OUT PULONG                pcCountOfExplicitEntries,
  47.                             OUT PEXPLICIT_ACCESS_A  * pListOfExplicitEntries);
  48. DWORD
  49. WINAPI
  50. GetExplicitEntriesFromAclW( IN  PACL                  pacl,
  51.                             OUT PULONG                pcCountOfExplicitEntries,
  52.                             OUT PEXPLICIT_ACCESS_W  * pListOfExplicitEntries);
  53. #ifdef UNICODE
  54. #define GetExplicitEntriesFromAcl  GetExplicitEntriesFromAclW
  55. #else
  56. #define GetExplicitEntriesFromAcl  GetExplicitEntriesFromAclA
  57. #endif // !UNICODE
  58.  
  59.  
  60. DWORD
  61. WINAPI
  62. GetEffectiveRightsFromAclA( IN  PACL          pacl,
  63.                             IN  PTRUSTEE_A    pTrustee,
  64.                             OUT PACCESS_MASK  pAccessRights);
  65. DWORD
  66. WINAPI
  67. GetEffectiveRightsFromAclW( IN  PACL          pacl,
  68.                             IN  PTRUSTEE_W    pTrustee,
  69.                             OUT PACCESS_MASK  pAccessRights);
  70. #ifdef UNICODE
  71. #define GetEffectiveRightsFromAcl  GetEffectiveRightsFromAclW
  72. #else
  73. #define GetEffectiveRightsFromAcl  GetEffectiveRightsFromAclA
  74. #endif // !UNICODE
  75.  
  76.  
  77. DWORD
  78. WINAPI
  79. GetAuditedPermissionsFromAclA( IN  PACL          pacl,
  80.                                IN  PTRUSTEE_A    pTrustee,
  81.                                OUT PACCESS_MASK  pSuccessfulAuditedRights,
  82.                                OUT PACCESS_MASK  pFailedAuditRights);
  83. DWORD
  84. WINAPI
  85. GetAuditedPermissionsFromAclW( IN  PACL          pacl,
  86.                                IN  PTRUSTEE_W    pTrustee,
  87.                                OUT PACCESS_MASK  pSuccessfulAuditedRights,
  88.                                OUT PACCESS_MASK  pFailedAuditRights);
  89. #ifdef UNICODE
  90. #define GetAuditedPermissionsFromAcl  GetAuditedPermissionsFromAclW
  91. #else
  92. #define GetAuditedPermissionsFromAcl  GetAuditedPermissionsFromAclA
  93. #endif // !UNICODE
  94.  
  95.  
  96.  
  97. DWORD
  98. WINAPI
  99. GetNamedSecurityInfoA( IN  LPSTR                pObjectName,
  100.                        IN  SE_OBJECT_TYPE         ObjectType,
  101.                        IN  SECURITY_INFORMATION   SecurityInfo,
  102.                        OUT PSID                 * ppsidOowner,
  103.                        OUT PSID                 * ppsidGroup,
  104.                        OUT PACL                 * ppDacl,
  105.                        OUT PACL                 * ppSacl,
  106.                        OUT PSECURITY_DESCRIPTOR * ppSecurityDescriptor);
  107. DWORD
  108. WINAPI
  109. GetNamedSecurityInfoW( IN  LPWSTR                pObjectName,
  110.                        IN  SE_OBJECT_TYPE         ObjectType,
  111.                        IN  SECURITY_INFORMATION   SecurityInfo,
  112.                        OUT PSID                 * ppsidOowner,
  113.                        OUT PSID                 * ppsidGroup,
  114.                        OUT PACL                 * ppDacl,
  115.                        OUT PACL                 * ppSacl,
  116.                        OUT PSECURITY_DESCRIPTOR * ppSecurityDescriptor);
  117. #ifdef UNICODE
  118. #define GetNamedSecurityInfo  GetNamedSecurityInfoW
  119. #else
  120. #define GetNamedSecurityInfo  GetNamedSecurityInfoA
  121. #endif // !UNICODE
  122.  
  123.  
  124. DWORD
  125. WINAPI
  126. GetSecurityInfo( IN  HANDLE                 handle,
  127.                  IN  SE_OBJECT_TYPE         ObjectType,
  128.                  IN  SECURITY_INFORMATION   SecurityInfo,
  129.                  OUT PSID                 * ppsidOowner,
  130.                  OUT PSID                 * ppsidGroup,
  131.                  OUT PACL                 * ppDacl,
  132.                  OUT PACL                 * ppSacl,
  133.                  OUT PSECURITY_DESCRIPTOR * ppSecurityDescriptor);
  134.  
  135.  
  136. DWORD
  137. WINAPI
  138. SetNamedSecurityInfoA( IN LPSTR               pObjectName,
  139.                        IN SE_OBJECT_TYPE        ObjectType,
  140.                        IN SECURITY_INFORMATION  SecurityInfo,
  141.                        IN PSID                  psidOowner,
  142.                        IN PSID                  psidGroup,
  143.                        IN PACL                  pDacl,
  144.                        IN PACL                  pSacl);
  145. DWORD
  146. WINAPI
  147. SetNamedSecurityInfoW( IN LPWSTR               pObjectName,
  148.                        IN SE_OBJECT_TYPE        ObjectType,
  149.                        IN SECURITY_INFORMATION  SecurityInfo,
  150.                        IN PSID                  psidOowner,
  151.                        IN PSID                  psidGroup,
  152.                        IN PACL                  pDacl,
  153.                        IN PACL                  pSacl);
  154. #ifdef UNICODE
  155. #define SetNamedSecurityInfo  SetNamedSecurityInfoW
  156. #else
  157. #define SetNamedSecurityInfo  SetNamedSecurityInfoA
  158. #endif // !UNICODE
  159.  
  160.  
  161. DWORD
  162. WINAPI
  163. SetSecurityInfo( IN HANDLE                handle,
  164.                  IN SE_OBJECT_TYPE        ObjectType,
  165.                  IN SECURITY_INFORMATION  SecurityInfo,
  166.                  IN PSID                  psidOowner,
  167.                  IN PSID                  psidGroup,
  168.                  IN PACL                  pDacl,
  169.                  IN PACL                  pSacl);
  170.  
  171.  
  172. //----------------------------------------------------------------------------
  173. // The following API are provided for trusted servers to use to
  174. // implement access control on their own objects.
  175. //----------------------------------------------------------------------------
  176.  
  177. DWORD
  178. WINAPI
  179. BuildSecurityDescriptorA( IN  PTRUSTEE_A              pOwner,
  180.                           IN  PTRUSTEE_A              pGroup,
  181.                           IN  ULONG                   cCountOfAccessEntries,
  182.                           IN  PEXPLICIT_ACCESS_A      pListOfAccessEntries,
  183.                           IN  ULONG                   cCountOfAuditEntries,
  184.                           IN  PEXPLICIT_ACCESS_A      pListOfAuditEntries,
  185.                           IN  PSECURITY_DESCRIPTOR    pOldSD,
  186.                           OUT PULONG                  pSizeNewSD,
  187.                           OUT PSECURITY_DESCRIPTOR  * pNewSD);
  188. DWORD
  189. WINAPI
  190. BuildSecurityDescriptorW( IN  PTRUSTEE_W              pOwner,
  191.                           IN  PTRUSTEE_W              pGroup,
  192.                           IN  ULONG                   cCountOfAccessEntries,
  193.                           IN  PEXPLICIT_ACCESS_W      pListOfAccessEntries,
  194.                           IN  ULONG                   cCountOfAuditEntries,
  195.                           IN  PEXPLICIT_ACCESS_W      pListOfAuditEntries,
  196.                           IN  PSECURITY_DESCRIPTOR    pOldSD,
  197.                           OUT PULONG                  pSizeNewSD,
  198.                           OUT PSECURITY_DESCRIPTOR  * pNewSD);
  199. #ifdef UNICODE
  200. #define BuildSecurityDescriptor  BuildSecurityDescriptorW
  201. #else
  202. #define BuildSecurityDescriptor  BuildSecurityDescriptorA
  203. #endif // !UNICODE
  204.  
  205.  
  206. DWORD
  207. WINAPI
  208. LookupSecurityDescriptorPartsA( OUT PTRUSTEE_A         * pOwner,
  209.                                 OUT PTRUSTEE_A         * pGroup,
  210.                                 OUT PULONG               cCountOfAccessEntries,
  211.                                 OUT PEXPLICIT_ACCESS_A * pListOfAccessEntries,
  212.                                 OUT PULONG               cCountOfAuditEntries,
  213.                                 OUT PEXPLICIT_ACCESS_A * pListOfAuditEntries,
  214.                                 IN  PSECURITY_DESCRIPTOR pSD);
  215. DWORD
  216. WINAPI
  217. LookupSecurityDescriptorPartsW( OUT PTRUSTEE_W         * pOwner,
  218.                                 OUT PTRUSTEE_W         * pGroup,
  219.                                 OUT PULONG               cCountOfAccessEntries,
  220.                                 OUT PEXPLICIT_ACCESS_W * pListOfAccessEntries,
  221.                                 OUT PULONG               cCountOfAuditEntries,
  222.                                 OUT PEXPLICIT_ACCESS_W * pListOfAuditEntries,
  223.                                 IN  PSECURITY_DESCRIPTOR pSD);
  224. #ifdef UNICODE
  225. #define LookupSecurityDescriptorParts  LookupSecurityDescriptorPartsW
  226. #else
  227. #define LookupSecurityDescriptorParts  LookupSecurityDescriptorPartsA
  228. #endif // !UNICODE
  229.  
  230.  
  231. //----------------------------------------------------------------------------
  232. // The following helper API are provided for building
  233. // access control structures.
  234. //----------------------------------------------------------------------------
  235.  
  236. VOID
  237. WINAPI
  238. BuildExplicitAccessWithNameA( IN OUT PEXPLICIT_ACCESS_A  pExplicitAccess,
  239.                               IN     LPSTR             pTrusteeName,
  240.                               IN     DWORD               AccessPermissions,
  241.                               IN     ACCESS_MODE         AccessMode,
  242.                               IN     DWORD               Inheritance);
  243. VOID
  244. WINAPI
  245. BuildExplicitAccessWithNameW( IN OUT PEXPLICIT_ACCESS_W  pExplicitAccess,
  246.                               IN     LPWSTR             pTrusteeName,
  247.                               IN     DWORD               AccessPermissions,
  248.                               IN     ACCESS_MODE         AccessMode,
  249.                               IN     DWORD               Inheritance);
  250. #ifdef UNICODE
  251. #define BuildExplicitAccessWithName  BuildExplicitAccessWithNameW
  252. #else
  253. #define BuildExplicitAccessWithName  BuildExplicitAccessWithNameA
  254. #endif // !UNICODE
  255.  
  256.  
  257. VOID
  258. WINAPI
  259. BuildImpersonateExplicitAccessWithNameA(
  260.     IN OUT PEXPLICIT_ACCESS_A  pExplicitAccess,
  261.     IN     LPSTR             pTrusteeName,
  262.     IN     PTRUSTEE_A          pTrustee,
  263.     IN     DWORD               AccessPermissions,
  264.     IN     ACCESS_MODE         AccessMode,
  265.     IN     DWORD               Inheritance);
  266. VOID
  267. WINAPI
  268. BuildImpersonateExplicitAccessWithNameW(
  269.     IN OUT PEXPLICIT_ACCESS_W  pExplicitAccess,
  270.     IN     LPWSTR             pTrusteeName,
  271.     IN     PTRUSTEE_W          pTrustee,
  272.     IN     DWORD               AccessPermissions,
  273.     IN     ACCESS_MODE         AccessMode,
  274.     IN     DWORD               Inheritance);
  275. #ifdef UNICODE
  276. #define BuildImpersonateExplicitAccessWithName  BuildImpersonateExplicitAccessWithNameW
  277. #else
  278. #define BuildImpersonateExplicitAccessWithName  BuildImpersonateExplicitAccessWithNameA
  279. #endif // !UNICODE
  280.  
  281.  
  282. VOID
  283. WINAPI
  284. BuildTrusteeWithNameA( IN OUT PTRUSTEE_A  pTrustee,
  285.                        IN     LPSTR     pName);
  286. VOID
  287. WINAPI
  288. BuildTrusteeWithNameW( IN OUT PTRUSTEE_W  pTrustee,
  289.                        IN     LPWSTR     pName);
  290. #ifdef UNICODE
  291. #define BuildTrusteeWithName  BuildTrusteeWithNameW
  292. #else
  293. #define BuildTrusteeWithName  BuildTrusteeWithNameA
  294. #endif // !UNICODE
  295.  
  296.  
  297. VOID
  298. WINAPI
  299. BuildImpersonateTrusteeA( IN OUT PTRUSTEE_A  pTrustee,
  300.                           IN     PTRUSTEE_A  pImpersonateTrustee);
  301. VOID
  302. WINAPI
  303. BuildImpersonateTrusteeW( IN OUT PTRUSTEE_W  pTrustee,
  304.                           IN     PTRUSTEE_W  pImpersonateTrustee);
  305. #ifdef UNICODE
  306. #define BuildImpersonateTrustee  BuildImpersonateTrusteeW
  307. #else
  308. #define BuildImpersonateTrustee  BuildImpersonateTrusteeA
  309. #endif // !UNICODE
  310.  
  311.  
  312. VOID
  313. WINAPI
  314. BuildTrusteeWithSidA( IN OUT PTRUSTEE_A  pTrustee,
  315.                       IN     PSID        pSid);
  316. VOID
  317. WINAPI
  318. BuildTrusteeWithSidW( IN OUT PTRUSTEE_W  pTrustee,
  319.                       IN     PSID        pSid);
  320. #ifdef UNICODE
  321. #define BuildTrusteeWithSid  BuildTrusteeWithSidW
  322. #else
  323. #define BuildTrusteeWithSid  BuildTrusteeWithSidA
  324. #endif // !UNICODE
  325.  
  326.  
  327. LPSTR
  328. WINAPI
  329. GetTrusteeNameA( IN PTRUSTEE_A  pTrustee);
  330. LPWSTR
  331. WINAPI
  332. GetTrusteeNameW( IN PTRUSTEE_W  pTrustee);
  333. #ifdef UNICODE
  334. #define GetTrusteeName  GetTrusteeNameW
  335. #else
  336. #define GetTrusteeName  GetTrusteeNameA
  337. #endif // !UNICODE
  338.  
  339.  
  340. TRUSTEE_TYPE
  341. WINAPI
  342. GetTrusteeTypeA( IN PTRUSTEE_A  pTrustee);
  343. TRUSTEE_TYPE
  344. WINAPI
  345. GetTrusteeTypeW( IN PTRUSTEE_W  pTrustee);
  346. #ifdef UNICODE
  347. #define GetTrusteeType  GetTrusteeTypeW
  348. #else
  349. #define GetTrusteeType  GetTrusteeTypeA
  350. #endif // !UNICODE
  351.  
  352.  
  353. TRUSTEE_FORM
  354. WINAPI
  355. GetTrusteeFormA( IN PTRUSTEE_A  pTrustee);
  356. TRUSTEE_FORM
  357. WINAPI
  358. GetTrusteeFormW( IN PTRUSTEE_W  pTrustee);
  359. #ifdef UNICODE
  360. #define GetTrusteeForm  GetTrusteeFormW
  361. #else
  362. #define GetTrusteeForm  GetTrusteeFormA
  363. #endif // !UNICODE
  364.  
  365.  
  366.  
  367. MULTIPLE_TRUSTEE_OPERATION
  368. WINAPI
  369. GetMultipleTrusteeOperationA( IN PTRUSTEE_A  pTrustee);
  370. MULTIPLE_TRUSTEE_OPERATION
  371. WINAPI
  372. GetMultipleTrusteeOperationW( IN PTRUSTEE_W  pTrustee);
  373. #ifdef UNICODE
  374. #define GetMultipleTrusteeOperation  GetMultipleTrusteeOperationW
  375. #else
  376. #define GetMultipleTrusteeOperation  GetMultipleTrusteeOperationA
  377. #endif // !UNICODE
  378.  
  379.  
  380.  
  381. PTRUSTEE_A
  382. WINAPI
  383. GetMultipleTrusteeA( IN PTRUSTEE_A  pTrustee);
  384. PTRUSTEE_W
  385. WINAPI
  386. GetMultipleTrusteeW( IN PTRUSTEE_W  pTrustee);
  387. #ifdef UNICODE
  388. #define GetMultipleTrustee  GetMultipleTrusteeW
  389. #else
  390. #define GetMultipleTrustee  GetMultipleTrusteeA
  391. #endif // !UNICODE
  392.  
  393.  
  394. #if(_WIN32_WINNT >= 0x0500)
  395. //----------------------------------------------------------------------------
  396. //
  397. //                                  NT5 APIs
  398. //
  399. //----------------------------------------------------------------------------
  400.  
  401. DWORD
  402. WINAPI
  403. GetNamedSecurityInfoExA(IN   LPCSTR                lpObject,
  404.                         IN   SE_OBJECT_TYPE          ObjectType,
  405.                         IN   SECURITY_INFORMATION    SecurityInfo,
  406.                         IN   LPCSTR                lpProvider,
  407.                         IN   LPCSTR                lpProperty,
  408.                         OUT  PACTRL_ACCESSA         *ppAccessList,
  409.                         OUT  PACTRL_AUDITA          *ppAuditList,
  410.                         OUT  LPSTR                *lppOwner,
  411.                         OUT  LPSTR                *lppGroup);
  412. DWORD
  413. WINAPI
  414. GetNamedSecurityInfoExW(IN   LPCWSTR                lpObject,
  415.                         IN   SE_OBJECT_TYPE          ObjectType,
  416.                         IN   SECURITY_INFORMATION    SecurityInfo,
  417.                         IN   LPCWSTR                lpProvider,
  418.                         IN   LPCWSTR                lpProperty,
  419.                         OUT  PACTRL_ACCESSW         *ppAccessList,
  420.                         OUT  PACTRL_AUDITW          *ppAuditList,
  421.                         OUT  LPWSTR                *lppOwner,
  422.                         OUT  LPWSTR                *lppGroup);
  423. #ifdef UNICODE
  424. #define GetNamedSecurityInfoEx  GetNamedSecurityInfoExW
  425. #else
  426. #define GetNamedSecurityInfoEx  GetNamedSecurityInfoExA
  427. #endif // !UNICODE
  428.  
  429.  
  430. DWORD
  431. WINAPI
  432. SetNamedSecurityInfoExA(IN    LPCSTR               lpObject,
  433.                         IN    SE_OBJECT_TYPE         ObjectType,
  434.                         IN    SECURITY_INFORMATION   SecurityInfo,
  435.                         IN    LPCSTR               lpProvider,
  436.                         IN    PACTRL_ACCESSA         pAccessList,
  437.                         IN    PACTRL_AUDITA          pAuditList,
  438.                         IN    LPSTR                lpOwner,
  439.                         IN    LPSTR                lpGroup,
  440.                         IN    PACTRL_OVERLAPPED      pOverlapped);
  441. DWORD
  442. WINAPI
  443. SetNamedSecurityInfoExW(IN    LPCWSTR               lpObject,
  444.                         IN    SE_OBJECT_TYPE         ObjectType,
  445.                         IN    SECURITY_INFORMATION   SecurityInfo,
  446.                         IN    LPCWSTR               lpProvider,
  447.                         IN    PACTRL_ACCESSW         pAccessList,
  448.                         IN    PACTRL_AUDITW          pAuditList,
  449.                         IN    LPWSTR                lpOwner,
  450.                         IN    LPWSTR                lpGroup,
  451.                         IN    PACTRL_OVERLAPPED      pOverlapped);
  452. #ifdef UNICODE
  453. #define SetNamedSecurityInfoEx  SetNamedSecurityInfoExW
  454. #else
  455. #define SetNamedSecurityInfoEx  SetNamedSecurityInfoExA
  456. #endif // !UNICODE
  457.  
  458.  
  459. DWORD
  460. WINAPI
  461. GetSecurityInfoExA(IN    HANDLE                  hObject,
  462.                    IN    SE_OBJECT_TYPE          ObjectType,
  463.                    IN    SECURITY_INFORMATION    SecurityInfo,
  464.                    IN    LPCSTR                lpProvider,
  465.                    IN    LPCSTR                lpProperty,
  466.                    OUT   PACTRL_ACCESSA         *ppAccessList,
  467.                    OUT   PACTRL_AUDITA          *ppAuditList,
  468.                    OUT   LPSTR                *lppOwner,
  469.                    OUT   LPSTR                *lppGroup);
  470. DWORD
  471. WINAPI
  472. GetSecurityInfoExW(IN    HANDLE                  hObject,
  473.                    IN    SE_OBJECT_TYPE          ObjectType,
  474.                    IN    SECURITY_INFORMATION    SecurityInfo,
  475.                    IN    LPCWSTR                lpProvider,
  476.                    IN    LPCWSTR                lpProperty,
  477.                    OUT   PACTRL_ACCESSW         *ppAccessList,
  478.                    OUT   PACTRL_AUDITW          *ppAuditList,
  479.                    OUT   LPWSTR                *lppOwner,
  480.                    OUT   LPWSTR                *lppGroup);
  481. #ifdef UNICODE
  482. #define GetSecurityInfoEx  GetSecurityInfoExW
  483. #else
  484. #define GetSecurityInfoEx  GetSecurityInfoExA
  485. #endif // !UNICODE
  486.  
  487.  
  488.  
  489. DWORD
  490. WINAPI
  491. SetSecurityInfoExA(IN    HANDLE                 hObject,
  492.                    IN    SE_OBJECT_TYPE         ObjectType,
  493.                    IN    SECURITY_INFORMATION   SecurityInfo,
  494.                    IN    LPCSTR               lpProvider,
  495.                    IN    PACTRL_ACCESSA         pAccessList,
  496.                    IN    PACTRL_AUDITA          pAuditList,
  497.                    IN    LPSTR                lpOwner,
  498.                    IN    LPSTR                lpGroup,
  499.                    OUT   PACTRL_OVERLAPPED      pOverlapped);
  500. DWORD
  501. WINAPI
  502. SetSecurityInfoExW(IN    HANDLE                 hObject,
  503.                    IN    SE_OBJECT_TYPE         ObjectType,
  504.                    IN    SECURITY_INFORMATION   SecurityInfo,
  505.                    IN    LPCWSTR               lpProvider,
  506.                    IN    PACTRL_ACCESSW         pAccessList,
  507.                    IN    PACTRL_AUDITW          pAuditList,
  508.                    IN    LPWSTR                lpOwner,
  509.                    IN    LPWSTR                lpGroup,
  510.                    OUT   PACTRL_OVERLAPPED      pOverlapped);
  511. #ifdef UNICODE
  512. #define SetSecurityInfoEx  SetSecurityInfoExW
  513. #else
  514. #define SetSecurityInfoEx  SetSecurityInfoExA
  515. #endif // !UNICODE
  516.  
  517.  
  518. DWORD
  519. WINAPI
  520. ConvertAccessToSecurityDescriptorA(IN  PACTRL_ACCESSA        pAccessList,
  521.                                    IN  PACTRL_AUDITA         pAuditList,
  522.                                    IN  LPCSTR              lpOwner,
  523.                                    IN  LPCSTR              lpGroup,
  524.                                    OUT PSECURITY_DESCRIPTOR *ppSecDescriptor);
  525. DWORD
  526. WINAPI
  527. ConvertAccessToSecurityDescriptorW(IN  PACTRL_ACCESSW        pAccessList,
  528.                                    IN  PACTRL_AUDITW         pAuditList,
  529.                                    IN  LPCWSTR              lpOwner,
  530.                                    IN  LPCWSTR              lpGroup,
  531.                                    OUT PSECURITY_DESCRIPTOR *ppSecDescriptor);
  532. #ifdef UNICODE
  533. #define ConvertAccessToSecurityDescriptor  ConvertAccessToSecurityDescriptorW
  534. #else
  535. #define ConvertAccessToSecurityDescriptor  ConvertAccessToSecurityDescriptorA
  536. #endif // !UNICODE
  537.  
  538.  
  539. DWORD
  540. WINAPI
  541. ConvertSecurityDescriptorToAccessA(IN  HANDLE               hObject,
  542.                                    IN  SE_OBJECT_TYPE       ObjectType,
  543.                                    IN  PSECURITY_DESCRIPTOR pSecDescriptor,
  544.                                    OUT PACTRL_ACCESSA      *ppAccessList,
  545.                                    OUT PACTRL_AUDITA       *ppAuditList,
  546.                                    OUT LPSTR             *lppOwner,
  547.                                    OUT LPSTR             *lppGroup);
  548. DWORD
  549. WINAPI
  550. ConvertSecurityDescriptorToAccessW(IN  HANDLE               hObject,
  551.                                    IN  SE_OBJECT_TYPE       ObjectType,
  552.                                    IN  PSECURITY_DESCRIPTOR pSecDescriptor,
  553.                                    OUT PACTRL_ACCESSW      *ppAccessList,
  554.                                    OUT PACTRL_AUDITW       *ppAuditList,
  555.                                    OUT LPWSTR             *lppOwner,
  556.                                    OUT LPWSTR             *lppGroup);
  557. #ifdef UNICODE
  558. #define ConvertSecurityDescriptorToAccess  ConvertSecurityDescriptorToAccessW
  559. #else
  560. #define ConvertSecurityDescriptorToAccess  ConvertSecurityDescriptorToAccessA
  561. #endif // !UNICODE
  562.  
  563.  
  564. DWORD
  565. WINAPI
  566. ConvertSecurityDescriptorToAccessNamedA(IN  LPCSTR             lpObject,
  567.                                         IN  SE_OBJECT_TYPE       ObjectType,
  568.                                         IN  PSECURITY_DESCRIPTOR pSecDescriptor,
  569.                                         OUT PACTRL_ACCESSA      *ppAccessList,
  570.                                         OUT PACTRL_AUDITA       *ppAuditList,
  571.                                         OUT LPSTR             *lppOwner,
  572.                                         OUT LPSTR             *lppGroup);
  573. DWORD
  574. WINAPI
  575. ConvertSecurityDescriptorToAccessNamedW(IN  LPCWSTR             lpObject,
  576.                                         IN  SE_OBJECT_TYPE       ObjectType,
  577.                                         IN  PSECURITY_DESCRIPTOR pSecDescriptor,
  578.                                         OUT PACTRL_ACCESSW      *ppAccessList,
  579.                                         OUT PACTRL_AUDITW       *ppAuditList,
  580.                                         OUT LPWSTR             *lppOwner,
  581.                                         OUT LPWSTR             *lppGroup);
  582. #ifdef UNICODE
  583. #define ConvertSecurityDescriptorToAccessNamed  ConvertSecurityDescriptorToAccessNamedW
  584. #else
  585. #define ConvertSecurityDescriptorToAccessNamed  ConvertSecurityDescriptorToAccessNamedA
  586. #endif // !UNICODE
  587.  
  588.  
  589.  
  590.  
  591. DWORD
  592. WINAPI
  593. SetEntriesInAccessListA(IN  ULONG                cEntries,
  594.                         IN  PACTRL_ACCESS_ENTRYA pAccessEntryList,
  595.                         IN  ACCESS_MODE          AccessMode,
  596.                         IN  LPCSTR             lpProperty,
  597.                         IN  PACTRL_ACCESSA       pOldList,
  598.                         OUT PACTRL_ACCESSA      *ppNewList);
  599. DWORD
  600. WINAPI
  601. SetEntriesInAccessListW(IN  ULONG                cEntries,
  602.                         IN  PACTRL_ACCESS_ENTRYW pAccessEntryList,
  603.                         IN  ACCESS_MODE          AccessMode,
  604.                         IN  LPCWSTR             lpProperty,
  605.                         IN  PACTRL_ACCESSW       pOldList,
  606.                         OUT PACTRL_ACCESSW      *ppNewList);
  607. #ifdef UNICODE
  608. #define SetEntriesInAccessList  SetEntriesInAccessListW
  609. #else
  610. #define SetEntriesInAccessList  SetEntriesInAccessListA
  611. #endif // !UNICODE
  612.  
  613.  
  614.  
  615. DWORD
  616. WINAPI
  617. SetEntriesInAuditListA(IN  ULONG                 cEntries,
  618.                        IN  PACTRL_ACCESS_ENTRYA  pAccessEntryList,
  619.                        IN  ACCESS_MODE           AccessMode,
  620.                        IN  LPCSTR              lpProperty,
  621.                        IN  PACTRL_AUDITA         pOldList,
  622.                        OUT PACTRL_AUDITA        *ppNewList);
  623. DWORD
  624. WINAPI
  625. SetEntriesInAuditListW(IN  ULONG                 cEntries,
  626.                        IN  PACTRL_ACCESS_ENTRYW  pAccessEntryList,
  627.                        IN  ACCESS_MODE           AccessMode,
  628.                        IN  LPCWSTR              lpProperty,
  629.                        IN  PACTRL_AUDITW         pOldList,
  630.                        OUT PACTRL_AUDITW        *ppNewList);
  631. #ifdef UNICODE
  632. #define SetEntriesInAuditList  SetEntriesInAuditListW
  633. #else
  634. #define SetEntriesInAuditList  SetEntriesInAuditListA
  635. #endif // !UNICODE
  636.  
  637. DWORD
  638. WINAPI
  639. TrusteeAccessToObjectA(IN        LPCSTR           lpObject,
  640.                        IN        SE_OBJECT_TYPE     ObjectType,
  641.                        IN        LPCSTR           lpProvider,
  642.                        IN        PTRUSTEE_A         pTrustee,
  643.                        IN        ULONG              cEntries,
  644.                        IN OUT    PTRUSTEE_ACCESSA   pTrusteeAccess);
  645. DWORD
  646. WINAPI
  647. TrusteeAccessToObjectW(IN        LPCWSTR           lpObject,
  648.                        IN        SE_OBJECT_TYPE     ObjectType,
  649.                        IN        LPCWSTR           lpProvider,
  650.                        IN        PTRUSTEE_W         pTrustee,
  651.                        IN        ULONG              cEntries,
  652.                        IN OUT    PTRUSTEE_ACCESSW   pTrusteeAccess);
  653. #ifdef UNICODE
  654. #define TrusteeAccessToObject  TrusteeAccessToObjectW
  655. #else
  656. #define TrusteeAccessToObject  TrusteeAccessToObjectA
  657. #endif // !UNICODE
  658.  
  659.  
  660.  
  661. DWORD
  662. WINAPI
  663. GetOverlappedAccessResults( IN  PACTRL_OVERLAPPED   pOverlapped,
  664.                             IN  BOOL                fWaitForCompletion,
  665.                             OUT PDWORD              pResult,
  666.                             OUT PULONG              pcItemsProcessed OPTIONAL);
  667.  
  668.  
  669.  
  670. DWORD
  671. WINAPI
  672. CancelOverlappedAccess(IN       PACTRL_OVERLAPPED   pOverlapped);
  673.  
  674.  
  675. DWORD
  676. WINAPI
  677. GetAccessPermissionsForObjectA(IN   LPCSTR             lpObject,
  678.                                IN   SE_OBJECT_TYPE       ObjectType,
  679.                                IN   LPCSTR             lpObjType,
  680.                                IN   LPCSTR             lpProvider,
  681.                                OUT  PULONG               pcEntries,
  682.                                OUT  PACTRL_ACCESS_INFOA *ppAccessInfoList,
  683.                                OUT  PULONG               pcRights,
  684.                                OUT  PACTRL_CONTROL_INFOA *ppRightsList,
  685.                                OUT  PULONG               pfAccessFlags);
  686. DWORD
  687. WINAPI
  688. GetAccessPermissionsForObjectW(IN   LPCWSTR             lpObject,
  689.                                IN   SE_OBJECT_TYPE       ObjectType,
  690.                                IN   LPCWSTR             lpObjType,
  691.                                IN   LPCWSTR             lpProvider,
  692.                                OUT  PULONG               pcEntries,
  693.                                OUT  PACTRL_ACCESS_INFOW *ppAccessInfoList,
  694.                                OUT  PULONG               pcRights,
  695.                                OUT  PACTRL_CONTROL_INFOW *ppRightsList,
  696.                                OUT  PULONG               pfAccessFlags);
  697. #ifdef UNICODE
  698. #define GetAccessPermissionsForObject  GetAccessPermissionsForObjectW
  699. #else
  700. #define GetAccessPermissionsForObject  GetAccessPermissionsForObjectA
  701. #endif // !UNICODE
  702.  
  703. //
  704. // Temporary requirement for the technology preview, no longer required
  705. //
  706. #define AccProvInit(err)
  707. #endif /* _WIN32_WINNT >=  0x0500 */
  708.  
  709.  
  710. #ifdef __cplusplus
  711. }
  712. #endif
  713.  
  714.  
  715. #pragma option pop /*P_O_Pop*/
  716. #endif // __ACCESS_CONTROL_API__
  717.  
  718.