Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

606 lines
10 KiB

  1. /*++
  2. Copyright (c) 2001 Microsoft Corporation
  3. Module Name:
  4. azrolesp.h
  5. Abstract:
  6. Definitions of C interfaces.
  7. One day all of these interfaces will be in the public SDK. Only such
  8. interfaces exist in this file.
  9. Author:
  10. Cliff Van Dyke (cliffv) 11-Apr-2001
  11. --*/
  12. #ifndef _AZROLESP_H_
  13. #define _AZROLESP_H_
  14. #include "azroles.h"
  15. #if !defined(_AZROLESAPI_)
  16. #define WINAZROLES DECLSPEC_IMPORT
  17. #else
  18. #define WINAZROLES
  19. #endif
  20. #ifdef __cplusplus
  21. extern "C" {
  22. #endif
  23. /////////////////////////////////////////////////////////////////////////////
  24. //
  25. // Value definitions
  26. //
  27. /////////////////////////////////////////////////////////////////////////////
  28. //
  29. // Common Property IDs
  30. //
  31. // This list of property IDs are common to all objects.
  32. // Each object should pick specific property ids after AZ_PROP_FIRST_SPECIFIC
  33. //
  34. #define AZ_PROP_FIRST_SPECIFIC 100
  35. //
  36. // Audit specific constants
  37. //
  38. #define AZP_APPINIT_AUDITPARAMS_NO 4
  39. #define AZP_CLIENTCREATE_AUDITPARAMS_NO 4
  40. #define AZP_ACCESSCHECK_AUDITPARAMS_NO 9
  41. #define AZP_CLIENTDELETE_AUDITPARAMS_NO 3
  42. //
  43. // Maximum length (in characters) of the object name
  44. //
  45. // #define AZ_MAX_APPLICATION_NAME_LENGTH 512
  46. // #define AZ_MAX_OPERATION_NAME_LENGTH 64
  47. // #define AZ_MAX_TASK_NAME_LENGTH 64
  48. // #define AZ_MAX_SCOPE_NAME_LENGTH 65536
  49. // #define AZ_MAX_GROUP_NAME_LENGTH 64
  50. // #define AZ_MAX_ROLE_NAME_LENGTH 64
  51. // #define AZ_MAX_NAME_LENGTH 65536 // Max of the above
  52. //
  53. // Maximum length (in characters) of the description of an object
  54. //
  55. // #define AZ_MAX_DESCRIPTION_LENGTH 1024
  56. //
  57. // Maximum length (in characters) of various object strings
  58. //
  59. // #define AZ_MAX_POLICY_URL_LENGTH 65536
  60. // #define AZ_MAX_GROUP_LDAP_QUERY_LENGTH 4096
  61. /////////////////////////////////////////////////////////////////////////////
  62. //
  63. // Structure definitions
  64. //
  65. /////////////////////////////////////////////////////////////////////////////
  66. //
  67. // Handle to various objects returned to caller
  68. //
  69. typedef PVOID AZ_HANDLE;
  70. typedef AZ_HANDLE *PAZ_HANDLE;
  71. //
  72. // Array of strings returned from various "GetProperty" procedures
  73. //
  74. typedef struct _AZ_STRING_ARRAY {
  75. //
  76. // Number of strings
  77. //
  78. ULONG StringCount;
  79. //
  80. // An array of StringCount pointers to strings.
  81. //
  82. LPWSTR *Strings;
  83. } AZ_STRING_ARRAY, *PAZ_STRING_ARRAY;
  84. //
  85. // Array of SIDs returned from various "GetProperty" procedures
  86. //
  87. typedef struct _AZ_SID_ARRAY {
  88. //
  89. // Number of SIDs
  90. //
  91. ULONG SidCount;
  92. //
  93. // An array of SidCount pointers to SIDs.
  94. //
  95. PSID *Sids;
  96. } AZ_SID_ARRAY, *PAZ_SID_ARRAY;
  97. //
  98. // Array of GUIDs returned from various "GetProperty" procedures
  99. //
  100. typedef struct _AZ_GUID_ARRAY {
  101. //
  102. // Number of GUIDs
  103. //
  104. ULONG GuidCount;
  105. //
  106. // An array of GuidCount pointers to GUIDs.
  107. //
  108. GUID **Guids;
  109. } AZ_GUID_ARRAY, *PAZ_GUID_ARRAY;
  110. /////////////////////////////////////////////////////////////////////////////
  111. //
  112. // Procedure definitions
  113. //
  114. /////////////////////////////////////////////////////////////////////////////
  115. WINAZROLES
  116. DWORD
  117. WINAPI
  118. AzInitialize(
  119. IN LPCWSTR PolicyUrl,
  120. IN DWORD Flags,
  121. IN DWORD Reserved,
  122. OUT PAZ_HANDLE AzStoreHandle
  123. );
  124. WINAZROLES
  125. DWORD
  126. WINAPI
  127. AzUpdateCache(
  128. IN AZ_HANDLE AzStoreHandle
  129. );
  130. WINAZROLES
  131. DWORD
  132. WINAPI
  133. AzGetProperty(
  134. IN AZ_HANDLE AzHandle,
  135. IN ULONG PropertyId,
  136. IN DWORD Reserved,
  137. OUT PVOID *PropertyValue
  138. );
  139. WINAZROLES
  140. DWORD
  141. WINAPI
  142. AzSetProperty(
  143. IN AZ_HANDLE AzHandle,
  144. IN ULONG PropertyId,
  145. IN DWORD Reserved,
  146. IN PVOID PropertyValue
  147. );
  148. WINAZROLES
  149. DWORD
  150. WINAPI
  151. AzAddPropertyItem(
  152. IN AZ_HANDLE AzHandle,
  153. IN ULONG PropertyId,
  154. IN DWORD Reserved,
  155. IN PVOID PropertyValue
  156. );
  157. WINAZROLES
  158. DWORD
  159. WINAPI
  160. AzRemovePropertyItem(
  161. IN AZ_HANDLE AzHandle,
  162. IN ULONG PropertyId,
  163. IN DWORD Reserved,
  164. IN PVOID PropertyValue
  165. );
  166. //
  167. // Flags to AuthorizationStore routines
  168. //
  169. #define AZ_AZSTORE_FLAG_VALID 0x000F // Mask of all valid flags
  170. //
  171. // AzAuthorizationStore routines
  172. //
  173. WINAZROLES
  174. DWORD
  175. WINAPI
  176. AzAuthorizationStoreDelete(
  177. IN AZ_HANDLE AzStoreHandle,
  178. IN DWORD Reserved
  179. );
  180. //
  181. // Application routines
  182. //
  183. WINAZROLES
  184. DWORD
  185. WINAPI
  186. AzApplicationCreate(
  187. IN AZ_HANDLE AzStoreHandle,
  188. IN LPCWSTR ApplicationName,
  189. IN DWORD Reserved,
  190. OUT PAZ_HANDLE ApplicationHandle
  191. );
  192. WINAZROLES
  193. DWORD
  194. WINAPI
  195. AzApplicationOpen(
  196. IN AZ_HANDLE AzStoreHandle,
  197. IN LPCWSTR ApplicationName,
  198. IN DWORD Reserved,
  199. OUT PAZ_HANDLE ApplicationHandle
  200. );
  201. WINAZROLES
  202. DWORD
  203. WINAPI
  204. AzApplicationClose(
  205. IN AZ_HANDLE AzAuthorizationStoreHandle,
  206. IN LPCWSTR pApplicationName,
  207. IN LONG lFlags
  208. );
  209. WINAZROLES
  210. DWORD
  211. WINAPI
  212. AzApplicationEnum(
  213. IN AZ_HANDLE AzStoreHandle,
  214. IN DWORD Reserved,
  215. IN OUT PULONG EnumerationContext,
  216. OUT PAZ_HANDLE ApplicationHandle
  217. );
  218. WINAZROLES
  219. DWORD
  220. WINAPI
  221. AzApplicationDelete(
  222. IN AZ_HANDLE AzStoreHandle,
  223. IN LPCWSTR ApplicationName,
  224. IN DWORD Reserved
  225. );
  226. //
  227. // Operation routines
  228. //
  229. WINAZROLES
  230. DWORD
  231. WINAPI
  232. AzOperationCreate(
  233. IN AZ_HANDLE ApplicationHandle,
  234. IN LPCWSTR OperationName,
  235. IN DWORD Reserved,
  236. OUT PAZ_HANDLE OperationHandle
  237. );
  238. WINAZROLES
  239. DWORD
  240. WINAPI
  241. AzOperationOpen(
  242. IN AZ_HANDLE ApplicationHandle,
  243. IN LPCWSTR OperationName,
  244. IN DWORD Reserved,
  245. OUT PAZ_HANDLE OperationHandle
  246. );
  247. WINAZROLES
  248. DWORD
  249. WINAPI
  250. AzOperationEnum(
  251. IN AZ_HANDLE ApplicationHandle,
  252. IN DWORD Reserved,
  253. IN OUT PULONG EnumerationContext,
  254. OUT PAZ_HANDLE OperationHandle
  255. );
  256. WINAZROLES
  257. DWORD
  258. WINAPI
  259. AzOperationDelete(
  260. IN AZ_HANDLE ApplicationHandle,
  261. IN LPCWSTR OperationName,
  262. IN DWORD Reserved
  263. );
  264. //
  265. // Task routines
  266. //
  267. WINAZROLES
  268. DWORD
  269. WINAPI
  270. AzTaskCreate(
  271. IN AZ_HANDLE ApplicationHandle,
  272. IN LPCWSTR TaskName,
  273. IN DWORD Reserved,
  274. OUT PAZ_HANDLE TaskHandle
  275. );
  276. WINAZROLES
  277. DWORD
  278. WINAPI
  279. AzTaskOpen(
  280. IN AZ_HANDLE ApplicationHandle,
  281. IN LPCWSTR TaskName,
  282. IN DWORD Reserved,
  283. OUT PAZ_HANDLE TaskHandle
  284. );
  285. WINAZROLES
  286. DWORD
  287. WINAPI
  288. AzTaskEnum(
  289. IN AZ_HANDLE ApplicationHandle,
  290. IN DWORD Reserved,
  291. IN OUT PULONG EnumerationContext,
  292. OUT PAZ_HANDLE TaskHandle
  293. );
  294. WINAZROLES
  295. DWORD
  296. WINAPI
  297. AzTaskDelete(
  298. IN AZ_HANDLE ApplicationHandle,
  299. IN LPCWSTR TaskName,
  300. IN DWORD Reserved
  301. );
  302. //
  303. // Scope routines
  304. //
  305. WINAZROLES
  306. DWORD
  307. WINAPI
  308. AzScopeCreate(
  309. IN AZ_HANDLE ApplicationHandle,
  310. IN LPCWSTR ScopeName,
  311. IN DWORD Reserved,
  312. OUT PAZ_HANDLE ScopeHandle
  313. );
  314. WINAZROLES
  315. DWORD
  316. WINAPI
  317. AzScopeOpen(
  318. IN AZ_HANDLE ApplicationHandle,
  319. IN LPCWSTR ScopeName,
  320. IN DWORD Reserved,
  321. OUT PAZ_HANDLE ScopeHandle
  322. );
  323. WINAZROLES
  324. DWORD
  325. WINAPI
  326. AzScopeEnum(
  327. IN AZ_HANDLE ApplicationHandle,
  328. IN DWORD Reserved,
  329. IN OUT PULONG EnumerationContext,
  330. OUT PAZ_HANDLE ScopeHandle
  331. );
  332. WINAZROLES
  333. DWORD
  334. WINAPI
  335. AzScopeDelete(
  336. IN AZ_HANDLE ApplicationHandle,
  337. IN LPCWSTR ScopeName,
  338. IN DWORD Reserved
  339. );
  340. //
  341. // Group routines
  342. //
  343. WINAZROLES
  344. DWORD
  345. WINAPI
  346. AzGroupCreate(
  347. IN AZ_HANDLE ParentHandle,
  348. IN LPCWSTR GroupName,
  349. IN DWORD Reserved,
  350. OUT PAZ_HANDLE GroupHandle
  351. );
  352. WINAZROLES
  353. DWORD
  354. WINAPI
  355. AzGroupOpen(
  356. IN AZ_HANDLE ParentHandle,
  357. IN LPCWSTR GroupName,
  358. IN DWORD Reserved,
  359. OUT PAZ_HANDLE GroupHandle
  360. );
  361. WINAZROLES
  362. DWORD
  363. WINAPI
  364. AzGroupEnum(
  365. IN AZ_HANDLE ParentHandle,
  366. IN DWORD Reserved,
  367. IN OUT PULONG EnumerationContext,
  368. OUT PAZ_HANDLE GroupHandle
  369. );
  370. WINAZROLES
  371. DWORD
  372. WINAPI
  373. AzGroupDelete(
  374. IN AZ_HANDLE ParentHandle,
  375. IN LPCWSTR GroupName,
  376. IN DWORD Reserved
  377. );
  378. //
  379. // Role routines
  380. //
  381. WINAZROLES
  382. DWORD
  383. WINAPI
  384. AzRoleCreate(
  385. IN AZ_HANDLE ParentHandle,
  386. IN LPCWSTR RoleName,
  387. IN DWORD Reserved,
  388. OUT PAZ_HANDLE RoleHandle
  389. );
  390. WINAZROLES
  391. DWORD
  392. WINAPI
  393. AzRoleOpen(
  394. IN AZ_HANDLE ParentHandle,
  395. IN LPCWSTR RoleName,
  396. IN DWORD Reserved,
  397. OUT PAZ_HANDLE RoleHandle
  398. );
  399. WINAZROLES
  400. DWORD
  401. WINAPI
  402. AzRoleEnum(
  403. IN AZ_HANDLE ParentHandle,
  404. IN DWORD Reserved,
  405. IN OUT PULONG EnumerationContext,
  406. OUT PAZ_HANDLE RoleHandle
  407. );
  408. WINAZROLES
  409. DWORD
  410. WINAPI
  411. AzRoleDelete(
  412. IN AZ_HANDLE ParentHandle,
  413. IN LPCWSTR RoleName,
  414. IN DWORD Reserved
  415. );
  416. //
  417. // Routines common to all objects
  418. //
  419. WINAZROLES
  420. DWORD
  421. WINAPI
  422. AzCloseHandle(
  423. IN AZ_HANDLE AzHandle,
  424. IN DWORD Reserved
  425. );
  426. WINAZROLES
  427. DWORD
  428. WINAPI
  429. AzSubmit(
  430. IN AZ_HANDLE AzHandle,
  431. IN DWORD Flags,
  432. IN DWORD Reserved
  433. );
  434. WINAZROLES
  435. VOID
  436. WINAPI
  437. AzFreeMemory(
  438. IN OUT PVOID Buffer
  439. );
  440. //
  441. // Client context routines
  442. //
  443. WINAZROLES
  444. DWORD
  445. WINAPI
  446. AzInitializeContextFromToken(
  447. IN AZ_HANDLE ApplicationHandle,
  448. IN HANDLE TokenHandle OPTIONAL,
  449. IN DWORD Reserved,
  450. OUT PAZ_HANDLE ClientContextHandle
  451. );
  452. WINAZROLES
  453. DWORD
  454. WINAPI
  455. AzInitializeContextFromName(
  456. IN AZ_HANDLE ApplicationHandle,
  457. IN LPWSTR DomainName OPTIONAL,
  458. IN LPWSTR ClientName,
  459. IN DWORD Reserved,
  460. OUT PAZ_HANDLE ClientContextHandle
  461. );
  462. WINAZROLES
  463. DWORD
  464. WINAPI
  465. AzInitializeContextFromStringSid(
  466. IN AZ_HANDLE ApplicationHandle,
  467. IN LPCWSTR SidString,
  468. IN DWORD lOptions,
  469. OUT PAZ_HANDLE ClientContextHandle
  470. );
  471. WINAZROLES
  472. DWORD
  473. WINAPI
  474. AzContextAccessCheck(
  475. IN AZ_HANDLE ApplicationObjectHandle,
  476. IN DWORD ApplicationSequenceNumber,
  477. IN AZ_HANDLE ClientContextHandle,
  478. IN LPCWSTR ObjectName,
  479. IN ULONG ScopeCount,
  480. IN LPCWSTR * ScopeNames,
  481. IN ULONG OperationCount,
  482. IN PLONG Operations,
  483. OUT ULONG *Results,
  484. OUT LPWSTR *BusinessRuleString OPTIONAL,
  485. IN VARIANT *ParameterNames OPTIONAL,
  486. IN VARIANT *ParameterValues OPTIONAL,
  487. IN VARIANT *InterfaceNames OPTIONAL,
  488. IN VARIANT *InterfaceFlags OPTIONAL,
  489. IN VARIANT *Interfaces OPTIONAL
  490. );
  491. WINAZROLES
  492. DWORD
  493. WINAPI
  494. AzContextGetRoles(
  495. IN AZ_HANDLE ClientContextHandle,
  496. IN LPCWSTR ScopeName OPTIONAL,
  497. OUT LPWSTR **RoleNames,
  498. OUT DWORD *Count
  499. );
  500. #ifdef __cplusplus
  501. }
  502. #endif
  503. #endif // _AZROLESP_H_