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.

645 lines
14 KiB

  1. #ifdef __cplusplus
  2. extern "C" {
  3. #endif
  4. #define POLICY_ACCESS_RIGHTS NSU_ACL_F_AdminFull | NSU_ACL_F_LocalSystemFull
  5. enum STORAGE_LOCATION {
  6. LOCATION_LOCAL=0,
  7. LOCATION_REMOTE,
  8. LOCATION_GLOBAL,
  9. LOCATION_CACHE,
  10. LOCATION_FILE,
  11. LOCATION_WMI
  12. };
  13. #include <ipsec.h>
  14. #include <oakdefs.h>
  15. #include <polstructs.h>
  16. //
  17. //wmi wbenservices
  18. //
  19. #include <wbemidl.h>
  20. HRESULT
  21. WriteDirectoryPolicyToWMI(
  22. LPWSTR pszMachineName,
  23. LPWSTR pszPolicyDN,
  24. PGPO_INFO pGPOInfo,
  25. IWbemServices *pWbemServices
  26. );
  27. HRESULT
  28. IPSecClearWMIStore(
  29. IWbemServices *pWbemServices
  30. );
  31. DWORD
  32. IPSecEnumPolicyData(
  33. HANDLE hPolicyStore,
  34. PIPSEC_POLICY_DATA ** pppIpsecPolicyData,
  35. PDWORD pdwNumPolicyObjects
  36. );
  37. DWORD
  38. IPSecSetPolicyData(
  39. HANDLE hPolicyStore,
  40. PIPSEC_POLICY_DATA pIpsecPolicyData
  41. );
  42. DWORD
  43. IPSecCreatePolicyData(
  44. HANDLE hPolicyStore,
  45. PIPSEC_POLICY_DATA pIpsecPolicyData
  46. );
  47. DWORD
  48. IPSecDeletePolicyData(
  49. HANDLE hPolicyStore,
  50. PIPSEC_POLICY_DATA pIpsecPolicyData
  51. );
  52. DWORD
  53. IPSecEnumFilterData(
  54. HANDLE hPolicyStore,
  55. PIPSEC_FILTER_DATA ** pppIpsecFilterData,
  56. PDWORD pdwNumFilterObjects
  57. );
  58. DWORD
  59. IPSecSetFilterData(
  60. HANDLE hPolicyStore,
  61. PIPSEC_FILTER_DATA pIpsecFilterData
  62. );
  63. DWORD
  64. IPSecCreateFilterData(
  65. HANDLE hPolicyStore,
  66. PIPSEC_FILTER_DATA pIpsecFilterData
  67. );
  68. DWORD
  69. IPSecDeleteFilterData(
  70. HANDLE hPolicyStore,
  71. GUID FilterIdentifier
  72. );
  73. DWORD
  74. IPSecEnumNegPolData(
  75. HANDLE hPolicyStore,
  76. PIPSEC_NEGPOL_DATA ** pppIpsecNegPolData,
  77. PDWORD pdwNumNegPolObjects
  78. );
  79. DWORD
  80. IPSecSetNegPolData(
  81. HANDLE hPolicyStore,
  82. PIPSEC_NEGPOL_DATA pIpsecNegPolData
  83. );
  84. DWORD
  85. IPSecCreateNegPolData(
  86. HANDLE hPolicyStore,
  87. PIPSEC_NEGPOL_DATA pIpsecNegPolData
  88. );
  89. DWORD
  90. IPSecDeleteNegPolData(
  91. HANDLE hPolicyStore,
  92. GUID NegPolIdentifier
  93. );
  94. DWORD
  95. IPSecCreateNFAData(
  96. HANDLE hPolicyStore,
  97. GUID PolicyIdentifier,
  98. PIPSEC_NFA_DATA pIpsecNFAData
  99. );
  100. DWORD
  101. IPSecSetNFAData(
  102. HANDLE hPolicyStore,
  103. GUID PolicyIdentifier,
  104. PIPSEC_NFA_DATA pIpsecNFAData
  105. );
  106. DWORD
  107. IPSecDeleteNFAData(
  108. HANDLE hPolicyStore,
  109. GUID PolicyIdentifier,
  110. PIPSEC_NFA_DATA pIpsecNFAData
  111. );
  112. DWORD
  113. IPSecEnumNFAData(
  114. HANDLE hPolicyStore,
  115. GUID PolicyIdentifier,
  116. PIPSEC_NFA_DATA ** pppIpsecNFAData,
  117. PDWORD pdwNumNFAObjects
  118. );
  119. DWORD
  120. IPSecGetFilterData(
  121. HANDLE hPolicyStore,
  122. GUID FilterGUID,
  123. PIPSEC_FILTER_DATA * ppIpsecFilterData
  124. );
  125. DWORD
  126. IPSecGetNegPolData(
  127. HANDLE hPolicyStore,
  128. GUID NegPolGUID,
  129. PIPSEC_NEGPOL_DATA * ppIpsecNegPolData
  130. );
  131. DWORD
  132. IPSecEnumISAKMPData(
  133. HANDLE hPolicyStore,
  134. PIPSEC_ISAKMP_DATA ** pppIpsecISAKMPData,
  135. PDWORD pdwNumISAKMPObjects
  136. );
  137. DWORD
  138. IPSecSetISAKMPData(
  139. HANDLE hPolicyStore,
  140. PIPSEC_ISAKMP_DATA pIpsecISAKMPData
  141. );
  142. DWORD
  143. IPSecCreateISAKMPData(
  144. HANDLE hPolicyStore,
  145. PIPSEC_ISAKMP_DATA pIpsecISAKMPData
  146. );
  147. DWORD
  148. IPSecDeleteISAKMPData(
  149. HANDLE hPolicyStore,
  150. GUID ISAKMPIdentifier
  151. );
  152. DWORD
  153. IPSecGetISAKMPData(
  154. HANDLE hPolicyStore,
  155. GUID ISAKMPGUID,
  156. PIPSEC_ISAKMP_DATA * ppIpsecISAKMPData
  157. );
  158. DWORD
  159. IPSecOpenPolicyStore(
  160. LPWSTR pszMachineName,
  161. DWORD dwTypeOfStore,
  162. LPWSTR pszFileName,
  163. HANDLE * phPolicyStore
  164. );
  165. DWORD
  166. RegOpenPolicyStore(
  167. LPWSTR pszMachineName,
  168. IN DWORD dwStore, // See IPSEC_STORE_* values
  169. HANDLE * phPolicyStore
  170. );
  171. ////
  172. DWORD
  173. WMIOpenPolicyStore(
  174. LPWSTR pszMachineName,
  175. HANDLE * phPolicyStore
  176. );
  177. DWORD
  178. DirOpenPolicyStore(
  179. LPWSTR pszMachineName,
  180. HANDLE * phPolicyStore
  181. );
  182. DWORD
  183. FileOpenPolicyStore(
  184. LPWSTR pszMachineName,
  185. LPWSTR pszFileName,
  186. HANDLE * phPolicyStore
  187. );
  188. DWORD
  189. IPSecClosePolicyStore(
  190. HANDLE hPolicyStore
  191. );
  192. DWORD
  193. IPSecAssignPolicy(
  194. HANDLE hPolicyStore,
  195. GUID PolicyGUID
  196. );
  197. DWORD
  198. IPSecUnassignPolicy(
  199. HANDLE hPolicyStore,
  200. GUID PolicyGUID
  201. );
  202. DWORD
  203. ComputeDirLocationName(
  204. LPWSTR pszDirDomainName,
  205. LPWSTR * ppszDirFQPathName
  206. );
  207. DWORD
  208. IPSecGetAssignedPolicyData(
  209. HANDLE hPolicyStore,
  210. PIPSEC_POLICY_DATA * ppIpsecPolicyData
  211. );
  212. DWORD
  213. IPSecExportPolicies(
  214. HANDLE hSrcPolicyStore,
  215. HANDLE hDesPolicyStore
  216. );
  217. DWORD
  218. IPSecImportPolicies(
  219. HANDLE hSrcPolicyStore,
  220. HANDLE hDesPolicyStore
  221. );
  222. /*
  223. //////////////////////////////
  224. //
  225. // Globals
  226. //
  227. //////////////////////////////
  228. // {6A1F5C6F-72B7-11d2-ACF0-0060B0ECCA17}
  229. static const GUID GUID_POLSTORE_VERSION_INFO =
  230. { 0x6a1f5c6f, 0x72b7, 0x11d2, { 0xac, 0xf0, 0x0, 0x60, 0xb0, 0xec, 0xca, 0x17 } };
  231. // {72385230-70FA-11d1-864C-14A300000000}
  232. static const GUID GUID_BUILTIN_SECURE_INITIATOR_POLICY =
  233. { 0x72385230, 0x70fa, 0x11d1, { 0x86, 0x4c, 0x14, 0xa3, 0x0, 0x0, 0x0, 0x0 } };
  234. // {72385231-70FA-11d1-864C-14A300000000}
  235. static const GUID GUID_BUILTIN_SECURE_INITIATOR_ISAKMP =
  236. { 0x72385231, 0x70fa, 0x11d1, { 0x86, 0x4c, 0x14, 0xa3, 0x0, 0x0, 0x0, 0x0 } };
  237. // {72385232-70FA-11d1-864C-14A300000000}
  238. static const GUID GUID_BUILTIN_SECURE_INITIATOR_NFA =
  239. { 0x72385232, 0x70fa, 0x11d1, { 0x86, 0x4c, 0x14, 0xa3, 0x0, 0x0, 0x0, 0x0 } };
  240. // {72385233-70FA-11d1-864C-14A300000000}
  241. static const GUID GUID_BUILTIN_SECURE_INITIATOR_NEGPOL =
  242. { 0x72385233, 0x70fa, 0x11d1, { 0x86, 0x4c, 0x14, 0xa3, 0x0, 0x0, 0x0, 0x0 } };
  243. // {72385236-70FA-11d1-864C-14A300000000}
  244. static const GUID GUID_BUILTIN_RESPONDER_POLICY =
  245. { 0x72385236, 0x70fa, 0x11d1, { 0x86, 0x4c, 0x14, 0xa3, 0x0, 0x0, 0x0, 0x0 } };
  246. // {72385237-70FA-11d1-864C-14A300000000}
  247. static const GUID GUID_BUILTIN_RESPONDER_ISAKMP =
  248. { 0x72385237, 0x70fa, 0x11d1, { 0x86, 0x4c, 0x14, 0xa3, 0x0, 0x0, 0x0, 0x0 } };
  249. // {72385238-70FA-11d1-864C-14A300000000}
  250. static const GUID GUID_BUILTIN_L2TP_POLICY =
  251. { 0x72385238, 0x70fa, 0x11d1, { 0x86, 0x4c, 0x14, 0xa3, 0x0, 0x0, 0x0, 0x0 } };
  252. // {72385239-70FA-11d1-864C-14A300000000}
  253. static const GUID GUID_BUILTIN_L2TP_ISAKMP =
  254. { 0x72385239, 0x70fa, 0x11d1, { 0x86, 0x4c, 0x14, 0xa3, 0x0, 0x0, 0x0, 0x0 } };
  255. // {7238523a-70FA-11d1-864C-14A300000000}
  256. static const GUID GUID_BUILTIN_ME_TO_FROM_ANYONE_FILTER=
  257. { 0x7238523a, 0x70fa, 0x11d1, { 0x86, 0x4c, 0x14, 0xa3, 0x0, 0x0, 0x0, 0x0 } };
  258. // {72385235-70FA-11d1-864C-14A300000000}
  259. static const GUID GUID_BUILTIN_ICMP_FILTER =
  260. { 0x72385235, 0x70fa, 0x11d1, { 0x86, 0x4c, 0x14, 0xa3, 0x0, 0x0, 0x0, 0x0 } };
  261. // {7238523c-70FA-11d1-864C-14A300000000}
  262. static const GUID GUID_BUILTIN_LOCKDOWN_POLICY =
  263. { 0x7238523c, 0x70fa, 0x11d1, { 0x86, 0x4c, 0x14, 0xa3, 0x0, 0x0, 0x0, 0x0 } };
  264. // {7238523d-70FA-11d1-864C-14A300000000}
  265. static const GUID GUID_BUILTIN_LOCKDOWN_ISAKMP =
  266. { 0x7238523d, 0x70fa, 0x11d1, { 0x86, 0x4c, 0x14, 0xa3, 0x0, 0x0, 0x0, 0x0 } };
  267. // {7238523e-70FA-11d1-864C-14A300000000}
  268. static const GUID GUID_BUILTIN_LOCKDOWN_NFA =
  269. { 0x7238523e, 0x70fa, 0x11d1, { 0x86, 0x4c, 0x14, 0xa3, 0x0, 0x0, 0x0, 0x0 } };
  270. // {7238523f-70FA-11d1-864C-14A300000000}
  271. static const GUID GUID_BUILTIN_LOCKDOWN_NEGPOL =
  272. { 0x7238523f, 0x70fa, 0x11d1, { 0x86, 0x4c, 0x14, 0xa3, 0x0, 0x0, 0x0, 0x0 } };
  273. static const GUID GUID_BUILTIN_PERMIT_NEGPOL =
  274. { 0x7238523b, 0x70fa, 0x11d1, { 0x86, 0x4c, 0x14, 0xa3, 0x0, 0x0, 0x0, 0x0 } };
  275. //////////////////////////////
  276. //////////////////////////////
  277. // Negotiation Policy Types
  278. //////////////////////////////
  279. //////////////////////////////
  280. // {62F49E10-6C37-11d1-864C-14A300000000}
  281. static const GUID GUID_NEGOTIATION_TYPE_STANDARD =
  282. { 0x62f49e10, 0x6c37, 0x11d1, { 0x86, 0x4c, 0x14, 0xa3, 0x0, 0x0, 0x0, 0x0 } };
  283. // {62F49E11-6C37-11d1-864C-14A300000000}
  284. static const GUID GUID_NEGOTIATION_TYPE_L2TP_BASE =
  285. { 0x62f49e11, 0x6c37, 0x11d1, { 0x86, 0x4c, 0x14, 0xa3, 0x0, 0x0, 0x0, 0x0 } };
  286. // {62F49E12-6C37-11d1-864C-14A300000000}
  287. static const GUID GUID_NEGOTIATION_TYPE_L2TP_EXTENDED =
  288. { 0x62f49e12, 0x6c37, 0x11d1, { 0x86, 0x4c, 0x14, 0xa3, 0x0, 0x0, 0x0, 0x0 } };
  289. // {62F49E13-6C37-11d1-864C-14A300000000}
  290. static const GUID GUID_NEGOTIATION_TYPE_DEFAULT =
  291. { 0x62f49e13, 0x6c37, 0x11d1, { 0x86, 0x4c, 0x14, 0xa3, 0x0, 0x0, 0x0, 0x0 } };
  292. //////////////////////////////
  293. //////////////////////////////
  294. // Negotiation Policy Actions
  295. //////////////////////////////
  296. //////////////////////////////
  297. // {3F91A819-7647-11d1-864D-D46A00000000}
  298. static const GUID GUID_NEGOTIATION_ACTION_BLOCK =
  299. { 0x3f91a819, 0x7647, 0x11d1, { 0x86, 0x4d, 0xd4, 0x6a, 0x0, 0x0, 0x0, 0x0 } };
  300. // {3F91A81A-7647-11d1-864D-D46A00000000}
  301. static const GUID GUID_NEGOTIATION_ACTION_INBOUND_PASSTHRU =
  302. { 0x3f91a81a, 0x7647, 0x11d1, { 0x86, 0x4d, 0xd4, 0x6a, 0x0, 0x0, 0x0, 0x0 } };
  303. // {8A171DD2-77E3-11d1-8659-A04F00000000}
  304. static const GUID GUID_NEGOTIATION_ACTION_NO_IPSEC =
  305. { 0x8a171dd2, 0x77e3, 0x11d1, { 0x86, 0x59, 0xa0, 0x4f, 0x0, 0x0, 0x0, 0x0 } };
  306. // {8A171DD3-77E3-11d1-8659-A04F00000000}
  307. static const GUID GUID_NEGOTIATION_ACTION_NORMAL_IPSEC =
  308. { 0x8a171dd3, 0x77e3, 0x11d1, { 0x86, 0x59, 0xa0, 0x4f, 0x0, 0x0, 0x0, 0x0 } };
  309. //////////////////////////////
  310. //////////////////////////////
  311. // GUID identifying the default IKE settings to use
  312. // in case no policy is assigned.
  313. //////////////////////////////
  314. //////////////////////////////
  315. // {72385234-70FA-11d1-864C-14A300000000}
  316. static const GUID GUID_BUILTIN_DEFAULT_ISAKMP_POLICY=
  317. { 0x72385234, 0x70fa, 0x11d1, { 0x86, 0x4c, 0x14, 0xa3, 0x0, 0x0, 0x0, 0x0 } };
  318. ///////////////////////
  319. // GUIDS reserved for future use... These are handy mostly because they
  320. // are easily recognizable because of the trailing zeros. This helps out in
  321. // debugging and in manual manipulation of policies by GUID -- such as removing
  322. // built-in policies from the DS using adsvw etc.
  323. //////////////////////
  324. */
  325. #define PAS_INTERFACE_TYPE_NONE 0
  326. #define PAS_INTERFACE_TYPE_DIALUP -1
  327. #define PAS_INTERFACE_TYPE_LAN -2
  328. #define PAS_INTERFACE_TYPE_ALL -3
  329. //
  330. // Negotiation Policy Actions.
  331. //
  332. // {3F91A819-7647-11d1-864D-D46A00000000}
  333. static const GUID GUID_NEGOTIATION_ACTION_BLOCK =
  334. { 0x3f91a819, 0x7647, 0x11d1, { 0x86, 0x4d, 0xd4, 0x6a, 0x0, 0x0, 0x0, 0x0 } };
  335. // {3F91A81A-7647-11d1-864D-D46A00000000}
  336. static const GUID GUID_NEGOTIATION_ACTION_INBOUND_PASSTHRU =
  337. { 0x3f91a81a, 0x7647, 0x11d1, { 0x86, 0x4d, 0xd4, 0x6a, 0x0, 0x0, 0x0, 0x0 } };
  338. // {8A171DD2-77E3-11d1-8659-A04F00000000}
  339. static const GUID GUID_NEGOTIATION_ACTION_NO_IPSEC =
  340. { 0x8a171dd2, 0x77e3, 0x11d1, { 0x86, 0x59, 0xa0, 0x4f, 0x0, 0x0, 0x0, 0x0 } };
  341. // {8A171DD3-77E3-11d1-8659-A04F00000000}
  342. static const GUID GUID_NEGOTIATION_ACTION_NORMAL_IPSEC =
  343. { 0x8a171dd3, 0x77e3, 0x11d1, { 0x86, 0x59, 0xa0, 0x4f, 0x0, 0x0, 0x0, 0x0 } };
  344. //
  345. // Negotiation Policy Types.
  346. //
  347. // {62F49E10-6C37-11d1-864C-14A300000000}
  348. static const GUID GUID_NEGOTIATION_TYPE_STANDARD =
  349. { 0x62f49e10, 0x6c37, 0x11d1, { 0x86, 0x4c, 0x14, 0xa3, 0x0, 0x0, 0x0, 0x0 } };
  350. // {62F49E13-6C37-11d1-864C-14A300000000}
  351. static const GUID GUID_NEGOTIATION_TYPE_DEFAULT =
  352. { 0x62f49e13, 0x6c37, 0x11d1, { 0x86, 0x4c, 0x14, 0xa3, 0x0, 0x0, 0x0, 0x0 } };
  353. DWORD
  354. IPSecRestoreDefaultPolicies(
  355. HANDLE hPolicyStore
  356. );
  357. DWORD
  358. IPSecIsDomainPolicyAssigned(
  359. PBOOL pbIsDomainPolicyAssigned
  360. );
  361. //
  362. // Polstore memory management functions.
  363. //
  364. LPVOID
  365. IPSecAllocPolMem(
  366. DWORD cb
  367. );
  368. BOOL
  369. IPSecFreePolMem(
  370. LPVOID pMem
  371. );
  372. LPWSTR
  373. IPSecAllocPolStr(
  374. LPCWSTR pStr
  375. );
  376. BOOL
  377. IPSecFreePolStr(
  378. LPWSTR pStr
  379. );
  380. DWORD
  381. IPSecReallocatePolMem(
  382. LPVOID * ppOldMem,
  383. DWORD cbOld,
  384. DWORD cbNew
  385. );
  386. BOOL
  387. IPSecReallocatePolStr(
  388. LPWSTR *ppStr,
  389. LPWSTR pStr
  390. );
  391. void
  392. IPSecFreePolicyData(
  393. PIPSEC_POLICY_DATA pIpsecPolicyData
  394. );
  395. void
  396. IPSecFreeNegPolData(
  397. PIPSEC_NEGPOL_DATA pIpsecNegPolData
  398. );
  399. void
  400. IPSecFreeFilterData(
  401. PIPSEC_FILTER_DATA pIpsecFilterData
  402. );
  403. void
  404. IPSecFreeISAKMPData(
  405. PIPSEC_ISAKMP_DATA pIpsecISAKMPData
  406. );
  407. void
  408. IPSecFreeNFAData(
  409. PIPSEC_NFA_DATA pIpsecNFAData
  410. );
  411. DWORD
  412. IPSecCopyPolicyData(
  413. PIPSEC_POLICY_DATA pIpsecPolicyData,
  414. PIPSEC_POLICY_DATA * ppIpsecPolicyData
  415. );
  416. DWORD
  417. IPSecCopyNegPolData(
  418. PIPSEC_NEGPOL_DATA pIpsecNegPolData,
  419. PIPSEC_NEGPOL_DATA * ppIpsecNegPolData
  420. );
  421. DWORD
  422. IPSecCopyFilterData(
  423. PIPSEC_FILTER_DATA pIpsecFilterData,
  424. PIPSEC_FILTER_DATA * ppIpsecFilterData
  425. );
  426. DWORD
  427. IPSecCopyFilterSpec(
  428. PIPSEC_FILTER_SPEC pFilterSpecs,
  429. PIPSEC_FILTER_SPEC * ppFilterSpecs
  430. );
  431. DWORD
  432. IPSecCopyISAKMPData(
  433. PIPSEC_ISAKMP_DATA pIpsecISAKMPData,
  434. PIPSEC_ISAKMP_DATA * ppIpsecISAKMPData
  435. );
  436. DWORD
  437. IPSecCopyNFAData(
  438. PIPSEC_NFA_DATA pIpsecNFAData,
  439. PIPSEC_NFA_DATA * ppIpsecNFAData
  440. );
  441. DWORD
  442. IPSecCopyAuthMethod(
  443. PIPSEC_AUTH_METHOD pAuthMethod,
  444. PIPSEC_AUTH_METHOD * ppAuthMethod
  445. );
  446. void
  447. IPSecFreeMulPolicyData(
  448. PIPSEC_POLICY_DATA * ppIpsecPolicyData,
  449. DWORD dwNumPolicyObjects
  450. );
  451. void
  452. IPSecFreeMulNegPolData(
  453. PIPSEC_NEGPOL_DATA * ppIpsecNegPolData,
  454. DWORD dwNumNegPolObjects
  455. );
  456. void
  457. IPSecFreeMulFilterData(
  458. PIPSEC_FILTER_DATA * ppIpsecFilterData,
  459. DWORD dwNumFilterObjects
  460. );
  461. void
  462. IPSecFreeFilterSpecs(
  463. PIPSEC_FILTER_SPEC * ppIpsecFilterSpecs,
  464. DWORD dwNumFilterSpecs
  465. );
  466. void
  467. IPSecFreeFilterSpec(
  468. PIPSEC_FILTER_SPEC pIpsecFilterSpec
  469. );
  470. void
  471. IPSecFreeMulISAKMPData(
  472. PIPSEC_ISAKMP_DATA * ppIpsecISAKMPData,
  473. DWORD dwNumISAKMPObjects
  474. );
  475. void
  476. IPSecFreeMulNFAData(
  477. PIPSEC_NFA_DATA * ppIpsecNFAData,
  478. DWORD dwNumNFAObjects
  479. );
  480. DWORD
  481. IPSecChooseDriverBootMode(
  482. HKEY hHKLMKey,
  483. DWORD dwStore,
  484. DWORD dwAction
  485. );
  486. DWORD
  487. IPSecSetDriverOperationMode(
  488. HKEY hHKLMKey,
  489. DWORD dwNewOperationMode
  490. );
  491. DWORD
  492. IsRegvalueExist(
  493. HKEY hHKLMKey,
  494. LPWSTR pszKey,
  495. LPWSTR pszValue,
  496. BOOL * pbValueExists
  497. );
  498. DWORD
  499. IPSecRegDeleteValue(
  500. HKEY hHKLMKey,
  501. LPWSTR pszKey,
  502. LPWSTR pszValue
  503. );
  504. DWORD
  505. IsAnyPolicyAssigned (
  506. HKEY hHKLMKey,
  507. BOOL * pbAnyPolicyAssigned
  508. );
  509. #ifdef __cplusplus
  510. }
  511. #endif