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