Source code of Windows XP (NT5)
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.

828 lines
18 KiB

  1. /*++
  2. Copyright(c) 1992 Microsoft Corporation
  3. Module Name:
  4. Regrpc.idl
  5. Abstract:
  6. This module contains the MIDL definitions for the Win32 Registry
  7. service.
  8. Author:
  9. David J. Gilman (davegi) 27-Jan-1992
  10. --*/
  11. //
  12. // Interface Attributes
  13. //
  14. [
  15. uuid( 338CD001-2244-31F1-AAAA-900038001003 ),
  16. pointer_default( unique ),
  17. #ifdef __midl
  18. ms_union,
  19. #endif // __midl
  20. version( 1.0 )
  21. ]
  22. //
  23. // Interface Keyword
  24. //
  25. interface winreg
  26. //
  27. // Interface Body
  28. //
  29. { // Start of interface definition
  30. import "imports.idl";
  31. //
  32. // Context handle for registry keys.
  33. //
  34. typedef [context_handle] HKEY RPC_HKEY;
  35. typedef RPC_HKEY *PRPC_HKEY;
  36. //
  37. // Server name, binding handles.
  38. //
  39. typedef [handle] PWCHAR PREGISTRY_SERVER_NAME;
  40. //
  41. // RPCable security structures (see winbase.h).
  42. //
  43. typedef struct _RPC_SECURITY_DESCRIPTOR {
  44. [ size_is( cbInSecurityDescriptor ), length_is( cbOutSecurityDescriptor ) ] PBYTE lpSecurityDescriptor;
  45. DWORD cbInSecurityDescriptor;
  46. DWORD cbOutSecurityDescriptor;
  47. } RPC_SECURITY_DESCRIPTOR, *PRPC_SECURITY_DESCRIPTOR;
  48. typedef struct _RPC_SECURITY_ATTRIBUTES {
  49. DWORD nLength;
  50. RPC_SECURITY_DESCRIPTOR RpcSecurityDescriptor;
  51. BOOLEAN bInheritHandle;
  52. } RPC_SECURITY_ATTRIBUTES, *PRPC_SECURITY_ATTRIBUTES;
  53. //
  54. // Local function prototypes.
  55. //
  56. [local]
  57. LONG
  58. ClosePredefinedHandle(
  59. [ in ] RPC_HKEY Handle
  60. );
  61. [local]
  62. BOOL
  63. CleanupPredefinedHandles(
  64. );
  65. [local]
  66. BOOL
  67. InitializeWinreg(
  68. );
  69. [local]
  70. RPC_HKEY
  71. MapPredefinedHandle(
  72. [ in ] RPC_HKEY Handle,
  73. [ out ] PRPC_HKEY phToClose
  74. );
  75. [local]
  76. LONG
  77. RemapPredefinedHandle(
  78. [in] RPC_HKEY Handle,
  79. [in] RPC_HKEY NewHandle
  80. );
  81. [local]
  82. LONG
  83. MapSAToRpcSA(
  84. [ in ] LPSECURITY_ATTRIBUTES lpSA,
  85. [ out ] PRPC_SECURITY_ATTRIBUTES pRpcSA
  86. );
  87. [local]
  88. LONG
  89. MapSDToRpcSD(
  90. [ in ] PSECURITY_DESCRIPTOR lpSD,
  91. [ in, out ] PRPC_SECURITY_DESCRIPTOR pRpcSD
  92. );
  93. [local]
  94. LONG
  95. OpenPredefinedKeyForSpecialAccess(
  96. [ in ] RPC_HKEY Handle,
  97. [ in ] REGSAM AccessMask,
  98. [ out ] PRPC_HKEY pKey
  99. );
  100. //
  101. // Perflib pseudo APIs. Signatures should mirror the real server
  102. // (i.e.Base...) functions.
  103. //
  104. [local]
  105. LONG
  106. PerfRegCloseKey (
  107. [ in, out ] PRPC_HKEY hKey
  108. );
  109. [local]
  110. LONG
  111. PerfRegEnumKey (
  112. [ in ] RPC_HKEY hKey,
  113. [ in ] DWORD dwIndex,
  114. [ in, out ] PUNICODE_STRING lpName,
  115. [ in, out, unique ] LPDWORD lpReserved,
  116. [ in, out, unique ] PUNICODE_STRING lpClass,
  117. [ in, out, unique ] PFILETIME lpftLastWriteTime
  118. );
  119. [local]
  120. LONG
  121. PerfRegQueryInfoKey (
  122. [ in ] RPC_HKEY hKey,
  123. [ in, out ] PUNICODE_STRING lpClass,
  124. [ in, out, unique ] LPDWORD lpReserved,
  125. [ out ] LPDWORD lpcSubKeys,
  126. [ out ] LPDWORD lpcbMaxSubKeyLen,
  127. [ out ] LPDWORD lpcbMaxClassLen,
  128. [ out ] LPDWORD lpcValues,
  129. [ out ] LPDWORD lpcbMaxValueNameLen,
  130. [ out ] LPDWORD lpcbMaxValueLen,
  131. [ out ] LPDWORD lpcbSecurityDescriptor,
  132. [ out ] PFILETIME lpftLastWriteTime
  133. );
  134. [local]
  135. LONG
  136. PerfRegQueryValue (
  137. [ in ] RPC_HKEY hKey,
  138. [ in ] PUNICODE_STRING lpValueName,
  139. [ in, out, unique ] LPDWORD lpReserved,
  140. [ in, out, unique ] LPDWORD lpType,
  141. [ in, out, unique, size_is( lpcbData ? *lpcbData : 0 ), length_is ( lpcbLen ? *lpcbLen : 0 ) ] LPBYTE lpData,
  142. [ in, out, unique ] LPDWORD lpcbData,
  143. [ in, out, unique ] LPDWORD lpcbLen
  144. );
  145. [local]
  146. LONG
  147. PerfRegSetValue (
  148. [ in ] RPC_HKEY hKey,
  149. [ in ] LPWSTR lpValueName,
  150. [ in ] DWORD Reserved,
  151. [ in ] DWORD dwType,
  152. [ in, size_is( cbData )] LPBYTE lpData,
  153. [ in ] DWORD cbData
  154. );
  155. [local]
  156. LONG
  157. PerfRegEnumValue (
  158. [ in ] RPC_HKEY hKey,
  159. [ in ] DWORD dwIndex,
  160. [ in, out ] PUNICODE_STRING lpValueName,
  161. [ in, out, unique ] LPDWORD lpReserved,
  162. [ in, out, unique ] LPDWORD lpType,
  163. [ in, out, unique, size_is( lpcbData ? *lpcbData : 0 ), length_is ( lpcbLen ? *lpcbLen : 0 ) ] LPBYTE lpData,
  164. [ in, out, unique ] LPDWORD lpcbData,
  165. [ in, out, unique ] LPDWORD lpcbLen
  166. );
  167. //
  168. // RegNotifyChangeKeyValue support functions.
  169. //
  170. [local]
  171. BOOL
  172. MakeSemiUniqueName(
  173. [ out ] PUNICODE_STRING Name,
  174. [ in ] DWORD Sequence
  175. );
  176. [local]
  177. BOOL
  178. InitializeRegNotifyChangeKeyValue(
  179. );
  180. [local]
  181. BOOL
  182. CleanDeadClientInfo(
  183. HKEY hKey
  184. );
  185. [local]
  186. BOOL
  187. CleanupRegNotifyChangeKeyValue(
  188. );
  189. //
  190. //******
  191. //
  192. // Local versions of server functions. Make sure these stay in synch
  193. // with the remote (ssrver) versions below.
  194. //
  195. //******
  196. //
  197. //
  198. // RPC stubs for opening predefined handles.
  199. //
  200. [local]
  201. error_status_t
  202. LocalOpenClassesRoot(
  203. [ in, unique ] PREGISTRY_SERVER_NAME ServerName,
  204. [ in ] REGSAM samDesired,
  205. [ out ] PRPC_HKEY phKey
  206. );
  207. [local]
  208. error_status_t
  209. LocalOpenCurrentUser(
  210. [ in, unique ] PREGISTRY_SERVER_NAME ServerName,
  211. [ in ] REGSAM samDesired,
  212. [ out ] PRPC_HKEY phKey
  213. );
  214. [local]
  215. error_status_t
  216. LocalOpenLocalMachine(
  217. [ in, unique ] PREGISTRY_SERVER_NAME ServerName,
  218. [ in ] REGSAM samDesired,
  219. [ out ] PRPC_HKEY phKey
  220. );
  221. [local]
  222. error_status_t
  223. LocalOpenUsers(
  224. [ in, unique ] PREGISTRY_SERVER_NAME ServerName,
  225. [ in ] REGSAM samDesired,
  226. [ out ] PRPC_HKEY phKey
  227. );
  228. [local]
  229. error_status_t
  230. LocalOpenPerformanceData(
  231. [ in, unique ] PREGISTRY_SERVER_NAME ServerName,
  232. [ in ] REGSAM samDesired,
  233. [ out ] PRPC_HKEY phKey
  234. );
  235. [local]
  236. error_status_t
  237. LocalOpenCurrentConfig(
  238. [ in, unique ] PREGISTRY_SERVER_NAME ServerName,
  239. [ in ] REGSAM samDesired,
  240. [ out ] PRPC_HKEY phKey
  241. );
  242. [local]
  243. error_status_t
  244. LocalOpenDynData(
  245. [ in, unique ] PREGISTRY_SERVER_NAME ServerName,
  246. [ in ] REGSAM samDesired,
  247. [ out ] PRPC_HKEY phKey
  248. );
  249. //
  250. // API (server) function prototypes.
  251. //
  252. [local]
  253. error_status_t
  254. LocalBaseRegCloseKey(
  255. [ in, out ] PRPC_HKEY hKey
  256. );
  257. [local]
  258. error_status_t
  259. LocalBaseRegCreateKey(
  260. [ in ] RPC_HKEY hKey,
  261. [ in ] PUNICODE_STRING lpSubKey,
  262. [ in ] PUNICODE_STRING lpClass,
  263. [ in ] DWORD dwOptions,
  264. [ in ] REGSAM samDesired,
  265. [ in, unique ] PRPC_SECURITY_ATTRIBUTES lpSecurityAttributes,
  266. [ out ] PRPC_HKEY phkResult,
  267. [ in, out, unique ] LPDWORD lpdwDisposition
  268. );
  269. [local]
  270. error_status_t
  271. LocalBaseRegDeleteKey(
  272. [ in ] RPC_HKEY hKey,
  273. [ in ] PUNICODE_STRING lpSubKey
  274. );
  275. [local]
  276. error_status_t
  277. LocalBaseRegDeleteValue(
  278. [ in ] RPC_HKEY hKey,
  279. [ in ] PUNICODE_STRING lpValueName
  280. );
  281. [local]
  282. error_status_t
  283. LocalBaseRegEnumKey(
  284. [ in ] RPC_HKEY hKey,
  285. [ in ] DWORD dwIndex,
  286. [ in, out ] PUNICODE_STRING lpName,
  287. [ in, out, unique ] PUNICODE_STRING lpClass,
  288. [ in, out, unique ] PFILETIME lpftLastWriteTime
  289. );
  290. [local]
  291. error_status_t
  292. LocalBaseRegEnumValue (
  293. [ in ] RPC_HKEY hKey,
  294. [ in ] DWORD dwIndex,
  295. [ in, out ] PUNICODE_STRING lpValueName,
  296. [ in, out, unique ] LPDWORD lpType,
  297. [ in, out, unique, size_is( lpcbData ? *lpcbData : 0 ), length_is ( lpcbLen ? *lpcbLen : 0 ) ] LPBYTE lpData,
  298. [ in, out, unique ] LPDWORD lpcbData,
  299. [ in, out, unique ] LPDWORD lpcbLen
  300. );
  301. [local]
  302. error_status_t
  303. LocalBaseRegFlushKey(
  304. [ in ] RPC_HKEY hKey
  305. );
  306. [local]
  307. error_status_t
  308. LocalBaseRegGetKeySecurity(
  309. [ in ] RPC_HKEY hKey,
  310. [ in ] SECURITY_INFORMATION SecurityInformation,
  311. [ in, out ] PRPC_SECURITY_DESCRIPTOR pRpcSecurityDescriptor
  312. );
  313. [local]
  314. error_status_t
  315. LocalBaseRegLoadKey(
  316. [ in ] RPC_HKEY hKey,
  317. [ in ] PUNICODE_STRING lpSubKey,
  318. [ in ] PUNICODE_STRING lpFile
  319. );
  320. [local]
  321. error_status_t
  322. LocalBaseRegNotifyChangeKeyValue(
  323. [ in ] RPC_HKEY hKey,
  324. [ in ] BOOLEAN bWatchSubtree,
  325. [ in ] DWORD dwNotifyFilter,
  326. [ in ] DWORD hEvent,
  327. [ in ] PUNICODE_STRING MachineName,
  328. [ in ] PUNICODE_STRING PipeName,
  329. [ in, unique ] PRPC_SECURITY_ATTRIBUTES pRpcSecurityAttributes
  330. );
  331. [local]
  332. error_status_t
  333. LocalBaseRegOpenKey(
  334. [ in ] RPC_HKEY hKey,
  335. [ in ] PUNICODE_STRING lpSubKey,
  336. [ in ] DWORD dwOptions,
  337. [ in ] REGSAM samDesired,
  338. [ out ] PRPC_HKEY phkResult
  339. );
  340. [local]
  341. error_status_t
  342. LocalBaseRegQueryInfoKey(
  343. [ in ] RPC_HKEY hKey,
  344. [ in, out ] PUNICODE_STRING lpClass,
  345. [ out ] LPDWORD lpcSubKeys,
  346. [ out ] LPDWORD lpcbMaxSubKeyLen,
  347. [ out ] LPDWORD lpcbMaxClassLen,
  348. [ out ] LPDWORD lpcValues,
  349. [ out ] LPDWORD lpcbMaxValueNameLen,
  350. [ out ] LPDWORD lpcbMaxValueLen,
  351. [ out ] LPDWORD lpcbSecurityDescriptor,
  352. [ out ] PFILETIME lpftLastWriteTime
  353. );
  354. [local]
  355. error_status_t
  356. LocalBaseRegQueryValue(
  357. [ in ] RPC_HKEY hKey,
  358. [ in ] PUNICODE_STRING lpValueName,
  359. [ in, out, unique ] LPDWORD lpType,
  360. [ in, out, unique, size_is( lpcbData ? *lpcbData : 0 ), length_is ( lpcbLen ? *lpcbLen : 0 ) ] LPBYTE lpData,
  361. [ in, out, unique ] LPDWORD lpcbData,
  362. [ in, out, unique ] LPDWORD lpcbLen
  363. );
  364. [local]
  365. error_status_t
  366. LocalBaseRegQueryMultipleValues(
  367. [ in ] RPC_HKEY hKey,
  368. [ in, out, size_is(num_vals), length_is(num_vals) ] PRVALENT val_list,
  369. [ in ] DWORD num_vals,
  370. [ in, out, unique, size_is(*ldwTotsize), length_is(*ldwTotsize) ] LPSTR lpvalueBuf,
  371. [ in, out, ref ] LPDWORD ldwTotsize
  372. );
  373. [local]
  374. error_status_t
  375. LocalBaseRegReplaceKey(
  376. [ in ] RPC_HKEY hKey,
  377. [ in ] PUNICODE_STRING lpSubKey,
  378. [ in ] PUNICODE_STRING lpNewFile,
  379. [ in ] PUNICODE_STRING lpOldFile
  380. );
  381. [local]
  382. error_status_t
  383. LocalBaseRegRestoreKey(
  384. [ in ] RPC_HKEY hKey,
  385. [ in ] PUNICODE_STRING lpFile,
  386. [ in ] DWORD Flags
  387. );
  388. [local]
  389. error_status_t
  390. LocalBaseRegSaveKey(
  391. [ in ] RPC_HKEY hKey,
  392. [ in ] PUNICODE_STRING lpFile,
  393. [ in, unique ] PRPC_SECURITY_ATTRIBUTES pSecurityAttributes
  394. );
  395. [local]
  396. error_status_t
  397. LocalBaseRegSetKeySecurity(
  398. [ in ] RPC_HKEY hKey,
  399. [ in ] SECURITY_INFORMATION SecurityInformation,
  400. [ in ] PRPC_SECURITY_DESCRIPTOR pRpcSecurityDescriptor
  401. );
  402. [local]
  403. error_status_t
  404. LocalBaseRegSetValue(
  405. [ in ] RPC_HKEY hKey,
  406. [ in ] PUNICODE_STRING lpValueName,
  407. [ in ] DWORD dwType,
  408. [ in, size_is( cbData )] LPBYTE lpData,
  409. [ in ] DWORD cbData
  410. );
  411. [local]
  412. error_status_t
  413. LocalBaseRegUnLoadKey(
  414. [ in ] RPC_HKEY hKey,
  415. [ in ] PUNICODE_STRING lpSubKey
  416. );
  417. //
  418. //******
  419. //
  420. // Remote versions of server functions. Make sure these stay in synch
  421. // with the local versions above.
  422. //
  423. //******
  424. //
  425. //
  426. // RPC stubs for opening predefined handles.
  427. //
  428. error_status_t
  429. OpenClassesRoot(
  430. [ in, unique ] PREGISTRY_SERVER_NAME ServerName,
  431. [ in ] REGSAM samDesired,
  432. [ out ] PRPC_HKEY phKey
  433. );
  434. error_status_t
  435. OpenCurrentUser(
  436. [ in, unique ] PREGISTRY_SERVER_NAME ServerName,
  437. [ in ] REGSAM samDesired,
  438. [ out ] PRPC_HKEY phKey
  439. );
  440. error_status_t
  441. OpenLocalMachine(
  442. [ in, unique ] PREGISTRY_SERVER_NAME ServerName,
  443. [ in ] REGSAM samDesired,
  444. [ out ] PRPC_HKEY phKey
  445. );
  446. error_status_t
  447. OpenPerformanceData(
  448. [ in, unique ] PREGISTRY_SERVER_NAME ServerName,
  449. [ in ] REGSAM samDesired,
  450. [ out ] PRPC_HKEY phKey
  451. );
  452. error_status_t
  453. OpenUsers(
  454. [ in, unique ] PREGISTRY_SERVER_NAME ServerName,
  455. [ in ] REGSAM samDesired,
  456. [ out ] PRPC_HKEY phKey
  457. );
  458. //
  459. // API (server) function prototypes.
  460. //
  461. error_status_t
  462. BaseRegCloseKey(
  463. [ in, out ] PRPC_HKEY hKey
  464. );
  465. error_status_t
  466. BaseRegCreateKey(
  467. [ in ] RPC_HKEY hKey,
  468. [ in ] PUNICODE_STRING lpSubKey,
  469. [ in ] PUNICODE_STRING lpClass,
  470. [ in ] DWORD dwOptions,
  471. [ in ] REGSAM samDesired,
  472. [ in, unique ] PRPC_SECURITY_ATTRIBUTES lpSecurityAttributes,
  473. [ out ] PRPC_HKEY phkResult,
  474. [ in, out, unique ] LPDWORD lpdwDisposition
  475. );
  476. error_status_t
  477. BaseRegDeleteKey(
  478. [ in ] RPC_HKEY hKey,
  479. [ in ] PUNICODE_STRING lpSubKey
  480. );
  481. error_status_t
  482. BaseRegDeleteValue(
  483. [ in ] RPC_HKEY hKey,
  484. [ in ] PUNICODE_STRING lpValueName
  485. );
  486. error_status_t
  487. BaseRegEnumKey(
  488. [ in ] RPC_HKEY hKey,
  489. [ in ] DWORD dwIndex,
  490. [ in, out ] PUNICODE_STRING lpName,
  491. [ in, out, unique ] PUNICODE_STRING lpClass,
  492. [ in, out, unique ] PFILETIME lpftLastWriteTime
  493. );
  494. error_status_t
  495. BaseRegEnumValue (
  496. [ in ] RPC_HKEY hKey,
  497. [ in ] DWORD dwIndex,
  498. [ in, out ] PUNICODE_STRING lpValueName,
  499. [ in, out, unique ] LPDWORD lpType,
  500. [ in, out, unique, size_is( lpcbData ? *lpcbData : 0 ), length_is ( lpcbLen ? *lpcbLen : 0 ) ] LPBYTE lpData,
  501. [ in, out, unique ] LPDWORD lpcbData,
  502. [ in, out, unique ] LPDWORD lpcbLen
  503. );
  504. error_status_t
  505. BaseRegFlushKey(
  506. [ in ] RPC_HKEY hKey
  507. );
  508. error_status_t
  509. BaseRegGetKeySecurity(
  510. [ in ] RPC_HKEY hKey,
  511. [ in ] SECURITY_INFORMATION SecurityInformation,
  512. [ in, out ] PRPC_SECURITY_DESCRIPTOR pRpcSecurityDescriptor
  513. );
  514. error_status_t
  515. BaseRegLoadKey(
  516. [ in ] RPC_HKEY hKey,
  517. [ in ] PUNICODE_STRING lpSubKey,
  518. [ in ] PUNICODE_STRING lpFile
  519. );
  520. error_status_t
  521. BaseRegNotifyChangeKeyValue(
  522. [ in ] RPC_HKEY hKey,
  523. [ in ] BOOLEAN bWatchSubtree,
  524. [ in ] DWORD dwNotifyFilter,
  525. [ in ] DWORD hEvent,
  526. [ in ] PUNICODE_STRING MachineName,
  527. [ in ] PUNICODE_STRING PipeName,
  528. [ in, unique ] PRPC_SECURITY_ATTRIBUTES pRpcSecurityAttributes
  529. );
  530. error_status_t
  531. BaseRegOpenKey(
  532. [ in ] RPC_HKEY hKey,
  533. [ in ] PUNICODE_STRING lpSubKey,
  534. [ in ] DWORD dwOptions,
  535. [ in ] REGSAM samDesired,
  536. [ out ] PRPC_HKEY phkResult
  537. );
  538. error_status_t
  539. BaseRegQueryInfoKey(
  540. [ in ] RPC_HKEY hKey,
  541. [ in, out ] PUNICODE_STRING lpClass,
  542. [ out ] LPDWORD lpcSubKeys,
  543. [ out ] LPDWORD lpcbMaxSubKeyLen,
  544. [ out ] LPDWORD lpcbMaxClassLen,
  545. [ out ] LPDWORD lpcValues,
  546. [ out ] LPDWORD lpcbMaxValueNameLen,
  547. [ out ] LPDWORD lpcbMaxValueLen,
  548. [ out ] LPDWORD lpcbSecurityDescriptor,
  549. [ out ] PFILETIME lpftLastWriteTime
  550. );
  551. error_status_t
  552. BaseRegQueryValue(
  553. [ in ] RPC_HKEY hKey,
  554. [ in ] PUNICODE_STRING lpValueName,
  555. [ in, out, unique ] LPDWORD lpType,
  556. [ in, out, unique, size_is( lpcbData ? *lpcbData : 0 ), length_is ( lpcbLen ? *lpcbLen : 0 ) ] LPBYTE lpData,
  557. [ in, out, unique ] LPDWORD lpcbData,
  558. [ in, out, unique ] LPDWORD lpcbLen
  559. );
  560. error_status_t
  561. BaseRegReplaceKey(
  562. [ in ] RPC_HKEY hKey,
  563. [ in ] PUNICODE_STRING lpSubKey,
  564. [ in ] PUNICODE_STRING lpNewFile,
  565. [ in ] PUNICODE_STRING lpOldFile
  566. );
  567. error_status_t
  568. BaseRegRestoreKey(
  569. [ in ] RPC_HKEY hKey,
  570. [ in ] PUNICODE_STRING lpFile,
  571. [ in ] DWORD Flags
  572. );
  573. error_status_t
  574. BaseRegSaveKey(
  575. [ in ] RPC_HKEY hKey,
  576. [ in ] PUNICODE_STRING lpFile,
  577. [ in, unique ] PRPC_SECURITY_ATTRIBUTES pSecurityAttributes
  578. );
  579. error_status_t
  580. BaseRegSetKeySecurity(
  581. [ in ] RPC_HKEY hKey,
  582. [ in ] SECURITY_INFORMATION SecurityInformation,
  583. [ in ] PRPC_SECURITY_DESCRIPTOR pRpcSecurityDescriptor
  584. );
  585. error_status_t
  586. BaseRegSetValue(
  587. [ in ] RPC_HKEY hKey,
  588. [ in ] PUNICODE_STRING lpValueName,
  589. [ in ] DWORD dwType,
  590. [ in, size_is( cbData )] LPBYTE lpData,
  591. [ in ] DWORD cbData
  592. );
  593. error_status_t
  594. BaseRegUnLoadKey(
  595. [ in ] RPC_HKEY hKey,
  596. [ in ] PUNICODE_STRING lpSubKey
  597. );
  598. //
  599. // Shutdown APIs.
  600. //
  601. ULONG
  602. BaseInitiateSystemShutdown(
  603. [ in, unique ] PREGISTRY_SERVER_NAME ServerName,
  604. [ in, unique ] PUNICODE_STRING lpMessage,
  605. [ in ] DWORD dwTimeout,
  606. [ in ] BOOLEAN bForceAppsClosed,
  607. [ in ] BOOLEAN bRebootAfterShutdown
  608. );
  609. ULONG
  610. BaseAbortSystemShutdown(
  611. [ in, unique ] PREGISTRY_SERVER_NAME ServerName
  612. );
  613. //
  614. // New Remote Registry APIs for Chicago
  615. //
  616. error_status_t
  617. BaseRegGetVersion(
  618. [ in ] RPC_HKEY hKey,
  619. [ out ] LPDWORD lpdwVersion
  620. );
  621. error_status_t
  622. OpenCurrentConfig(
  623. [ in, unique ] PREGISTRY_SERVER_NAME ServerName,
  624. [ in ] REGSAM samDesired,
  625. [ out ] PRPC_HKEY phKey
  626. );
  627. error_status_t
  628. OpenDynData(
  629. [ in, unique ] PREGISTRY_SERVER_NAME ServerName,
  630. [ in ] REGSAM samDesired,
  631. [ out ] PRPC_HKEY phKey
  632. );
  633. error_status_t
  634. BaseRegQueryMultipleValues(
  635. [ in ] RPC_HKEY hKey,
  636. [ in, out, size_is(num_vals), length_is(num_vals) ] PRVALENT val_list,
  637. [ in ] DWORD num_vals,
  638. [ in, out, unique, size_is(*ldwTotsize), length_is(*ldwTotsize) ] LPSTR lpvalueBuf,
  639. [ in, out, ref ] LPDWORD ldwTotsize
  640. );
  641. //
  642. // Dragos Sambotin (dragoss) 01/07/1999 - Moved at the end to persist compatibility with NT4 !
  643. // New Shutdown API .
  644. //
  645. ULONG
  646. BaseInitiateSystemShutdownEx(
  647. [ in, unique ] PREGISTRY_SERVER_NAME ServerName,
  648. [ in, unique ] PUNICODE_STRING lpMessage,
  649. [ in ] DWORD dwTimeout,
  650. [ in ] BOOLEAN bForceAppsClosed,
  651. [ in ] BOOLEAN bRebootAfterShutdown,
  652. [ in ] DWORD dwReason
  653. );
  654. [local]
  655. BOOL
  656. ShutdownWinreg(
  657. );
  658. //
  659. // needed for setup in order to save hives in %systemroot%\system32 in the latest format
  660. //
  661. error_status_t
  662. BaseRegSaveKeyEx(
  663. [ in ] RPC_HKEY hKey,
  664. [ in ] PUNICODE_STRING lpFile,
  665. [ in, unique ] PRPC_SECURITY_ATTRIBUTES pSecurityAttributes,
  666. [ in ] DWORD Flags
  667. );
  668. [local]
  669. error_status_t
  670. LocalBaseRegSaveKeyEx(
  671. [ in ] RPC_HKEY hKey,
  672. [ in ] PUNICODE_STRING lpFile,
  673. [ in, unique ] PRPC_SECURITY_ATTRIBUTES pSecurityAttributes,
  674. [ in ] DWORD Flags
  675. );
  676. //
  677. // Adding support for HKEY_PERFORMANCE_TEXT and HKEY_PERFORMANCE_NLSTEXT over remote connections
  678. //
  679. [local]
  680. error_status_t
  681. LocalOpenPerformanceText(
  682. [ in, unique ] PREGISTRY_SERVER_NAME ServerName,
  683. [ in ] REGSAM samDesired,
  684. [ out ] PRPC_HKEY phKey
  685. );
  686. [local]
  687. error_status_t
  688. LocalOpenPerformanceNlsText(
  689. [ in, unique ] PREGISTRY_SERVER_NAME ServerName,
  690. [ in ] REGSAM samDesired,
  691. [ out ] PRPC_HKEY phKey
  692. );
  693. error_status_t
  694. OpenPerformanceText(
  695. [ in, unique ] PREGISTRY_SERVER_NAME ServerName,
  696. [ in ] REGSAM samDesired,
  697. [ out ] PRPC_HKEY phKey
  698. );
  699. error_status_t
  700. OpenPerformanceNlsText(
  701. [ in, unique ] PREGISTRY_SERVER_NAME ServerName,
  702. [ in ] REGSAM samDesired,
  703. [ out ] PRPC_HKEY phKey
  704. );
  705. } // End of interface defintion