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.

2050 lines
57 KiB

  1. /*++
  2. Copyright (C) Microsoft Corporation, 1995 - 1997
  3. Module Name:
  4. llsrpc.idl
  5. Abstract:
  6. License Logging Service RPC Interface Definition File
  7. This file contains the RPC Interface Definition Language file for
  8. the LLS.
  9. Author:
  10. Arthur Hanson (arth) Jan 20-1994
  11. Environment:
  12. User Mode
  13. Revision History:
  14. Jeff Parham (jeffparh) 06-Dec-1995
  15. o Added LLS_LICENSE_INFO_1 and LLS_PRODUCT_LICENSE_INFO_1 support.
  16. o Added new API's for SUR.
  17. o Plugged memory leak at the server caused by LlsConnect() and
  18. LlsReplConnect() being defined as taking PNAMEW parameters (which
  19. differ from LPWSTR's in the sense that they're not automatically
  20. freed at the server), even though they neither stored nor freed
  21. the passed pointers.
  22. --*/
  23. [
  24. uuid(342CFD40-3C6C-11CE-A893-08002B2E9C6D),
  25. version(0.0),
  26. #ifdef __midl
  27. ms_union,
  28. #endif // __midl
  29. pointer_default(unique)
  30. ]
  31. interface llsrpc
  32. {
  33. //
  34. // Import a dummy interface containing #includes for public .h files. This
  35. // trick is necessary so that midl will only generate marshalling routines
  36. // for subtypes that are relevant to the parameters specified on the RPC
  37. // interface. midl also ingores function prototypes contained therein.
  38. //
  39. import "llsimp.idl" ;
  40. //
  41. // Emit these constants into the generated file.
  42. //
  43. cpp_quote("#define LLS_LPC_ENDPOINT \"llslpc\"")
  44. //
  45. // Note: Must use quad backslash to emit two backslashes into #define
  46. // which when compiled will boil down to single backslash
  47. //
  48. cpp_quote("#define LLS_NP_ENDPOINT \"\\\\pipe\\\\llsrpc\"")
  49. //
  50. // LLS RPC Context Handle
  51. //
  52. typedef [context_handle] PVOID LLS_HANDLE;
  53. typedef [context_handle] PVOID LLS_REPL_HANDLE;
  54. typedef [ref] LLS_HANDLE * PLLS_HANDLE;
  55. typedef [ref] LLS_REPL_HANDLE * PLLS_REPL_HANDLE;
  56. // these are not freed at the server
  57. typedef [string] LPWSTR PNAMEW;
  58. typedef [string] LPSTR PNAMEA;
  59. ///////////////////////////////////////////////////////////////////////////////
  60. ///////////////////////////////////////////////////////////////////////////////
  61. ///////////////////////////////////////////////////////////////////////////////
  62. ///////////////////////////////////////////////////////////////////////////////
  63. // License Info
  64. ///////////////////////////////////////////////////////////////////////////////
  65. //
  66. // Unicode
  67. //
  68. typedef struct _LLS_LICENSE_INFO_0W {
  69. PNAMEW Product;
  70. LONG Quantity;
  71. DWORD Date;
  72. PNAMEW Admin;
  73. PNAMEW Comment;
  74. } LLS_LICENSE_INFO_0W, *PLLS_LICENSE_INFO_0W;
  75. typedef struct _LLS_LICENSE_INFO_1W {
  76. PNAMEW Product;
  77. PNAMEW Vendor;
  78. LONG Quantity;
  79. DWORD MaxQuantity;
  80. DWORD Date;
  81. PNAMEW Admin;
  82. PNAMEW Comment;
  83. DWORD AllowedModes;
  84. DWORD CertificateID;
  85. PNAMEW Source;
  86. DWORD ExpirationDate;
  87. DWORD Secrets[ 4 ];
  88. } LLS_LICENSE_INFO_1W, *PLLS_LICENSE_INFO_1W;
  89. typedef [switch_type(DWORD)] union {
  90. [case(0)] LLS_LICENSE_INFO_0W LicenseInfo0;
  91. [case(1)] LLS_LICENSE_INFO_1W LicenseInfo1;
  92. } LLS_LICENSE_INFOW, *PLLS_LICENSE_INFOW;
  93. typedef struct _LLS_LICENSE_INFO_0_CONTAINERW {
  94. DWORD EntriesRead;
  95. [size_is(EntriesRead)] PLLS_LICENSE_INFO_0W Buffer;
  96. } LLS_LICENSE_INFO_0_CONTAINERW, *PLLS_LICENSE_INFO_0_CONTAINERW;
  97. typedef struct _LLS_LICENSE_INFO_1_CONTAINERW {
  98. DWORD EntriesRead;
  99. [size_is(EntriesRead)] PLLS_LICENSE_INFO_1W Buffer;
  100. } LLS_LICENSE_INFO_1_CONTAINERW, *PLLS_LICENSE_INFO_1_CONTAINERW;
  101. typedef struct _LLS_LICENSE_ENUM_STRUCTW {
  102. DWORD Level;
  103. [switch_is(Level)] union _LLS_LICENSE_ENUM_UNIONW {
  104. [case(0)]
  105. PLLS_LICENSE_INFO_0_CONTAINERW Level0;
  106. [case(1)]
  107. PLLS_LICENSE_INFO_1_CONTAINERW Level1;
  108. [default]
  109. ;
  110. } LlsLicenseInfo;
  111. } LLS_LICENSE_ENUM_STRUCTW, *PLLS_LICENSE_ENUM_STRUCTW;
  112. //
  113. // ANSI
  114. //
  115. typedef struct _LLS_LICENSE_INFO_0A {
  116. PNAMEA Product;
  117. LONG Quantity;
  118. DWORD Date;
  119. PNAMEA Admin;
  120. PNAMEA Comment;
  121. } LLS_LICENSE_INFO_0A, *PLLS_LICENSE_INFO_0A;
  122. typedef struct _LLS_LICENSE_INFO_1A
  123. {
  124. PNAMEA Product;
  125. PNAMEA Vendor;
  126. LONG Quantity;
  127. DWORD MaxQuantity;
  128. DWORD Date;
  129. PNAMEA Admin;
  130. PNAMEA Comment;
  131. DWORD AllowedModes;
  132. DWORD CertificateID;
  133. PNAMEA Source;
  134. DWORD ExpirationDate;
  135. DWORD Secrets[ 4 ];
  136. } LLS_LICENSE_INFO_1A, *PLLS_LICENSE_INFO_1A;
  137. typedef [switch_type(DWORD)] union {
  138. [case(0)] LLS_LICENSE_INFO_0A LicenseInfo0;
  139. [case(1)] LLS_LICENSE_INFO_1A LicenseInfo1;
  140. } LLS_LICENSE_INFOA, *PLLS_LICENSE_INFOA;
  141. typedef struct _LLS_LICENSE_INFO_0_CONTAINERA {
  142. DWORD EntriesRead;
  143. [size_is(EntriesRead)] PLLS_LICENSE_INFO_0A Buffer;
  144. } LLS_LICENSE_INFO_0_CONTAINERA, *PLLS_LICENSE_INFO_0_CONTAINERA;
  145. typedef struct _LLS_LICENSE_INFO_1_CONTAINERA {
  146. DWORD EntriesRead;
  147. [size_is(EntriesRead)] PLLS_LICENSE_INFO_1A Buffer;
  148. } LLS_LICENSE_INFO_1_CONTAINERA, *PLLS_LICENSE_INFO_1_CONTAINERA;
  149. typedef struct _LLS_LICENSE_ENUM_STRUCTA {
  150. DWORD Level;
  151. [switch_is(Level)] union _LLS_LICENSE_ENUM_UNIONA {
  152. [case(0)]
  153. PLLS_LICENSE_INFO_0_CONTAINERA Level0;
  154. [case(1)]
  155. PLLS_LICENSE_INFO_1_CONTAINERA Level1;
  156. [default]
  157. ;
  158. } LlsLicenseInfo;
  159. } LLS_LICENSE_ENUM_STRUCTA, *PLLS_LICENSE_ENUM_STRUCTA;
  160. ///////////////////////////////////////////////////////////////////////////////
  161. // Product Info
  162. ///////////////////////////////////////////////////////////////////////////////
  163. //
  164. // Unicode
  165. //
  166. typedef struct _LLS_PRODUCT_INFO_0W {
  167. PNAMEW Product;
  168. } LLS_PRODUCT_INFO_0W, *PLLS_PRODUCT_INFO_0W;
  169. typedef struct _LLS_PRODUCT_INFO_1W {
  170. PNAMEW Product;
  171. ULONG Purchased;
  172. ULONG InUse;
  173. ULONG TotalConcurrent;
  174. ULONG HighMark;
  175. } LLS_PRODUCT_INFO_1W, *PLLS_PRODUCT_INFO_1W;
  176. typedef [switch_type(DWORD)] union {
  177. [case(0)] LLS_PRODUCT_INFO_0W ProductInfo0;
  178. [case(1)] LLS_PRODUCT_INFO_1W ProductInfo1;
  179. } LLS_PRODUCT_INFOW, *PLLS_PRODUCT_INFOW;
  180. typedef struct _LLS_PRODUCT_INFO_0_CONTAINERW {
  181. DWORD EntriesRead;
  182. [size_is(EntriesRead)] PLLS_PRODUCT_INFO_0W Buffer;
  183. } LLS_PRODUCT_INFO_0_CONTAINERW, *PLLS_PRODUCT_INFO_0_CONTAINERW;
  184. typedef struct _LLS_PRODUCT_INFO_1_CONTAINERW {
  185. DWORD EntriesRead;
  186. [size_is(EntriesRead)] PLLS_PRODUCT_INFO_1W Buffer;
  187. } LLS_PRODUCT_INFO_1_CONTAINERW, *PLLS_PRODUCT_INFO_1_CONTAINERW;
  188. typedef struct _LLS_PRODUCT_ENUM_STRUCTW {
  189. DWORD Level;
  190. [switch_is(Level)] union _LLS_PRODUCT_ENUM_UNIONW {
  191. [case(0)]
  192. PLLS_PRODUCT_INFO_0_CONTAINERW Level0;
  193. [case(1)]
  194. PLLS_PRODUCT_INFO_1_CONTAINERW Level1;
  195. [default]
  196. ;
  197. } LlsProductInfo;
  198. } LLS_PRODUCT_ENUM_STRUCTW, *PLLS_PRODUCT_ENUM_STRUCTW;
  199. //
  200. // ANSI
  201. //
  202. typedef struct _LLS_PRODUCT_INFO_0A {
  203. PNAMEA Product;
  204. } LLS_PRODUCT_INFO_0A, *PLLS_PRODUCT_INFO_0A;
  205. typedef struct _LLS_PRODUCT_INFO_1A {
  206. PNAMEA Product;
  207. ULONG Purchased;
  208. ULONG InUse;
  209. ULONG TotalConcurrent;
  210. ULONG HighMark;
  211. } LLS_PRODUCT_INFO_1A, *PLLS_PRODUCT_INFO_1A;
  212. typedef [switch_type(DWORD)] union {
  213. [case(0)] LLS_PRODUCT_INFO_0A ProductInfo0;
  214. [case(1)] LLS_PRODUCT_INFO_1A ProductInfo1;
  215. } LLS_PRODUCT_INFOA, *PLLS_PRODUCT_INFOA;
  216. typedef struct _LLS_PRODUCT_INFO_0_CONTAINERA {
  217. DWORD EntriesRead;
  218. [size_is(EntriesRead)] PLLS_PRODUCT_INFO_0A Buffer;
  219. } LLS_PRODUCT_INFO_0_CONTAINERA, *PLLS_PRODUCT_INFO_0_CONTAINERA;
  220. typedef struct _LLS_PRODUCT_INFO_1_CONTAINERA {
  221. DWORD EntriesRead;
  222. [size_is(EntriesRead)] PLLS_PRODUCT_INFO_1A Buffer;
  223. } LLS_PRODUCT_INFO_1_CONTAINERA, *PLLS_PRODUCT_INFO_1_CONTAINERA;
  224. typedef struct _LLS_PRODUCT_ENUM_STRUCTA {
  225. DWORD Level;
  226. [switch_is(Level)] union _LLS_PRODUCT_ENUM_UNIONA {
  227. [case(0)]
  228. PLLS_PRODUCT_INFO_0_CONTAINERW Level0;
  229. [case(1)]
  230. PLLS_PRODUCT_INFO_1_CONTAINERW Level1;
  231. [default]
  232. ;
  233. } LlsProductInfo;
  234. } LLS_PRODUCT_ENUM_STRUCTA, *PLLS_PRODUCT_ENUM_STRUCTA;
  235. ///////////////////////////////////////////////////////////////////////////////
  236. // Product User Info
  237. ///////////////////////////////////////////////////////////////////////////////
  238. //
  239. // Unicode
  240. //
  241. typedef struct _LLS_PRODUCT_USER_INFO_0W {
  242. PNAMEW User;
  243. } LLS_PRODUCT_USER_INFO_0W, *PLLS_PRODUCT_USER_INFO_0W;
  244. typedef struct _LLS_PRODUCT_USER_INFO_1W {
  245. PNAMEW User;
  246. DWORD Flags;
  247. DWORD LastUsed;
  248. ULONG UsageCount;
  249. } LLS_PRODUCT_USER_INFO_1W, *PLLS_PRODUCT_USER_INFO_1W;
  250. typedef [switch_type(DWORD)] union {
  251. [case(0)] LLS_PRODUCT_USER_INFO_0W ProductUserInfo0;
  252. [case(1)] LLS_PRODUCT_USER_INFO_1W ProductUserInfo1;
  253. } LLS_PRODUCT_USER_INFOW, *PLLS_PRODUCT_USER_INFOW;
  254. typedef struct _LLS_PRODUCT_USER_INFO_0_CONTAINERW {
  255. DWORD EntriesRead;
  256. [size_is(EntriesRead)] PLLS_PRODUCT_USER_INFO_0W Buffer;
  257. } LLS_PRODUCT_USER_INFO_0_CONTAINERW, *PLLS_PRODUCT_USER_INFO_0_CONTAINERW;
  258. typedef struct _LLS_PRODUCT_USER_INFO_1_CONTAINERW {
  259. DWORD EntriesRead;
  260. [size_is(EntriesRead)] PLLS_PRODUCT_USER_INFO_1W Buffer;
  261. } LLS_PRODUCT_USER_INFO_1_CONTAINERW, *PLLS_PRODUCT_USER_INFO_1_CONTAINERW;
  262. typedef struct _LLS_PRODUCT_USER_ENUM_STRUCTW {
  263. DWORD Level;
  264. [switch_is(Level)] union _LLS_PRODUCT_USER_ENUM_UNIONW {
  265. [case(0)]
  266. PLLS_PRODUCT_USER_INFO_0_CONTAINERW Level0;
  267. [case(1)]
  268. PLLS_PRODUCT_USER_INFO_1_CONTAINERW Level1;
  269. [default]
  270. ;
  271. } LlsProductUserInfo;
  272. } LLS_PRODUCT_USER_ENUM_STRUCTW, *PLLS_PRODUCT_USER_ENUM_STRUCTW;
  273. //
  274. // ANSI
  275. //
  276. typedef struct _LLS_PRODUCT_USER_INFO_0A {
  277. PNAMEA User;
  278. } LLS_PRODUCT_USER_INFO_0A, *PLLS_PRODUCT_USER_INFO_0A;
  279. typedef struct _LLS_PRODUCT_USER_INFO_1A {
  280. PNAMEA User;
  281. DWORD Flags;
  282. DWORD LastUsed;
  283. ULONG UsageCount;
  284. } LLS_PRODUCT_USER_INFO_1A, *PLLS_PRODUCT_USER_INFO_1A;
  285. typedef [switch_type(DWORD)] union {
  286. [case(0)] LLS_PRODUCT_USER_INFO_0A ProductUserInfo0;
  287. [case(1)] LLS_PRODUCT_USER_INFO_1A ProductUserInfo1;
  288. } LLS_PRODUCT_USER_INFOA, *PLLS_PRODUCT_USER_INFOA;
  289. typedef struct _LLS_PRODUCT_USER_INFO_0_CONTAINERA {
  290. DWORD EntriesRead;
  291. [size_is(EntriesRead)] PLLS_PRODUCT_USER_INFO_0A Buffer;
  292. } LLS_PRODUCT_USER_INFO_0_CONTAINERA, *PLLS_PRODUCT_USER_INFO_0_CONTAINERA;
  293. typedef struct _LLS_PRODUCT_USER_INFO_1_CONTAINERA {
  294. DWORD EntriesRead;
  295. [size_is(EntriesRead)] PLLS_PRODUCT_USER_INFO_1A Buffer;
  296. } LLS_PRODUCT_USER_INFO_1_CONTAINERA, *PLLS_PRODUCT_USER_INFO_1_CONTAINERA;
  297. typedef struct _LLS_PRODUCT_USER_ENUM_STRUCTA {
  298. DWORD Level;
  299. [switch_is(Level)] union _LLS_PRODUCT_USER_ENUM_UNIONA {
  300. [case(0)]
  301. PLLS_PRODUCT_USER_INFO_0_CONTAINERA Level0;
  302. [case(1)]
  303. PLLS_PRODUCT_USER_INFO_1_CONTAINERA Level1;
  304. [default]
  305. ;
  306. } LlsProductUserInfo;
  307. } LLS_PRODUCT_USER_ENUM_STRUCTA, *PLLS_PRODUCT_USER_ENUM_STRUCTA;
  308. ///////////////////////////////////////////////////////////////////////////////
  309. // Product License Info
  310. ///////////////////////////////////////////////////////////////////////////////
  311. //
  312. // Unicode
  313. //
  314. typedef struct _LLS_PRODUCT_LICENSE_INFO_0W {
  315. LONG Quantity;
  316. DWORD Date;
  317. PNAMEW Admin;
  318. PNAMEW Comment;
  319. } LLS_PRODUCT_LICENSE_INFO_0W, *PLLS_PRODUCT_LICENSE_INFO_0W;
  320. typedef struct _LLS_PRODUCT_LICENSE_INFO_1W {
  321. LONG Quantity;
  322. DWORD MaxQuantity;
  323. DWORD Date;
  324. PNAMEW Admin;
  325. PNAMEW Comment;
  326. DWORD AllowedModes;
  327. DWORD CertificateID;
  328. PNAMEW Source;
  329. DWORD ExpirationDate;
  330. DWORD Secrets[ 4 ];
  331. } LLS_PRODUCT_LICENSE_INFO_1W, *PLLS_PRODUCT_LICENSE_INFO_1W;
  332. typedef [switch_type(DWORD)] union {
  333. [case(0)] LLS_PRODUCT_LICENSE_INFO_0W ProductLicenseInfo0;
  334. [case(1)] LLS_PRODUCT_LICENSE_INFO_1W ProductLicenseInfo1;
  335. } LLS_PRODUCT_LICENSE_INFOW, *PLLS_PRODUCT_LICNESE_INFOW;
  336. typedef struct _LLS_PRODUCT_LICENSE_INFO_0_CONTAINERW {
  337. DWORD EntriesRead;
  338. [size_is(EntriesRead)] PLLS_PRODUCT_LICENSE_INFO_0W Buffer;
  339. } LLS_PRODUCT_LICENSE_INFO_0_CONTAINERW, *PLLS_PRODUCT_LICENSE_INFO_0_CONTAINERW;
  340. typedef struct _LLS_PRODUCT_LICENSE_INFO_1_CONTAINERW {
  341. DWORD EntriesRead;
  342. [size_is(EntriesRead)] PLLS_PRODUCT_LICENSE_INFO_1W Buffer;
  343. } LLS_PRODUCT_LICENSE_INFO_1_CONTAINERW, *PLLS_PRODUCT_LICENSE_INFO_1_CONTAINERW;
  344. typedef struct _LLS_PRODUCT_LICENSE_ENUM_STRUCTW {
  345. DWORD Level;
  346. [switch_is(Level)] union _LLS_PRODUCT_LICENSE_ENUM_UNIONW {
  347. [case(0)]
  348. PLLS_PRODUCT_LICENSE_INFO_0_CONTAINERW Level0;
  349. [case(1)]
  350. PLLS_PRODUCT_LICENSE_INFO_1_CONTAINERW Level1;
  351. [default]
  352. ;
  353. } LlsProductLicenseInfo;
  354. } LLS_PRODUCT_LICENSE_ENUM_STRUCTW, *PLLS_PRODUCT_LICENSE_ENUM_STRUCTW;
  355. //
  356. // ANSI
  357. //
  358. typedef struct _LLS_PRODUCT_LICENSE_INFO_0A {
  359. LONG Quantity;
  360. DWORD Date;
  361. PNAMEA Admin;
  362. PNAMEA Comment;
  363. } LLS_PRODUCT_LICENSE_INFO_0A, *PLLS_PRODUCT_LICENSE_INFO_0A;
  364. typedef struct _LLS_PRODUCT_LICENSE_INFO_1A {
  365. LONG Quantity;
  366. DWORD MaxQuantity;
  367. DWORD Date;
  368. PNAMEA Admin;
  369. PNAMEA Comment;
  370. DWORD AllowedModes;
  371. DWORD CertificateID;
  372. PNAMEA Source;
  373. DWORD ExpirationDate;
  374. DWORD Secrets[ 4 ];
  375. } LLS_PRODUCT_LICENSE_INFO_1A, *PLLS_PRODUCT_LICENSE_INFO_1A;
  376. typedef [switch_type(DWORD)] union {
  377. [case(0)] LLS_PRODUCT_LICENSE_INFO_0A ProductLicenseInfo0;
  378. [case(1)] LLS_PRODUCT_LICENSE_INFO_1A ProductLicenseInfo1;
  379. } LLS_PRODUCT_LICENSE_INFOA, *PLLS_PRODUCT_LICENSE_INFOA;
  380. typedef struct _LLS_PRODUCT_LICENSE_INFO_0_CONTAINERA {
  381. DWORD EntriesRead;
  382. [size_is(EntriesRead)] PLLS_PRODUCT_LICENSE_INFO_0A Buffer;
  383. } LLS_PRODUCT_LICENSE_INFO_0_CONTAINERA, *PLLS_PRODUCT_LICENSE_INFO_0_CONTAINERA;
  384. typedef struct _LLS_PRODUCT_LICENSE_INFO_1_CONTAINERA {
  385. DWORD EntriesRead;
  386. [size_is(EntriesRead)] PLLS_PRODUCT_LICENSE_INFO_1A Buffer;
  387. } LLS_PRODUCT_LICENSE_INFO_1_CONTAINERA, *PLLS_PRODUCT_LICENSE_INFO_1_CONTAINERA;
  388. typedef struct _LLS_PRODUCT_LICENSE_ENUM_STRUCTA {
  389. DWORD Level;
  390. [switch_is(Level)] union _LLS_PRODUCT_LICENSE_ENUM_UNIONA {
  391. [case(0)]
  392. PLLS_PRODUCT_LICENSE_INFO_0_CONTAINERA Level0;
  393. [case(1)]
  394. PLLS_PRODUCT_LICENSE_INFO_1_CONTAINERA Level1;
  395. [default]
  396. ;
  397. } LlsProductLicenseInfo;
  398. } LLS_PRODUCT_LICENSE_ENUM_STRUCTA, *PLLS_PRODUCT_LICENSE_ENUM_STRUCTA;
  399. ///////////////////////////////////////////////////////////////////////////////
  400. // Server Product Info
  401. ///////////////////////////////////////////////////////////////////////////////
  402. //
  403. // Unicode
  404. //
  405. typedef struct _LLS_SERVER_PRODUCT_INFO_0W {
  406. PNAMEW Name;
  407. } LLS_SERVER_PRODUCT_INFO_0W, *PLLS_SERVER_PRODUCT_INFO_0W;
  408. typedef struct _LLS_SERVER_PRODUCT_INFO_1W {
  409. PNAMEW Name;
  410. DWORD Flags;
  411. ULONG MaxUses;
  412. ULONG MaxSetUses;
  413. ULONG HighMark;
  414. } LLS_SERVER_PRODUCT_INFO_1W, *PLLS_SERVER_PRODUCT_INFO_1W;
  415. typedef [switch_type(DWORD)] union {
  416. [case(0)] LLS_SERVER_PRODUCT_INFO_0W ServerProductInfo0;
  417. [case(1)] LLS_SERVER_PRODUCT_INFO_1W ServerProductInfo1;
  418. } LLS_SERVER_PRODUCT_INFOW, *PLLS_SERVER_PRODUCT_INFOW;
  419. typedef struct _LLS_SERVER_PRODUCT_INFO_0_CONTAINERW {
  420. DWORD EntriesRead;
  421. [size_is(EntriesRead)] PLLS_SERVER_PRODUCT_INFO_0W Buffer;
  422. } LLS_SERVER_PRODUCT_INFO_0_CONTAINERW, *PLLS_SERVER_PRODUCT_INFO_0_CONTAINERW;
  423. typedef struct _LLS_SERVER_PRODUCT_INFO_1_CONTAINERW {
  424. DWORD EntriesRead;
  425. [size_is(EntriesRead)] PLLS_SERVER_PRODUCT_INFO_1W Buffer;
  426. } LLS_SERVER_PRODUCT_INFO_1_CONTAINERW, *PLLS_SERVER_PRODUCT_INFO_1_CONTAINERW;
  427. typedef struct _LLS_SERVER_PRODUCT_ENUM_STRUCTW {
  428. DWORD Level;
  429. [switch_is(Level)] union _LLS_SERVER_PRODUCT_ENUM_UNIONW {
  430. [case(0)]
  431. PLLS_SERVER_PRODUCT_INFO_0_CONTAINERW Level0;
  432. [case(1)]
  433. PLLS_SERVER_PRODUCT_INFO_1_CONTAINERW Level1;
  434. [default]
  435. ;
  436. } LlsServerProductInfo;
  437. } LLS_SERVER_PRODUCT_ENUM_STRUCTW, *PLLS_SERVER_PRODUCT_ENUM_STRUCTW;
  438. //
  439. // ANSI
  440. //
  441. typedef struct _LLS_SERVER_PRODUCT_INFO_0A {
  442. PNAMEA Name;
  443. } LLS_SERVER_PRODUCT_INFO_0A, *PLLS_SERVER_PRODUCT_INFO_0A;
  444. typedef struct _LLS_SERVER_PRODUCT_INFO_1A {
  445. PNAMEA Name;
  446. DWORD Flags;
  447. ULONG MaxUses;
  448. ULONG MaxSetUses;
  449. ULONG HighMark;
  450. } LLS_SERVER_PRODUCT_INFO_1A, *PLLS_SERVER_PRODUCT_INFO_1A;
  451. typedef [switch_type(DWORD)] union {
  452. [case(0)] LLS_SERVER_PRODUCT_INFO_0A ServerProductInfo0;
  453. [case(1)] LLS_SERVER_PRODUCT_INFO_1A ServerProductInfo1;
  454. } LLS_SERVER_PRODUCT_INFOA, *PLLS_SERVER_PRODUCT_INFOA;
  455. typedef struct _LLS_SERVER_PRODUCT_INFO_0_CONTAINERA {
  456. DWORD EntriesRead;
  457. [size_is(EntriesRead)] PLLS_SERVER_PRODUCT_INFO_0A Buffer;
  458. } LLS_SERVER_PRODUCT_INFO_0_CONTAINERA, *PLLS_SERVER_PRODUCT_INFO_0_CONTAINERA;
  459. typedef struct _LLS_SERVER_PRODUCT_INFO_1_CONTAINERA {
  460. DWORD EntriesRead;
  461. [size_is(EntriesRead)] PLLS_SERVER_PRODUCT_INFO_1A Buffer;
  462. } LLS_SERVER_PRODUCT_INFO_1_CONTAINERA, *PLLS_SERVER_PRODUCT_INFO_1_CONTAINERA;
  463. typedef struct _LLS_SERVER_PRODUCT_ENUM_STRUCTA {
  464. DWORD Level;
  465. [switch_is(Level)] union _LLS_SERVER_PRODUCT_ENUM_UNIONA {
  466. [case(0)]
  467. PLLS_SERVER_PRODUCT_INFO_0_CONTAINERA Level0;
  468. [case(1)]
  469. PLLS_SERVER_PRODUCT_INFO_1_CONTAINERA Level1;
  470. [default]
  471. ;
  472. } LlsServerProductInfo;
  473. } LLS_SERVER_PRODUCT_ENUM_STRUCTA, *PLLS_SERVER_PRODUCT_ENUM_STRUCTA;
  474. ///////////////////////////////////////////////////////////////////////////////
  475. // User Info
  476. ///////////////////////////////////////////////////////////////////////////////
  477. //
  478. // Unicode
  479. //
  480. typedef struct _LLS_USER_INFO_0W {
  481. PNAMEW Name;
  482. } LLS_USER_INFO_0W, *PLLS_USER_INFO_0W;
  483. typedef struct _LLS_USER_INFO_1W {
  484. PNAMEW Name;
  485. DWORD Flags;
  486. PNAMEW Mapping;
  487. ULONG Licensed;
  488. ULONG UnLicensed;
  489. } LLS_USER_INFO_1W, *PLLS_USER_INFO_1W;
  490. typedef struct _LLS_USER_INFO_2W {
  491. PNAMEW Name;
  492. DWORD Flags;
  493. PNAMEW Mapping;
  494. ULONG Licensed;
  495. ULONG UnLicensed;
  496. [string, unique] LPWSTR Products;
  497. } LLS_USER_INFO_2W, *PLLS_USER_INFO_2W;
  498. typedef [switch_type(DWORD)] union {
  499. [case(0)] LLS_USER_INFO_0W UserInfo0;
  500. [case(1)] LLS_USER_INFO_1W UserInfo1;
  501. [case(2)] LLS_USER_INFO_2W UserInfo2;
  502. } LLS_USER_INFOW, *PLLS_USER_INFOW;
  503. typedef struct _LLS_USER_INFO_0_CONTAINERW {
  504. DWORD EntriesRead;
  505. [size_is(EntriesRead)] PLLS_USER_INFO_0W Buffer;
  506. } LLS_USER_INFO_0_CONTAINERW, *PLLS_USER_INFO_0_CONTAINERW;
  507. typedef struct _LLS_USER_INFO_1_CONTAINERW {
  508. DWORD EntriesRead;
  509. [size_is(EntriesRead)] PLLS_USER_INFO_1W Buffer;
  510. } LLS_USER_INFO_1_CONTAINERW, *PLLS_USER_INFO_1_CONTAINERW;
  511. typedef struct _LLS_USER_INFO_2_CONTAINERW {
  512. DWORD EntriesRead;
  513. [size_is(EntriesRead)] PLLS_USER_INFO_2W Buffer;
  514. } LLS_USER_INFO_2_CONTAINERW, *PLLS_USER_INFO_2_CONTAINERW;
  515. typedef struct _LLS_USER_ENUM_STRUCTW {
  516. DWORD Level;
  517. [switch_is(Level)] union _LLS_USER_ENUM_UNIONW {
  518. [case(0)]
  519. PLLS_USER_INFO_0_CONTAINERW Level0;
  520. [case(1)]
  521. PLLS_USER_INFO_1_CONTAINERW Level1;
  522. [case(2)]
  523. PLLS_USER_INFO_2_CONTAINERW Level2;
  524. [default]
  525. ;
  526. } LlsUserInfo;
  527. } LLS_USER_ENUM_STRUCTW, *PLLS_USER_ENUM_STRUCTW;
  528. //
  529. // ANSI
  530. //
  531. typedef struct _LLS_USER_INFO_0A {
  532. PNAMEA Name;
  533. } LLS_USER_INFO_0A, *PLLS_USER_INFO_0A;
  534. typedef struct _LLS_USER_INFO_1A {
  535. PNAMEA Name;
  536. DWORD Flags;
  537. PNAMEA Mapping;
  538. ULONG Licensed;
  539. ULONG UnLicensed;
  540. } LLS_USER_INFO_1A, *PLLS_USER_INFO_1A;
  541. typedef struct _LLS_USER_INFO_2A {
  542. PNAMEA Name;
  543. DWORD Flags;
  544. PNAMEA Mapping;
  545. ULONG Licensed;
  546. ULONG UnLicensed;
  547. [string, unique] LPSTR Products;
  548. } LLS_USER_INFO_2A, *PLLS_USER_INFO_2A;
  549. typedef [switch_type(DWORD)] union {
  550. [case(0)] LLS_USER_INFO_0A UserInfo0;
  551. [case(1)] LLS_USER_INFO_1A UserInfo1;
  552. [case(2)] LLS_USER_INFO_2A UserInfo2;
  553. } LLS_USER_INFOA, *PLLS_USER_INFOA;
  554. typedef struct _LLS_USER_INFO_0_CONTAINERA {
  555. DWORD EntriesRead;
  556. [size_is(EntriesRead)] PLLS_USER_INFO_0A Buffer;
  557. } LLS_USER_INFO_0_CONTAINERA, *PLLS_USER_INFO_0_CONTAINERA;
  558. typedef struct _LLS_USER_INFO_1_CONTAINERA {
  559. DWORD EntriesRead;
  560. [size_is(EntriesRead)] PLLS_USER_INFO_1A Buffer;
  561. } LLS_USER_INFO_1_CONTAINERA, *PLLS_USER_INFO_1_CONTAINERA;
  562. typedef struct _LLS_USER_INFO_2_CONTAINERA {
  563. DWORD EntriesRead;
  564. [size_is(EntriesRead)] PLLS_USER_INFO_2A Buffer;
  565. } LLS_USER_INFO_2_CONTAINERA, *PLLS_USER_INFO_2_CONTAINERA;
  566. typedef struct _LLS_USER_ENUM_STRUCTA {
  567. DWORD Level;
  568. [switch_is(Level)] union _LLS_USER_ENUM_UNIONA {
  569. [case(0)]
  570. PLLS_USER_INFO_0_CONTAINERA Level0;
  571. [case(1)]
  572. PLLS_USER_INFO_1_CONTAINERA Level1;
  573. [case(2)]
  574. PLLS_USER_INFO_2_CONTAINERA Level2;
  575. [default]
  576. ;
  577. } LlsUserInfo;
  578. } LLS_USER_ENUM_STRUCTA, *PLLS_USER_ENUM_STRUCTA;
  579. ///////////////////////////////////////////////////////////////////////////////
  580. // User Product info
  581. ///////////////////////////////////////////////////////////////////////////////
  582. //
  583. // Unicode
  584. //
  585. typedef struct _LLS_USER_PRODUCT_INFO_0W {
  586. PNAMEW Product;
  587. } LLS_USER_PRODUCT_INFO_0W, *PLLS_USER_PRODUCT_INFO_0W;
  588. typedef struct _LLS_USER_PRODUCT_INFO_1W {
  589. PNAMEW Product;
  590. DWORD Flags;
  591. DWORD LastUsed;
  592. ULONG UsageCount;
  593. } LLS_USER_PRODUCT_INFO_1W, *PLLS_USER_PRODUCT_INFO_1W;
  594. typedef [switch_type(DWORD)] union {
  595. [case(0)] LLS_USER_PRODUCT_INFO_0W UserProduct0;
  596. [case(1)] LLS_USER_PRODUCT_INFO_1W UserProduct1;
  597. } LLS_USER_PRODUCT_INFOW, *PLLS_USER_PRODUCT_INFOW;
  598. typedef struct _LLS_USER_PRODUCT_INFO_0_CONTAINERW {
  599. DWORD EntriesRead;
  600. [size_is(EntriesRead)] PLLS_USER_PRODUCT_INFO_0W Buffer;
  601. } LLS_USER_PRODUCT_INFO_0_CONTAINERW, *PLLS_USER_PRODUCT_INFO_0_CONTAINERW;
  602. typedef struct _LLS_USER_PRODUCT_INFO_1_CONTAINERW {
  603. DWORD EntriesRead;
  604. [size_is(EntriesRead)] PLLS_USER_PRODUCT_INFO_1W Buffer;
  605. } LLS_USER_PRODUCT_INFO_1_CONTAINERW, *PLLS_USER_PRODUCT_INFO_1_CONTAINERW;
  606. typedef struct _LLS_USER_PRODUCT_ENUM_STRUCTW {
  607. DWORD Level;
  608. [switch_is(Level)] union _LLS_USER_PRODUCT_ENUM_UNIONW {
  609. [case(0)]
  610. PLLS_USER_PRODUCT_INFO_0_CONTAINERW Level0;
  611. [case(1)]
  612. PLLS_USER_PRODUCT_INFO_1_CONTAINERW Level1;
  613. [default]
  614. ;
  615. } LlsUserProductInfo;
  616. } LLS_USER_PRODUCT_ENUM_STRUCTW, *PLLS_USER_PRODUCT_ENUM_STRUCTW;
  617. //
  618. // ANSI
  619. //
  620. typedef struct _LLS_USER_PRODUCT_INFO_0A {
  621. PNAMEA Product;
  622. } LLS_USER_PRODUCT_INFO_0A, *PLLS_USER_PRODUCT_INFO_0A;
  623. typedef struct _LLS_USER_PRODUCT_INFO_1A {
  624. PNAMEA Product;
  625. DWORD Flags;
  626. DWORD LastUsed;
  627. ULONG UsageCount;
  628. } LLS_USER_PRODUCT_INFO_1A, *PLLS_USER_PRODUCT_INFO_1A;
  629. typedef [switch_type(DWORD)] union {
  630. [case(0)] LLS_USER_PRODUCT_INFO_0A UserProduct0;
  631. [case(1)] LLS_USER_PRODUCT_INFO_1A UserProduct1;
  632. } LLS_USER_PRODUCT_INFOA, *PLLS_USER_PRODUCT_INFOA;
  633. typedef struct _LLS_USER_PRODUCT_INFO_0_CONTAINERA {
  634. DWORD EntriesRead;
  635. [size_is(EntriesRead)] PLLS_USER_PRODUCT_INFO_0A Buffer;
  636. } LLS_USER_PRODUCT_INFO_0_CONTAINERA, *PLLS_USER_PRODUCT_INFO_0_CONTAINERA;
  637. typedef struct _LLS_USER_PRODUCT_INFO_1_CONTAINERA {
  638. DWORD EntriesRead;
  639. [size_is(EntriesRead)] PLLS_USER_PRODUCT_INFO_1A Buffer;
  640. } LLS_USER_PRODUCT_INFO_1_CONTAINERA, *PLLS_USER_PRODUCT_INFO_1_CONTAINERA;
  641. typedef struct _LLS_USER_PRODUCT_ENUM_STRUCTA {
  642. DWORD Level;
  643. [switch_is(Level)] union _LLS_USER_PRODUCT_ENUM_UNIONA {
  644. [case(0)]
  645. PLLS_USER_PRODUCT_INFO_0_CONTAINERA Level0;
  646. [case(1)]
  647. PLLS_USER_PRODUCT_INFO_1_CONTAINERA Level1;
  648. [default]
  649. ;
  650. } LlsUserProductInfo;
  651. } LLS_USER_PRODUCT_ENUM_STRUCTA, *PLLS_USER_PRODUCT_ENUM_STRUCTA;
  652. ///////////////////////////////////////////////////////////////////////////////
  653. // Mapping Info
  654. ///////////////////////////////////////////////////////////////////////////////
  655. //
  656. // Unicode
  657. //
  658. typedef struct _LLS_MAPPING_INFO_0W {
  659. PNAMEW Name;
  660. } LLS_MAPPING_INFO_0W, *PLLS_MAPPING_INFO_0W;
  661. typedef struct _LLS_MAPPING_INFO_1W {
  662. PNAMEW Name;
  663. PNAMEW Comment;
  664. ULONG Licenses;
  665. } LLS_MAPPING_INFO_1W, *PLLS_MAPPING_INFO_1W;
  666. typedef [switch_type(DWORD)] union {
  667. [case(0)] LLS_MAPPING_INFO_0W MappingInfo0;
  668. [case(1)] LLS_MAPPING_INFO_1W MappingInfo1;
  669. } LLS_MAPPING_INFOW, *PLLS_MAPPING_INFOW;
  670. typedef struct _LLS_MAPPING_INFO_0_CONTAINERW {
  671. DWORD EntriesRead;
  672. [size_is(EntriesRead)] PLLS_MAPPING_INFO_0W Buffer;
  673. } LLS_MAPPING_INFO_0_CONTAINERW, *PLLS_MAPPING_INFO_0_CONTAINERW;
  674. typedef struct _LLS_MAPPING_INFO_1_CONTAINERW {
  675. DWORD EntriesRead;
  676. [size_is(EntriesRead)] PLLS_MAPPING_INFO_1W Buffer;
  677. } LLS_MAPPING_INFO_1_CONTAINERW, *PLLS_MAPPING_INFO_1_CONTAINERW;
  678. typedef struct _LLS_MAPPING_ENUM_STRUCTW {
  679. DWORD Level;
  680. [switch_is(Level)] union _LLS_MAPPING_ENUM_UNIONW {
  681. [case(0)]
  682. PLLS_MAPPING_INFO_0_CONTAINERW Level0;
  683. [case(1)]
  684. PLLS_MAPPING_INFO_1_CONTAINERW Level1;
  685. [default]
  686. ;
  687. } LlsMappingInfo;
  688. } LLS_MAPPING_ENUM_STRUCTW, *PLLS_MAPPING_ENUM_STRUCTW;
  689. //
  690. // ANSI
  691. //
  692. typedef struct _LLS_MAPPING_INFO_0A {
  693. PNAMEA Name;
  694. } LLS_MAPPING_INFO_0A, *PLLS_MAPPING_INFO_0A;
  695. typedef struct _LLS_MAPPING_INFO_1A {
  696. PNAMEA Name;
  697. PNAMEA Comment;
  698. ULONG Licenses;
  699. } LLS_MAPPING_INFO_1A, *PLLS_MAPPING_INFO_1A;
  700. typedef [switch_type(DWORD)] union {
  701. [case(0)] LLS_MAPPING_INFO_0A MappingInfo0;
  702. [case(1)] LLS_MAPPING_INFO_1A MappingInfo1;
  703. } LLS_MAPPING_INFOA, *PLLS_MAPPING_INFOA;
  704. typedef struct _LLS_MAPPING_INFO_0_CONTAINERA {
  705. DWORD EntriesRead;
  706. [size_is(EntriesRead)] PLLS_MAPPING_INFO_0A Buffer;
  707. } LLS_MAPPING_INFO_0_CONTAINERA, *PLLS_MAPPING_INFO_0_CONTAINERA;
  708. typedef struct _LLS_MAPPING_INFO_1_CONTAINERA {
  709. DWORD EntriesRead;
  710. [size_is(EntriesRead)] PLLS_MAPPING_INFO_1A Buffer;
  711. } LLS_MAPPING_INFO_1_CONTAINERA, *PLLS_MAPPING_INFO_1_CONTAINERA;
  712. typedef struct _LLS_MAPPING_ENUM_STRUCTA {
  713. DWORD Level;
  714. [switch_is(Level)] union _LLS_MAPPING_ENUM_UNIONA {
  715. [case(0)]
  716. PLLS_MAPPING_INFO_0_CONTAINERA Level0;
  717. [case(1)]
  718. PLLS_MAPPING_INFO_1_CONTAINERA Level1;
  719. [default]
  720. ;
  721. } LlsMappingInfo;
  722. } LLS_MAPPING_ENUM_STRUCTA, *PLLS_MAPPING_ENUM_STRUCTA;
  723. ///////////////////////////////////////////////////////////////////////////////
  724. // Service Info
  725. ///////////////////////////////////////////////////////////////////////////////
  726. //
  727. // Unicode
  728. //
  729. typedef struct _LLS_SERVICE_INFO_0W {
  730. DWORD Version;
  731. DWORD TimeStarted;
  732. DWORD Mode;
  733. PNAMEW ReplicateTo;
  734. PNAMEW EnterpriseServer;
  735. DWORD ReplicationType;
  736. DWORD ReplicationTime;
  737. DWORD UseEnterprise;
  738. DWORD LastReplicated;
  739. } LLS_SERVICE_INFO_0W, *PLLS_SERVICE_INFO_0W;
  740. typedef [switch_type(DWORD)] union {
  741. [case(0)] LLS_SERVICE_INFO_0W ServiceInfo0;
  742. } LLS_SERVICE_INFOW, *PLLS_SERVICE_INFOW;
  743. //
  744. // ANSI
  745. //
  746. typedef struct _LLS_SERVICE_INFO_0A {
  747. DWORD Version;
  748. DWORD TimeStarted;
  749. DWORD Mode;
  750. PNAMEA ReplicateTo;
  751. PNAMEA EnterpriseServer;
  752. DWORD ReplicationType;
  753. DWORD ReplicationTime;
  754. DWORD UseEnterprise;
  755. DWORD LastReplicated;
  756. } LLS_SERVICE_INFO_0A, *PLLS_SERVICE_INFO_0A;
  757. typedef [switch_type(DWORD)] union {
  758. [case(0)] LLS_SERVICE_INFO_0A ServiceInfo0;
  759. } LLS_SERVICE_INFOA, *PLLS_SERVICE_INFOA;
  760. ///////////////////////////////////////////////////////////////////////////////
  761. // Server Info
  762. ///////////////////////////////////////////////////////////////////////////////
  763. //
  764. // Unicode
  765. //
  766. typedef struct _LLS_SERVER_INFO_0W {
  767. PNAMEW Name;
  768. } LLS_SERVER_INFO_0W, *PLLS_SERVER_INFO_0W;
  769. typedef [switch_type(DWORD)] union {
  770. [case(0)] LLS_SERVER_INFO_0W ServerInfo0;
  771. } LLS_SERVER_INFOW, *PLLS_SERVER_INFOW;
  772. typedef struct _LLS_SERVER_INFO_0_CONTAINERW {
  773. DWORD EntriesRead;
  774. [size_is(EntriesRead)] PLLS_SERVER_INFO_0W Buffer;
  775. } LLS_SERVER_INFO_0_CONTAINERW, *PLLS_SERVER_INFO_0_CONTAINERW;
  776. typedef struct _LLS_SERVER_ENUM_STRUCTW {
  777. DWORD Level;
  778. [switch_is(Level)] union _LLS_SERVER_ENUM_UNIONW {
  779. [case(0)]
  780. PLLS_SERVER_INFO_0_CONTAINERW Level0;
  781. [default]
  782. ;
  783. } LlsServerInfo;
  784. } LLS_SERVER_ENUM_STRUCTW, *PLLS_SERVER_ENUM_STRUCTW;
  785. //
  786. // ANSI
  787. //
  788. typedef struct _LLS_SERVER_INFO_0A {
  789. PNAMEA Name;
  790. } LLS_SERVER_INFO_0A, *PLLS_SERVER_INFO_0A;
  791. typedef [switch_type(DWORD)] union {
  792. [case(0)] LLS_SERVER_INFO_0A ServerInfo0;
  793. } LLS_SERVER_INFOA, *PLLS_SERVER_INFOA;
  794. typedef struct _LLS_SERVER_INFO_0_CONTAINERA {
  795. DWORD EntriesRead;
  796. [size_is(EntriesRead)] PLLS_SERVER_INFO_0A Buffer;
  797. } LLS_SERVER_INFO_0_CONTAINERA, *PLLS_SERVER_INFO_0_CONTAINERA;
  798. typedef struct _LLS_SERVER_ENUM_STRUCTA {
  799. DWORD Level;
  800. [switch_is(Level)] union _LLS_SERVER_ENUM_UNIONA {
  801. [case(0)]
  802. PLLS_SERVER_INFO_0_CONTAINERA Level0;
  803. [default]
  804. ;
  805. } LlsServerInfo;
  806. } LLS_SERVER_ENUM_STRUCTA, *PLLS_SERVER_ENUM_STRUCTA;
  807. ///////////////////////////////////////////////////////////////////////////////
  808. // Replication Info
  809. ///////////////////////////////////////////////////////////////////////////////
  810. //
  811. // Unicode
  812. //
  813. typedef struct _REPL_REQUEST {
  814. DWORD Version;
  815. WCHAR EnterpriseServer[18];
  816. DWORD EnterpriseServerDate;
  817. DWORD LastReplicated;
  818. DWORD CurrentTime;
  819. ULONG NumberServices;
  820. ULONG NumberUsers;
  821. ULONG ReplSize;
  822. ULONG Backoff;
  823. } REPL_REQUEST, *PREPL_REQUEST;
  824. typedef struct _REPL_SERVER_SERVICE_RECORD {
  825. ULONG Server;
  826. DWORD Flags;
  827. ULONG Service;
  828. ULONG MaxSessionCount;
  829. ULONG MaxSetSessionCount;
  830. ULONG HighMark;
  831. } REPL_SERVER_SERVICE_RECORD, *PREPL_SERVER_SERVICE_RECORD;
  832. typedef struct _REPL_SERVER_RECORD {
  833. ULONG Index;
  834. PNAMEW Name;
  835. ULONG MasterServer;
  836. } REPL_SERVER_RECORD, *PREPL_SERVER_RECORD;
  837. typedef struct _REPL_SERVICE_RECORD {
  838. ULONG Index;
  839. PNAMEW Name;
  840. DWORD Version;
  841. PNAMEW FamilyName;
  842. } REPL_SERVICE_RECORD, *PREPL_SERVICE_RECORD;
  843. typedef struct _REPL_USER_NAME_RECORD {
  844. PNAMEW Name;
  845. } REPL_USER_NAME_RECORD, *PREPL_USER_NAME_RECORD;
  846. typedef [unique] PREPL_SERVER_RECORD REPL_SERVERS;
  847. typedef [unique] PREPL_SERVER_SERVICE_RECORD REPL_SERVER_SERVICES;
  848. typedef [unique] PREPL_SERVICE_RECORD REPL_SERVICES;
  849. ///////////////////////////////////////////////////////////////////////////////
  850. // Certificate Target Info
  851. ///////////////////////////////////////////////////////////////////////////////
  852. //
  853. // Unicode
  854. //
  855. typedef struct _LLS_CERTIFICATE_CLAIM_INFO_0W
  856. {
  857. WCHAR ServerName[ 16 ]; // 1 + MAX_COMPUERNAME_LENGTH
  858. LONG Quantity;
  859. } LLS_CERTIFICATE_CLAIM_INFO_0W, *PLLS_CERTIFICATE_CLAIM_INFO_0W;
  860. typedef [switch_type(DWORD)] union
  861. {
  862. [case(0)] LLS_CERTIFICATE_CLAIM_INFO_0W ClaimInfo0;
  863. } LLS_CERTIFICATE_CLAIM_INFO_W, *PLLS_CERTIFICATE_CLAIM_INFO_W;
  864. typedef struct _LLS_CERTIFICATE_CLAIM_INFO_0_CONTAINERW
  865. {
  866. DWORD EntriesRead;
  867. [size_is(EntriesRead)] PLLS_CERTIFICATE_CLAIM_INFO_0W Buffer;
  868. } LLS_CERTIFICATE_CLAIM_INFO_0_CONTAINERW, *PLLS_CERTIFICATE_CLAIM_INFO_0_CONTAINERW;
  869. typedef struct _LLS_CERTIFICATE_CLAIM_ENUM_STRUCTW
  870. {
  871. DWORD Level;
  872. [switch_is(Level)] union _LLS_CERTIFICATE_CLAIM_ENUM_UNIONW
  873. {
  874. [case(0)]
  875. PLLS_CERTIFICATE_CLAIM_INFO_0_CONTAINERW Level0;
  876. [default]
  877. ;
  878. } LlsCertificateClaimInfo;
  879. } LLS_CERTIFICATE_CLAIM_ENUM_STRUCTW, *PLLS_CERTIFICATE_CLAIM_ENUM_STRUCTW;
  880. //
  881. // ANSI
  882. //
  883. typedef struct _LLS_CERTIFICATE_CLAIM_INFO_0A
  884. {
  885. CHAR ServerName[ 16 ]; // 1 + MAX_COMPUERNAME_LENGTH
  886. LONG Quantity;
  887. } LLS_CERTIFICATE_CLAIM_INFO_0A, *PLLS_CERTIFICATE_CLAIM_INFO_0A;
  888. typedef [switch_type(DWORD)] union
  889. {
  890. [case(0)] LLS_CERTIFICATE_CLAIM_INFO_0A ClaimInfo0;
  891. } LLS_CERTIFICATE_CLAIM_INFO_A, *PLLS_CERTIFICATE_CLAIM_INFO_A;
  892. typedef struct _LLS_CERTIFICATE_CLAIM_INFO_0_CONTAINERA
  893. {
  894. DWORD EntriesRead;
  895. [size_is(EntriesRead)] PLLS_CERTIFICATE_CLAIM_INFO_0A Buffer;
  896. } LLS_CERTIFICATE_CLAIM_INFO_0_CONTAINERA, *PLLS_CERTIFICATE_CLAIM_INFO_0_CONTAINERA;
  897. typedef struct _LLS_CERTIFICATE_CLAIM_ENUM_STRUCTA
  898. {
  899. DWORD Level;
  900. [switch_is(Level)] union _LLS_CERTIFICATE_CLAIM_ENUM_UNIONA
  901. {
  902. [case(0)]
  903. PLLS_CERTIFICATE_CLAIM_INFO_0_CONTAINERA Level0;
  904. [default]
  905. ;
  906. } LlsCertificateClaimInfo;
  907. } LLS_CERTIFICATE_CLAIM_ENUM_STRUCTA, *PLLS_CERTIFICATE_CLAIM_ENUM_STRUCTA;
  908. ///////////////////////////////////////////////////////////////////////////////
  909. // Certificate Replication Info
  910. ///////////////////////////////////////////////////////////////////////////////
  911. //
  912. // Unicode
  913. //
  914. typedef struct _REPL_CERT_DB_CERTIFICATE_CLAIM_0
  915. {
  916. WCHAR ServerName[ 16 ]; // 1 + MAX_COMPUTERNAME_LENGTH
  917. DWORD ReplicationDate;
  918. LONG Quantity;
  919. } REPL_CERT_DB_CERTIFICATE_CLAIM_0, *PREPL_CERT_DB_CERTIFICATE_CLAIM_0;
  920. typedef struct _REPL_CERT_DB_CERTIFICATE_CLAIM_CONTAINER_0
  921. {
  922. DWORD NumClaims;
  923. [size_is(NumClaims)] PREPL_CERT_DB_CERTIFICATE_CLAIM_0 Claims;
  924. } REPL_CERT_DB_CERTIFICATE_CLAIM_CONTAINER_0, *PREPL_CERT_DB_CERTIFICATE_CLAIM_CONTAINER_0;
  925. typedef [switch_type(DWORD)] union
  926. {
  927. [case(0)] REPL_CERT_DB_CERTIFICATE_CLAIM_CONTAINER_0 Level0;
  928. } REPL_CERT_DB_CERTIFICATE_CLAIM_CONTAINER, *PREPL_CERT_DB_CERTIFICATE_CLAIM_CONTAINER;
  929. typedef struct _REPL_CERT_DB_CERTIFICATE_HEADER_0
  930. {
  931. DWORD CertificateID;
  932. DWORD AllowedModes;
  933. DWORD MaxQuantity;
  934. DWORD ExpirationDate;
  935. DWORD NumClaims;
  936. } REPL_CERT_DB_CERTIFICATE_HEADER_0, *PREPL_CERT_DB_CERTIFICATE_HEADER_0;
  937. typedef struct _REPL_CERT_DB_CERTIFICATE_HEADER_CONTAINER_0
  938. {
  939. DWORD NumHeaders;
  940. [size_is(NumHeaders)] PREPL_CERT_DB_CERTIFICATE_HEADER_0 Headers;
  941. } REPL_CERT_DB_CERTIFICATE_HEADER_CONTAINER_0, *PREPL_CERT_DB_CERTIFICATE_HEADER_CONTAINER_0;
  942. typedef [switch_type(DWORD)] union
  943. {
  944. [case(0)] REPL_CERT_DB_CERTIFICATE_HEADER_CONTAINER_0 Level0;
  945. } REPL_CERT_DB_CERTIFICATE_HEADER_CONTAINER, *PREPL_CERT_DB_CERTIFICATE_HEADER_CONTAINER;
  946. typedef struct _REPL_CERTIFICATE_DB_0
  947. {
  948. DWORD HeaderLevel;
  949. [switch_is(HeaderLevel)]
  950. REPL_CERT_DB_CERTIFICATE_HEADER_CONTAINER HeaderContainer;
  951. DWORD ClaimLevel;
  952. [switch_is(ClaimLevel)]
  953. REPL_CERT_DB_CERTIFICATE_CLAIM_CONTAINER ClaimContainer;
  954. DWORD StringSize;
  955. [size_is(StringSize)] WCHAR * Strings;
  956. } REPL_CERTIFICATE_DB_0, *PREPL_CERTIFICATE_DB_0;
  957. typedef [switch_type(DWORD)] union
  958. {
  959. [case(0)] REPL_CERTIFICATE_DB_0 Level0;
  960. } REPL_CERTIFICATE_DB, *PREPL_CERTIFICATE_DB;
  961. typedef [unique] PREPL_CERTIFICATE_DB REPL_CERTIFICATES;
  962. ///////////////////////////////////////////////////////////////////////////////
  963. // Product Security Replication Info
  964. ///////////////////////////////////////////////////////////////////////////////
  965. //
  966. // Unicode
  967. //
  968. typedef struct _REPL_PRODUCT_SECURITY_0
  969. {
  970. DWORD StringSize;
  971. [size_is(StringSize)] WCHAR * Strings;
  972. } REPL_PRODUCT_SECURITY_0, *PREPL_PRODUCT_SECURITY_0;
  973. typedef [switch_type(DWORD)] union
  974. {
  975. [case(0)] REPL_PRODUCT_SECURITY_0 Level0;
  976. } REPL_PRODUCT_SECURITY, *PREPL_PRODUCT_SECURITY;
  977. typedef [unique] PREPL_PRODUCT_SECURITY REPL_SECURE_PRODUCTS;
  978. ///////////////////////////////////////////////////////////////////////////////
  979. // User Replication Info
  980. ///////////////////////////////////////////////////////////////////////////////
  981. //
  982. // Unicode
  983. //
  984. typedef struct _REPL_USER_RECORD_0
  985. {
  986. PNAMEW Name;
  987. ULONG Service;
  988. ULONG AccessCount;
  989. DWORD LastAccess;
  990. } REPL_USER_RECORD_0, *PREPL_USER_RECORD_0;
  991. typedef struct _REPL_USER_RECORD_CONTAINER_0
  992. {
  993. DWORD NumUsers;
  994. [size_is(NumUsers)] PREPL_USER_RECORD_0 Users;
  995. } REPL_USER_RECORD_CONTAINER_0, *PREPL_USER_RECORD_CONTAINER_0;
  996. typedef struct _REPL_USER_RECORD_1
  997. {
  998. PNAMEW Name;
  999. ULONG Service;
  1000. ULONG AccessCount;
  1001. DWORD LastAccess;
  1002. DWORD Flags;
  1003. } REPL_USER_RECORD_1, *PREPL_USER_RECORD_1;
  1004. typedef struct _REPL_USER_RECORD_CONTAINER_1
  1005. {
  1006. DWORD NumUsers;
  1007. [size_is(NumUsers)] PREPL_USER_RECORD_1 Users;
  1008. } REPL_USER_RECORD_CONTAINER_1, *PREPL_USER_RECORD_CONTAINER_1;
  1009. typedef [switch_type(DWORD)] union
  1010. {
  1011. [case(0)] REPL_USER_RECORD_CONTAINER_0 Level0;
  1012. [case(1)] REPL_USER_RECORD_CONTAINER_1 Level1;
  1013. } REPL_USER_RECORD_CONTAINER, *PREPL_USER_RECORD_CONTAINER;
  1014. typedef [switch_type(DWORD)] union
  1015. {
  1016. [case(0)] PREPL_USER_RECORD_0 Level0;
  1017. [case(1)] PREPL_USER_RECORD_1 Level1;
  1018. } PREPL_USER_RECORD;
  1019. typedef [unique] PREPL_USER_RECORD_CONTAINER REPL_USERS;
  1020. typedef [unique] PREPL_USER_RECORD_0 REPL_USERS_0;
  1021. ///////////////////////////////////////////////////////////////////////////////
  1022. // Local Service Info
  1023. ///////////////////////////////////////////////////////////////////////////////
  1024. //
  1025. // Unicode
  1026. //
  1027. typedef struct _LLS_LOCAL_SERVICE_INFO_0W
  1028. {
  1029. PNAMEW KeyName;
  1030. PNAMEW DisplayName;
  1031. PNAMEW FamilyDisplayName;
  1032. DWORD Mode;
  1033. DWORD FlipAllow;
  1034. DWORD ConcurrentLimit;
  1035. DWORD HighMark;
  1036. } LLS_LOCAL_SERVICE_INFO_0W, *PLLS_LOCAL_SERVICE_INFO_0W;
  1037. typedef [switch_type(DWORD)] union
  1038. {
  1039. [case(0)] LLS_LOCAL_SERVICE_INFO_0W LocalServiceInfo0;
  1040. } LLS_LOCAL_SERVICE_INFOW, *PLLS_LOCAL_SERVICE_INFOW;
  1041. typedef struct _LLS_LOCAL_SERVICE_INFO_0_CONTAINERW
  1042. {
  1043. DWORD EntriesRead;
  1044. [size_is(EntriesRead)] PLLS_LOCAL_SERVICE_INFO_0W Buffer;
  1045. } LLS_LOCAL_SERVICE_INFO_0_CONTAINERW, *PLLS_LOCAL_SERVICE_INFO_0_CONTAINERW;
  1046. typedef struct _LLS_LOCAL_SERVICE_ENUM_STRUCTW
  1047. {
  1048. DWORD Level;
  1049. [switch_is(Level)] union _LLS_LOCAL_SERVICE_ENUM_UNIONW
  1050. {
  1051. [case(0)]
  1052. PLLS_LOCAL_SERVICE_INFO_0_CONTAINERW Level0;
  1053. [default]
  1054. ;
  1055. } LlsLocalServiceInfo;
  1056. } LLS_LOCAL_SERVICE_ENUM_STRUCTW, *PLLS_LOCAL_SERVICE_ENUM_STRUCTW;
  1057. //
  1058. // ANSI
  1059. //
  1060. typedef struct _LLS_LOCAL_SERVICE_INFO_0A
  1061. {
  1062. PNAMEA KeyName;
  1063. PNAMEA DisplayName;
  1064. PNAMEA FamilyDisplayName;
  1065. DWORD Mode;
  1066. DWORD FlipAllow;
  1067. DWORD ConcurrentLimit;
  1068. DWORD HighMark;
  1069. } LLS_LOCAL_SERVICE_INFO_0A, *PLLS_LOCAL_SERVICE_INFO_0A;
  1070. typedef [switch_type(DWORD)] union
  1071. {
  1072. [case(0)] LLS_LOCAL_SERVICE_INFO_0A LocalServiceInfo0;
  1073. } LLS_LOCAL_SERVICE_INFOA, *PLLS_LOCAL_SERVICE_INFOA;
  1074. typedef struct _LLS_LOCAL_SERVICE_INFO_0_CONTAINERA
  1075. {
  1076. DWORD EntriesRead;
  1077. [size_is(EntriesRead)] PLLS_LOCAL_SERVICE_INFO_0A Buffer;
  1078. } LLS_LOCAL_SERVICE_INFO_0_CONTAINERA, *PLLS_LOCAL_SERVICE_INFO_0_CONTAINERA;
  1079. typedef struct _LLS_LOCAL_SERVICE_ENUM_STRUCTA
  1080. {
  1081. DWORD Level;
  1082. [switch_is(Level)] union _LLS_LOCAL_SERVICE_ENUM_UNIONA
  1083. {
  1084. [case(0)]
  1085. PLLS_LOCAL_SERVICE_INFO_0_CONTAINERA Level0;
  1086. [default]
  1087. ;
  1088. } LlsLocalServiceInfo;
  1089. } LLS_LOCAL_SERVICE_ENUM_STRUCTA, *PLLS_LOCAL_SERVICE_ENUM_STRUCTA;
  1090. ///////////////////////////////////////////////////////////////////////////////
  1091. ///////////////////////////////////////////////////////////////////////////////
  1092. ///////////////////////////////////////////////////////////////////////////////
  1093. ///////////////////////////////////////////////////////////////////////////////
  1094. //
  1095. // Connect / Disconnect API's
  1096. //
  1097. NTSTATUS
  1098. LlsrConnect(
  1099. [out] PLLS_HANDLE Handle,
  1100. [in, string] LPWSTR Name
  1101. );
  1102. NTSTATUS
  1103. LlsrClose(
  1104. [in] LLS_HANDLE Handle
  1105. );
  1106. ///////////////////////////////////////////////////////////////////////////////
  1107. //
  1108. // License control API's
  1109. //
  1110. NTSTATUS
  1111. LlsrLicenseEnumW(
  1112. [in] LLS_HANDLE Handle,
  1113. [in, out] PLLS_LICENSE_ENUM_STRUCTW LicenseInfo,
  1114. [in] DWORD PrefMaxLen,
  1115. [out] LPDWORD TotalEntries,
  1116. [in, out, unique] LPDWORD ResumeHandle
  1117. );
  1118. NTSTATUS
  1119. LlsrLicenseEnumA(
  1120. [in] LLS_HANDLE Handle,
  1121. [in, out] PLLS_LICENSE_ENUM_STRUCTA LicenseInfo,
  1122. [in] DWORD PrefMaxLen,
  1123. [out] LPDWORD TotalEntries,
  1124. [in, out, unique] LPDWORD ResumeHandle
  1125. );
  1126. // Add purchase of license for a product.
  1127. NTSTATUS
  1128. LlsrLicenseAddW(
  1129. [in] LLS_HANDLE Handle,
  1130. [in] DWORD Level,
  1131. [in, switch_is(Level)] PLLS_LICENSE_INFOW BufPtr
  1132. );
  1133. NTSTATUS
  1134. LlsrLicenseAddA(
  1135. [in] LLS_HANDLE Handle,
  1136. [in] DWORD Level,
  1137. [in, switch_is(Level)] PLLS_LICENSE_INFOA BufPtr
  1138. );
  1139. ///////////////////////////////////////////////////////////////////////////////
  1140. //
  1141. // Product control API's
  1142. //
  1143. NTSTATUS
  1144. LlsrProductEnumW(
  1145. [in] LLS_HANDLE Handle,
  1146. [in, out] PLLS_PRODUCT_ENUM_STRUCTW ProductInfo,
  1147. [in] DWORD PrefMaxLen,
  1148. [out] LPDWORD TotalEntries,
  1149. [in, out, unique] LPDWORD ResumeHandle
  1150. );
  1151. NTSTATUS
  1152. LlsrProductEnumA(
  1153. [in] LLS_HANDLE Handle,
  1154. [in, out] PLLS_PRODUCT_ENUM_STRUCTA ProductInfo,
  1155. [in] DWORD PrefMaxLen,
  1156. [out] LPDWORD TotalEntries,
  1157. [in, out, unique] LPDWORD ResumeHandle
  1158. );
  1159. NTSTATUS
  1160. LlsrProductAddW(
  1161. [in] LLS_HANDLE Handle,
  1162. [in, string] LPWSTR ProductFamily,
  1163. [in, string] LPWSTR Product,
  1164. [in, string] LPWSTR Version
  1165. );
  1166. NTSTATUS
  1167. LlsrProductAddA(
  1168. [in] LLS_HANDLE Handle,
  1169. [in, string] LPSTR ProductFamily,
  1170. [in, string] LPSTR Product,
  1171. [in, string] LPSTR Version
  1172. );
  1173. NTSTATUS
  1174. LlsrProductUserEnumW(
  1175. [in] LLS_HANDLE Handle,
  1176. [in, string] LPWSTR Product,
  1177. [in, out] PLLS_PRODUCT_USER_ENUM_STRUCTW ProductUserInfo,
  1178. [in] DWORD PrefMaxLen,
  1179. [out] LPDWORD TotalEntries,
  1180. [in, out, unique] LPDWORD ResumeHandle
  1181. );
  1182. NTSTATUS
  1183. LlsrProductUserEnumA(
  1184. [in] LLS_HANDLE Handle,
  1185. [in, string] LPSTR Product,
  1186. [in, out] PLLS_PRODUCT_USER_ENUM_STRUCTA ProductUserInfo,
  1187. [in] DWORD PrefMaxLen,
  1188. [out] LPDWORD TotalEntries,
  1189. [in, out, unique] LPDWORD ResumeHandle
  1190. );
  1191. NTSTATUS
  1192. LlsrProductServerEnumW(
  1193. [in] LLS_HANDLE Handle,
  1194. [in, string] LPWSTR Product,
  1195. [in, out] PLLS_SERVER_PRODUCT_ENUM_STRUCTW ProductServerInfo,
  1196. [in] DWORD PrefMaxLen,
  1197. [out] LPDWORD TotalEntries,
  1198. [in, out, unique] LPDWORD ResumeHandle
  1199. );
  1200. NTSTATUS
  1201. LlsrProductServerEnumA(
  1202. [in] LLS_HANDLE Handle,
  1203. [in, string] LPSTR Product,
  1204. [in, out] PLLS_SERVER_PRODUCT_ENUM_STRUCTA ProductServerInfo,
  1205. [in] DWORD PrefMaxLen,
  1206. [out] LPDWORD TotalEntries,
  1207. [in, out, unique] LPDWORD ResumeHandle
  1208. );
  1209. NTSTATUS
  1210. LlsrProductLicenseEnumW(
  1211. [in] LLS_HANDLE Handle,
  1212. [in, string] LPWSTR Product,
  1213. [in, out] PLLS_PRODUCT_LICENSE_ENUM_STRUCTW ProductLicenseInfo,
  1214. [in] DWORD PrefMaxLen,
  1215. [out] LPDWORD TotalEntries,
  1216. [in, out, unique] LPDWORD ResumeHandle
  1217. );
  1218. NTSTATUS
  1219. LlsrProductLicenseEnumA(
  1220. [in] LLS_HANDLE Handle,
  1221. [in, string] LPSTR Product,
  1222. [in, out] PLLS_PRODUCT_LICENSE_ENUM_STRUCTA ProductLicenseInfo,
  1223. [in] DWORD PrefMaxLen,
  1224. [out] LPDWORD TotalEntries,
  1225. [in, out, unique] LPDWORD ResumeHandle
  1226. );
  1227. ///////////////////////////////////////////////////////////////////////////////
  1228. //
  1229. // User control API's
  1230. //
  1231. NTSTATUS
  1232. LlsrUserEnumW(
  1233. [in] LLS_HANDLE Handle,
  1234. [in, out] PLLS_USER_ENUM_STRUCTW UserInfo,
  1235. [in] DWORD PrefMaxLen,
  1236. [out] LPDWORD TotalEntries,
  1237. [in, out, unique] LPDWORD ResumeHandle
  1238. );
  1239. NTSTATUS
  1240. LlsrUserEnumA(
  1241. [in] LLS_HANDLE Handle,
  1242. [in, out] PLLS_USER_ENUM_STRUCTA UserInfo,
  1243. [in] DWORD PrefMaxLen,
  1244. [out] LPDWORD TotalEntries,
  1245. [in, out, unique] LPDWORD ResumeHandle
  1246. );
  1247. NTSTATUS
  1248. LlsrUserInfoGetW(
  1249. [in] LLS_HANDLE Handle,
  1250. [in, string] LPWSTR User,
  1251. [in] DWORD Level,
  1252. [out, switch_is(Level)] PLLS_USER_INFOW *BufPtr
  1253. );
  1254. NTSTATUS
  1255. LlsrUserInfoGetA(
  1256. [in] LLS_HANDLE Handle,
  1257. [in, string] LPSTR User,
  1258. [in] DWORD Level,
  1259. [out, switch_is(Level)] PLLS_USER_INFOA *BufPtr
  1260. );
  1261. NTSTATUS
  1262. LlsrUserInfoSetW(
  1263. [in] LLS_HANDLE Handle,
  1264. [in, string] LPWSTR User,
  1265. [in] DWORD Level,
  1266. [in, switch_is(Level)] PLLS_USER_INFOW BufPtr
  1267. );
  1268. NTSTATUS
  1269. LlsrUserInfoSetA(
  1270. [in] LLS_HANDLE Handle,
  1271. [in, string] LPSTR User,
  1272. [in] DWORD Level,
  1273. [in, switch_is(Level)] PLLS_USER_INFOA BufPtr
  1274. );
  1275. NTSTATUS
  1276. LlsrUserDeleteW(
  1277. [in] LLS_HANDLE Handle,
  1278. [in, string] LPWSTR User
  1279. );
  1280. NTSTATUS
  1281. LlsrUserDeleteA(
  1282. [in] LLS_HANDLE Handle,
  1283. [in, string] LPSTR User
  1284. );
  1285. NTSTATUS
  1286. LlsrUserProductEnumW(
  1287. [in] LLS_HANDLE Handle,
  1288. [in, string] LPWSTR User,
  1289. [in, out] PLLS_USER_PRODUCT_ENUM_STRUCTW UserProductInfo,
  1290. [in] DWORD PrefMaxLen,
  1291. [out] LPDWORD TotalEntries,
  1292. [in, out, unique] LPDWORD ResumeHandle
  1293. );
  1294. NTSTATUS
  1295. LlsrUserProductEnumA(
  1296. [in] LLS_HANDLE Handle,
  1297. [in, string] LPSTR User,
  1298. [in, out] PLLS_USER_PRODUCT_ENUM_STRUCTA UserProductInfo,
  1299. [in] DWORD PrefMaxLen,
  1300. [out] LPDWORD TotalEntries,
  1301. [in, out, unique] LPDWORD ResumeHandle
  1302. );
  1303. NTSTATUS
  1304. LlsrUserProductDeleteW(
  1305. [in] LLS_HANDLE Handle,
  1306. [in, string] LPWSTR User,
  1307. [in, string] LPWSTR Product
  1308. );
  1309. NTSTATUS
  1310. LlsrUserProductDeleteA(
  1311. [in] LLS_HANDLE Handle,
  1312. [in, string] LPSTR User,
  1313. [in] LPSTR Product
  1314. );
  1315. ///////////////////////////////////////////////////////////////////////////////
  1316. //
  1317. // Mapping control API's
  1318. //
  1319. NTSTATUS
  1320. LlsrMappingEnumW(
  1321. [in] LLS_HANDLE Handle,
  1322. [in, out] PLLS_MAPPING_ENUM_STRUCTW MappingInfo,
  1323. [in] DWORD PrefMaxLen,
  1324. [out] LPDWORD TotalEntries,
  1325. [in, out, unique] LPDWORD ResumeHandle
  1326. );
  1327. NTSTATUS
  1328. LlsrMappingEnumA(
  1329. [in] LLS_HANDLE Handle,
  1330. [in, out] PLLS_MAPPING_ENUM_STRUCTA MappingInfo,
  1331. [in] DWORD PrefMaxLen,
  1332. [out] LPDWORD TotalEntries,
  1333. [in, out, unique] LPDWORD ResumeHandle
  1334. );
  1335. NTSTATUS
  1336. LlsrMappingInfoGetW(
  1337. [in] LLS_HANDLE Handle,
  1338. [in, string] LPWSTR Mapping,
  1339. [in] DWORD Level,
  1340. [out, switch_is(Level)] PLLS_MAPPING_INFOW *BufPtr
  1341. );
  1342. NTSTATUS
  1343. LlsrMappingInfoGetA(
  1344. [in] LLS_HANDLE Handle,
  1345. [in, string] LPSTR Mapping,
  1346. [in] DWORD Level,
  1347. [out, switch_is(Level)] PLLS_MAPPING_INFOA *BufPtr
  1348. );
  1349. NTSTATUS
  1350. LlsrMappingInfoSetW(
  1351. [in] LLS_HANDLE Handle,
  1352. [in, string] LPWSTR Mapping,
  1353. [in] DWORD Level,
  1354. [in, switch_is(Level)] PLLS_MAPPING_INFOW BufPtr
  1355. );
  1356. NTSTATUS
  1357. LlsrMappingInfoSetA(
  1358. [in] LLS_HANDLE Handle,
  1359. [in, string] LPSTR Mapping,
  1360. [in] DWORD Level,
  1361. [in, switch_is(Level)] PLLS_MAPPING_INFOA BufPtr
  1362. );
  1363. NTSTATUS
  1364. LlsrMappingUserEnumW(
  1365. [in] LLS_HANDLE Handle,
  1366. [in, string] LPWSTR Mapping,
  1367. [in, out] PLLS_USER_ENUM_STRUCTW MappingUserInfo,
  1368. [in] DWORD PrefMaxLen,
  1369. [out] LPDWORD TotalEntries,
  1370. [in, out, unique] LPDWORD ResumeHandle
  1371. );
  1372. NTSTATUS
  1373. LlsrMappingUserEnumA(
  1374. [in] LLS_HANDLE Handle,
  1375. [in, string] LPSTR Mapping,
  1376. [in, out] PLLS_USER_ENUM_STRUCTA MappingUserInfo,
  1377. [in] DWORD PrefMaxLen,
  1378. [out] LPDWORD TotalEntries,
  1379. [in, out, unique] LPDWORD ResumeHandle
  1380. );
  1381. NTSTATUS
  1382. LlsrMappingUserAddW(
  1383. [in] LLS_HANDLE Handle,
  1384. [in, string] LPWSTR Mapping,
  1385. [in, string] LPWSTR User
  1386. );
  1387. NTSTATUS
  1388. LlsrMappingUserAddA(
  1389. [in] LLS_HANDLE Handle,
  1390. [in, string] LPSTR Mapping,
  1391. [in, string] LPSTR User
  1392. );
  1393. NTSTATUS
  1394. LlsrMappingUserDeleteW(
  1395. [in] LLS_HANDLE Handle,
  1396. [in, string] LPWSTR Mapping,
  1397. [in, string] LPWSTR User
  1398. );
  1399. NTSTATUS
  1400. LlsrMappingUserDeleteA(
  1401. [in] LLS_HANDLE Handle,
  1402. [in, string] LPSTR Mapping,
  1403. [in, string] LPSTR User
  1404. );
  1405. NTSTATUS
  1406. LlsrMappingAddW(
  1407. [in] LLS_HANDLE Handle,
  1408. [in] DWORD Level,
  1409. [in, switch_is(Level)] PLLS_MAPPING_INFOW BufPtr
  1410. );
  1411. NTSTATUS
  1412. LlsrMappingAddA(
  1413. [in] LLS_HANDLE Handle,
  1414. [in] DWORD Level,
  1415. [in, switch_is(Level)] PLLS_MAPPING_INFOA BufPtr
  1416. );
  1417. NTSTATUS
  1418. LlsrMappingDeleteW(
  1419. [in] LLS_HANDLE Handle,
  1420. [in, string] LPWSTR Mapping
  1421. );
  1422. NTSTATUS
  1423. LlsrMappingDeleteA(
  1424. [in] LLS_HANDLE Handle,
  1425. [in, string] LPSTR Mapping
  1426. );
  1427. ///////////////////////////////////////////////////////////////////////////////
  1428. //
  1429. // Server Product API's
  1430. //
  1431. NTSTATUS
  1432. LlsrServerEnumW(
  1433. [in] LLS_HANDLE Handle,
  1434. [in, string] LPWSTR Server,
  1435. [in, out] PLLS_SERVER_ENUM_STRUCTW ServerInfo,
  1436. [in] DWORD PrefMaxLen,
  1437. [out] LPDWORD TotalEntries,
  1438. [in, out, unique] LPDWORD ResumeHandle
  1439. );
  1440. NTSTATUS
  1441. LlsrServerEnumA(
  1442. [in] LLS_HANDLE Handle,
  1443. [in, string] LPSTR Server,
  1444. [in, out] PLLS_SERVER_ENUM_STRUCTA ServerInfo,
  1445. [in] DWORD PrefMaxLen,
  1446. [out] LPDWORD TotalEntries,
  1447. [in, out, unique] LPDWORD ResumeHandle
  1448. );
  1449. NTSTATUS
  1450. LlsrServerProductEnumW(
  1451. [in] LLS_HANDLE Handle,
  1452. [in, string] LPWSTR Server,
  1453. [in, out] PLLS_SERVER_PRODUCT_ENUM_STRUCTW ServerProductInfo,
  1454. [in] DWORD PrefMaxLen,
  1455. [out] LPDWORD TotalEntries,
  1456. [in, out, unique] LPDWORD ResumeHandle
  1457. );
  1458. NTSTATUS
  1459. LlsrServerProductEnumA(
  1460. [in] LLS_HANDLE Handle,
  1461. [in, string] LPSTR Server,
  1462. [in, out] PLLS_SERVER_PRODUCT_ENUM_STRUCTA ServerProductInfo,
  1463. [in] DWORD PrefMaxLen,
  1464. [out] LPDWORD TotalEntries,
  1465. [in, out, unique] LPDWORD ResumeHandle
  1466. );
  1467. ///////////////////////////////////////////////////////////////////////////////
  1468. //
  1469. // Registry Wrapper API's
  1470. //
  1471. NTSTATUS
  1472. LlsrLocalProductEnumW(
  1473. [in] LLS_HANDLE Handle,
  1474. [in, out] PLLS_SERVER_PRODUCT_ENUM_STRUCTW ServerProductInfo,
  1475. [in] DWORD PrefMaxLen,
  1476. [out] LPDWORD TotalEntries,
  1477. [in, out, unique] LPDWORD ResumeHandle
  1478. );
  1479. NTSTATUS
  1480. LlsrLocalProductEnumA(
  1481. [in] LLS_HANDLE Handle,
  1482. [in, out] PLLS_SERVER_PRODUCT_ENUM_STRUCTA ServerProductInfo,
  1483. [in] DWORD PrefMaxLen,
  1484. [out] LPDWORD TotalEntries,
  1485. [in, out, unique] LPDWORD ResumeHandle
  1486. );
  1487. NTSTATUS
  1488. LlsrLocalProductInfoGetW(
  1489. [in] LLS_HANDLE Handle,
  1490. [in, string] LPWSTR Product,
  1491. [in] DWORD Level,
  1492. [out, switch_is(Level)] PLLS_SERVER_PRODUCT_INFOW *BufPtr
  1493. );
  1494. NTSTATUS
  1495. LlsrLocalProductInfoGetA(
  1496. [in] LLS_HANDLE Handle,
  1497. [in, string] LPSTR Product,
  1498. [in] DWORD Level,
  1499. [out, switch_is(Level)] PLLS_SERVER_PRODUCT_INFOA *BufPtr
  1500. );
  1501. NTSTATUS
  1502. LlsrLocalProductInfoSetW(
  1503. [in] LLS_HANDLE Handle,
  1504. [in, string] LPWSTR Product,
  1505. [in] DWORD Level,
  1506. [in, switch_is(Level)] PLLS_SERVER_PRODUCT_INFOW BufPtr
  1507. );
  1508. NTSTATUS
  1509. LlsrLocalProductInfoSetA(
  1510. [in] LLS_HANDLE Handle,
  1511. [in, string] LPSTR Product,
  1512. [in] DWORD Level,
  1513. [in, switch_is(Level)] PLLS_SERVER_PRODUCT_INFOA BufPtr
  1514. );
  1515. ///////////////////////////////////////////////////////////////////////////////
  1516. //
  1517. // Service control API's
  1518. //
  1519. NTSTATUS
  1520. LlsrServiceInfoGetW(
  1521. [in] LLS_HANDLE Handle,
  1522. [in] DWORD Level,
  1523. [out, switch_is(Level)] PLLS_SERVICE_INFOW *BufPtr
  1524. );
  1525. NTSTATUS
  1526. LlsrServiceInfoGetA(
  1527. [in] LLS_HANDLE Handle,
  1528. [in] DWORD Level,
  1529. [out, switch_is(Level)] PLLS_SERVICE_INFOA *BufPtr
  1530. );
  1531. NTSTATUS
  1532. LlsrServiceInfoSetW(
  1533. [in] LLS_HANDLE Handle,
  1534. [in] DWORD Level,
  1535. [in, switch_is(Level)] PLLS_SERVICE_INFOW BufPtr
  1536. );
  1537. NTSTATUS
  1538. LlsrServiceInfoSetA(
  1539. [in] LLS_HANDLE Handle,
  1540. [in] DWORD Level,
  1541. [in, switch_is(Level)] PLLS_SERVICE_INFOA BufPtr
  1542. );
  1543. ///////////////////////////////////////////////////////////////////////////////
  1544. //
  1545. // Replication API's
  1546. //
  1547. NTSTATUS
  1548. LlsrReplConnect(
  1549. [out] PLLS_REPL_HANDLE Handle,
  1550. [in, string] LPWSTR Name
  1551. );
  1552. NTSTATUS
  1553. LlsrReplClose(
  1554. [in, out] LLS_REPL_HANDLE *Handle
  1555. );
  1556. NTSTATUS
  1557. LlsrReplicationRequestW(
  1558. [in] LLS_REPL_HANDLE Handle,
  1559. [in] DWORD Version,
  1560. [in, out] PREPL_REQUEST Request
  1561. );
  1562. NTSTATUS
  1563. LlsrReplicationServerAddW(
  1564. [in] LLS_REPL_HANDLE Handle,
  1565. [in, range(0, 1024*1024)] ULONG NumRecords,
  1566. [in, size_is(NumRecords)] REPL_SERVERS Servers
  1567. );
  1568. NTSTATUS
  1569. LlsrReplicationServerServiceAddW(
  1570. [in] LLS_REPL_HANDLE Handle,
  1571. [in, range(0, 1024*1024)] ULONG NumRecords,
  1572. [in, size_is(NumRecords)] REPL_SERVER_SERVICES ServerServices
  1573. );
  1574. NTSTATUS
  1575. LlsrReplicationServiceAddW(
  1576. [in] LLS_REPL_HANDLE Handle,
  1577. [in, range(0, 1024)] ULONG NumRecords,
  1578. [in, size_is(NumRecords)] REPL_SERVICES Services
  1579. );
  1580. NTSTATUS
  1581. LlsrReplicationUserAddW(
  1582. [in] LLS_REPL_HANDLE Handle,
  1583. [in, range(0, 10*1024*1024)] ULONG NumRecords,
  1584. [in, size_is(NumRecords)] REPL_USERS_0 Users
  1585. );
  1586. ///////////////////////////////////////////////////////////////////////////////
  1587. //
  1588. // LLS Extended API's (added for SUR)
  1589. //
  1590. NTSTATUS
  1591. LlsrProductSecurityGetW(
  1592. [in] LLS_HANDLE Handle,
  1593. [in, string] LPWSTR Product,
  1594. [out] LPBOOL pIsSecure
  1595. );
  1596. NTSTATUS
  1597. LlsrProductSecurityGetA(
  1598. [in] LLS_HANDLE Handle,
  1599. [in, string] LPSTR Product,
  1600. [out] LPBOOL pIsSecure
  1601. );
  1602. NTSTATUS
  1603. LlsrProductSecuritySetW(
  1604. [in] LLS_HANDLE Handle,
  1605. [in, string] LPWSTR Product
  1606. );
  1607. NTSTATUS
  1608. LlsrProductSecuritySetA(
  1609. [in] LLS_HANDLE Handle,
  1610. [in, string] LPSTR Product
  1611. );
  1612. NTSTATUS
  1613. LlsrProductLicensesGetA(
  1614. [in] LLS_HANDLE Handle,
  1615. [in,string] LPSTR DisplayName,
  1616. [in] DWORD Mode,
  1617. [out] LPDWORD pQuantity );
  1618. NTSTATUS
  1619. LlsrProductLicensesGetW(
  1620. [in] LLS_HANDLE Handle,
  1621. [in, string] LPWSTR DisplayName,
  1622. [in] DWORD Mode,
  1623. [out] LPDWORD pQuantity );
  1624. NTSTATUS
  1625. LlsrCertificateClaimEnumA(
  1626. [in] LLS_HANDLE Handle,
  1627. [in] DWORD LicenseLevel,
  1628. [in, switch_is(LicenseLevel)] PLLS_LICENSE_INFOA LicensePtr,
  1629. [in,out] PLLS_CERTIFICATE_CLAIM_ENUM_STRUCTA ClaimInfo );
  1630. NTSTATUS
  1631. LlsrCertificateClaimEnumW(
  1632. [in] LLS_HANDLE Handle,
  1633. [in] DWORD LicenseLevel,
  1634. [in, switch_is(LicenseLevel)] PLLS_LICENSE_INFOW LicensePtr,
  1635. [in,out] PLLS_CERTIFICATE_CLAIM_ENUM_STRUCTW ClaimInfo );
  1636. NTSTATUS
  1637. LlsrCertificateClaimAddCheckA(
  1638. [in] LLS_HANDLE Handle,
  1639. [in] DWORD Level,
  1640. [in, switch_is(Level)] PLLS_LICENSE_INFOA LicensePtr,
  1641. [out] LPBOOL pbMayInstall );
  1642. NTSTATUS
  1643. LlsrCertificateClaimAddCheckW(
  1644. [in] LLS_HANDLE Handle,
  1645. [in] DWORD Level,
  1646. [in, switch_is(Level)] PLLS_LICENSE_INFOW LicensePtr,
  1647. [out] LPBOOL pbMayInstall );
  1648. NTSTATUS
  1649. LlsrCertificateClaimAddA(
  1650. [in] LLS_HANDLE Handle,
  1651. [in, string] LPSTR ServerName,
  1652. [in] DWORD Level,
  1653. [in, switch_is(Level)] PLLS_LICENSE_INFOA LicensePtr );
  1654. NTSTATUS
  1655. LlsrCertificateClaimAddW(
  1656. [in] LLS_HANDLE Handle,
  1657. [in, string] LPWSTR ServerName,
  1658. [in] DWORD Level,
  1659. [in, switch_is(Level)] PLLS_LICENSE_INFOW LicensePtr );
  1660. NTSTATUS
  1661. LlsrReplicationCertDbAddW(
  1662. [in] LLS_REPL_HANDLE Handle,
  1663. [in] DWORD Level,
  1664. [in, switch_is(Level)] REPL_CERTIFICATES Certificates );
  1665. NTSTATUS
  1666. LlsrReplicationProductSecurityAddW(
  1667. [in] LLS_REPL_HANDLE Handle,
  1668. [in] DWORD Level,
  1669. [in, switch_is(Level)] REPL_SECURE_PRODUCTS SecureProducts );
  1670. NTSTATUS
  1671. LlsrReplicationUserAddExW(
  1672. [in] LLS_REPL_HANDLE Handle,
  1673. [in] DWORD Level,
  1674. [in, switch_is(Level)] REPL_USERS Users );
  1675. NTSTATUS
  1676. LlsrCapabilityGet(
  1677. [in] LLS_HANDLE Handle,
  1678. [in, range(0, 1024)] DWORD cbCapabilities,
  1679. [out, size_is(cbCapabilities)] LPBYTE pbCapabilities );
  1680. NTSTATUS
  1681. LlsrLocalServiceEnumW(
  1682. [in] LLS_HANDLE Handle,
  1683. [in, out] PLLS_LOCAL_SERVICE_ENUM_STRUCTW LocalServiceInfo,
  1684. [in] DWORD PrefMaxLen,
  1685. [out] LPDWORD TotalEntries,
  1686. [in, out, unique] LPDWORD ResumeHandle
  1687. );
  1688. NTSTATUS
  1689. LlsrLocalServiceEnumA(
  1690. [in] LLS_HANDLE Handle,
  1691. [in, out] PLLS_LOCAL_SERVICE_ENUM_STRUCTA LocalServiceInfo,
  1692. [in] DWORD PrefMaxLen,
  1693. [out] LPDWORD TotalEntries,
  1694. [in, out, unique] LPDWORD ResumeHandle
  1695. );
  1696. NTSTATUS
  1697. LlsrLocalServiceAddW(
  1698. [in] LLS_HANDLE Handle,
  1699. [in] DWORD Level,
  1700. [in, switch_is(Level)] PLLS_LOCAL_SERVICE_INFOW LocalServiceInfo
  1701. );
  1702. NTSTATUS
  1703. LlsrLocalServiceAddA(
  1704. [in] LLS_HANDLE Handle,
  1705. [in] DWORD Level,
  1706. [in, switch_is(Level)] PLLS_LOCAL_SERVICE_INFOA LocalServiceInfo
  1707. );
  1708. NTSTATUS
  1709. LlsrLocalServiceInfoSetW(
  1710. [in] LLS_HANDLE Handle,
  1711. [in, string] LPWSTR KeyName,
  1712. [in] DWORD Level,
  1713. [in, switch_is(Level)] PLLS_LOCAL_SERVICE_INFOW LocalServiceInfo
  1714. );
  1715. NTSTATUS
  1716. LlsrLocalServiceInfoSetA(
  1717. [in] LLS_HANDLE Handle,
  1718. [in, string] LPSTR KeyName,
  1719. [in] DWORD Level,
  1720. [in, switch_is(Level)] PLLS_LOCAL_SERVICE_INFOA LocalServiceInfo
  1721. );
  1722. NTSTATUS
  1723. LlsrLocalServiceInfoGetW(
  1724. [in] LLS_HANDLE Handle,
  1725. [in, string] LPWSTR KeyName,
  1726. [in] DWORD Level,
  1727. [out, switch_is(Level)] PLLS_LOCAL_SERVICE_INFOW * LocalServiceInfo
  1728. );
  1729. NTSTATUS
  1730. LlsrLocalServiceInfoGetA(
  1731. [in] LLS_HANDLE Handle,
  1732. [in, string] LPSTR KeyName,
  1733. [in] DWORD Level,
  1734. [out, switch_is(Level)] PLLS_LOCAL_SERVICE_INFOA * LocalServiceInfo
  1735. );
  1736. //
  1737. // New : the handle should've been in,out originally.
  1738. //
  1739. NTSTATUS
  1740. LlsrCloseEx(
  1741. [in, out] LLS_HANDLE * pHandle
  1742. );
  1743. }