home *** CD-ROM | disk | FTP | other *** search
/ Magazyn Internet 2000 May / MICD_2000_05.iso / CBuilder5 / INSTALL / DATA1.CAB / Program_Built_Files / Include / winreg.h < prev    next >
C/C++ Source or Header  |  2000-02-01  |  17KB  |  852 lines

  1. /*++ BUILD Version: 0001    // Increment this if a change has global effects
  2.  
  3. Copyright (c) 1991-1998 Microsoft Corporation
  4.  
  5. Module Name:
  6.  
  7.     Winreg.h
  8.  
  9. Abstract:
  10.  
  11.     This module contains the function prototypes and constant, type and
  12.     structure definitions for the Windows 32-Bit Registry API.
  13.  
  14. --*/
  15.  
  16. #ifndef _WINREG_
  17. #pragma option push -b -a8 -pc -A- /*P_O_Push*/
  18. #define _WINREG_
  19.  
  20.  
  21. #ifdef _MAC
  22. #include <macwin32.h>
  23. #endif
  24.  
  25. #ifdef __cplusplus
  26. extern "C" {
  27. #endif
  28.  
  29. #ifndef WINVER
  30. #define WINVER 0x0500   // version 5.0
  31. #endif /* !WINVER */
  32.  
  33. //
  34. // Requested Key access mask type.
  35. //
  36.  
  37. typedef ACCESS_MASK REGSAM;
  38.  
  39. //
  40. // Reserved Key Handles.
  41. //
  42.  
  43. #define HKEY_CLASSES_ROOT           (( HKEY ) (ULONG_PTR)((LONG)0x80000000) )
  44. #define HKEY_CURRENT_USER           (( HKEY ) (ULONG_PTR)((LONG)0x80000001) )
  45. #define HKEY_LOCAL_MACHINE          (( HKEY ) (ULONG_PTR)((LONG)0x80000002) )
  46. #define HKEY_USERS                  (( HKEY ) (ULONG_PTR)((LONG)0x80000003) )
  47. #define HKEY_PERFORMANCE_DATA       (( HKEY ) (ULONG_PTR)((LONG)0x80000004) )
  48. #if(WINVER >= 0x0400)
  49. #define HKEY_CURRENT_CONFIG         (( HKEY ) (ULONG_PTR)((LONG)0x80000005) )
  50. #define HKEY_DYN_DATA               (( HKEY ) (ULONG_PTR)((LONG)0x80000006) )
  51.  
  52. /*NOINC*/
  53. #ifndef _PROVIDER_STRUCTS_DEFINED
  54. #define _PROVIDER_STRUCTS_DEFINED
  55.  
  56. #define PROVIDER_KEEPS_VALUE_LENGTH 0x1
  57. struct val_context {
  58.     int valuelen;       // the total length of this value
  59.     LPVOID value_context;   // provider's context
  60.     LPVOID val_buff_ptr;    // where in the ouput buffer the value is.
  61. };
  62.  
  63. typedef struct val_context FAR *PVALCONTEXT;
  64.  
  65. typedef struct pvalueA {           // Provider supplied value/context.
  66.     LPSTR   pv_valuename;          // The value name pointer
  67.     int pv_valuelen;
  68.     LPVOID pv_value_context;
  69.     DWORD pv_type;
  70. }PVALUEA, FAR *PPVALUEA;
  71. typedef struct pvalueW {           // Provider supplied value/context.
  72.     LPWSTR  pv_valuename;          // The value name pointer
  73.     int pv_valuelen;
  74.     LPVOID pv_value_context;
  75.     DWORD pv_type;
  76. }PVALUEW, FAR *PPVALUEW;
  77. #ifdef UNICODE
  78. typedef PVALUEW PVALUE;
  79. typedef PPVALUEW PPVALUE;
  80. #else
  81. typedef PVALUEA PVALUE;
  82. typedef PPVALUEA PPVALUE;
  83. #endif // UNICODE
  84.  
  85. typedef
  86. DWORD __cdecl
  87. QUERYHANDLER (LPVOID keycontext, PVALCONTEXT val_list, DWORD num_vals,
  88.           LPVOID outputbuffer, DWORD FAR *total_outlen, DWORD input_blen);
  89.  
  90. typedef QUERYHANDLER FAR *PQUERYHANDLER;
  91.  
  92. typedef struct provider_info {
  93.     PQUERYHANDLER pi_R0_1val;
  94.     PQUERYHANDLER pi_R0_allvals;
  95.     PQUERYHANDLER pi_R3_1val;
  96.     PQUERYHANDLER pi_R3_allvals;
  97.     DWORD pi_flags;    // capability flags (none defined yet).
  98.     LPVOID pi_key_context;
  99. }REG_PROVIDER;
  100.  
  101. typedef struct provider_info FAR *PPROVIDER;
  102.  
  103. typedef struct value_entA {
  104.     LPSTR   ve_valuename;
  105.     DWORD ve_valuelen;
  106.     DWORD_PTR ve_valueptr;
  107.     DWORD ve_type;
  108. }VALENTA, FAR *PVALENTA;
  109. typedef struct value_entW {
  110.     LPWSTR  ve_valuename;
  111.     DWORD ve_valuelen;
  112.     DWORD_PTR ve_valueptr;
  113.     DWORD ve_type;
  114. }VALENTW, FAR *PVALENTW;
  115. #ifdef UNICODE
  116. typedef VALENTW VALENT;
  117. typedef PVALENTW PVALENT;
  118. #else
  119. typedef VALENTA VALENT;
  120. typedef PVALENTA PVALENT;
  121. #endif // UNICODE
  122.  
  123. #endif // not(_PROVIDER_STRUCTS_DEFINED)
  124. /*INC*/
  125.  
  126. #endif /* WINVER >= 0x0400 */
  127.  
  128. //
  129. // Default values for parameters that do not exist in the Win 3.1
  130. // compatible APIs.
  131. //
  132.  
  133. #define WIN31_CLASS                 NULL
  134.  
  135. //
  136. // API Prototypes.
  137. //
  138.  
  139.  
  140. WINADVAPI
  141. LONG
  142. APIENTRY
  143. RegCloseKey (
  144.     IN HKEY hKey
  145.     );
  146.  
  147. WINADVAPI
  148. LONG
  149. APIENTRY
  150. RegOverridePredefKey (
  151.     IN HKEY hKey,
  152.     IN HKEY hNewHKey
  153.     );
  154.  
  155. WINADVAPI
  156. LONG
  157. APIENTRY
  158. RegOpenUserClassesRoot(
  159.     HANDLE hToken,
  160.     DWORD  dwOptions,
  161.     REGSAM samDesired,
  162.     PHKEY  phkResult
  163.     );
  164.  
  165. WINADVAPI
  166. LONG
  167. APIENTRY
  168. RegOpenCurrentUser(
  169.     REGSAM samDesired,
  170.     PHKEY phkResult
  171.     );
  172.  
  173. WINADVAPI
  174. LONG
  175. APIENTRY
  176. RegDisablePredefinedCache(
  177.     );
  178.  
  179. WINADVAPI
  180. LONG
  181. APIENTRY
  182. RegConnectRegistryA (
  183.     IN LPCSTR lpMachineName,
  184.     IN HKEY hKey,
  185.     OUT PHKEY phkResult
  186.     );
  187. WINADVAPI
  188. LONG
  189. APIENTRY
  190. RegConnectRegistryW (
  191.     IN LPCWSTR lpMachineName,
  192.     IN HKEY hKey,
  193.     OUT PHKEY phkResult
  194.     );
  195. #ifdef UNICODE
  196. #define RegConnectRegistry  RegConnectRegistryW
  197. #else
  198. #define RegConnectRegistry  RegConnectRegistryA
  199. #endif // !UNICODE
  200.  
  201. WINADVAPI
  202. LONG
  203. APIENTRY
  204. RegCreateKeyA (
  205.     IN HKEY hKey,
  206.     IN LPCSTR lpSubKey,
  207.     OUT PHKEY phkResult
  208.     );
  209. WINADVAPI
  210. LONG
  211. APIENTRY
  212. RegCreateKeyW (
  213.     IN HKEY hKey,
  214.     IN LPCWSTR lpSubKey,
  215.     OUT PHKEY phkResult
  216.     );
  217. #ifdef UNICODE
  218. #define RegCreateKey  RegCreateKeyW
  219. #else
  220. #define RegCreateKey  RegCreateKeyA
  221. #endif // !UNICODE
  222.  
  223. WINADVAPI
  224. LONG
  225. APIENTRY
  226. RegCreateKeyExA (
  227.     IN HKEY hKey,
  228.     IN LPCSTR lpSubKey,
  229.     IN DWORD Reserved,
  230.     IN LPSTR lpClass,
  231.     IN DWORD dwOptions,
  232.     IN REGSAM samDesired,
  233.     IN LPSECURITY_ATTRIBUTES lpSecurityAttributes,
  234.     OUT PHKEY phkResult,
  235.     OUT LPDWORD lpdwDisposition
  236.     );
  237. WINADVAPI
  238. LONG
  239. APIENTRY
  240. RegCreateKeyExW (
  241.     IN HKEY hKey,
  242.     IN LPCWSTR lpSubKey,
  243.     IN DWORD Reserved,
  244.     IN LPWSTR lpClass,
  245.     IN DWORD dwOptions,
  246.     IN REGSAM samDesired,
  247.     IN LPSECURITY_ATTRIBUTES lpSecurityAttributes,
  248.     OUT PHKEY phkResult,
  249.     OUT LPDWORD lpdwDisposition
  250.     );
  251. #ifdef UNICODE
  252. #define RegCreateKeyEx  RegCreateKeyExW
  253. #else
  254. #define RegCreateKeyEx  RegCreateKeyExA
  255. #endif // !UNICODE
  256.  
  257. WINADVAPI
  258. LONG
  259. APIENTRY
  260. RegDeleteKeyA (
  261.     IN HKEY hKey,
  262.     IN LPCSTR lpSubKey
  263.     );
  264. WINADVAPI
  265. LONG
  266. APIENTRY
  267. RegDeleteKeyW (
  268.     IN HKEY hKey,
  269.     IN LPCWSTR lpSubKey
  270.     );
  271. #ifdef UNICODE
  272. #define RegDeleteKey  RegDeleteKeyW
  273. #else
  274. #define RegDeleteKey  RegDeleteKeyA
  275. #endif // !UNICODE
  276.  
  277. WINADVAPI
  278. LONG
  279. APIENTRY
  280. RegDeleteValueA (
  281.     IN HKEY hKey,
  282.     IN LPCSTR lpValueName
  283.     );
  284. WINADVAPI
  285. LONG
  286. APIENTRY
  287. RegDeleteValueW (
  288.     IN HKEY hKey,
  289.     IN LPCWSTR lpValueName
  290.     );
  291. #ifdef UNICODE
  292. #define RegDeleteValue  RegDeleteValueW
  293. #else
  294. #define RegDeleteValue  RegDeleteValueA
  295. #endif // !UNICODE
  296.  
  297. WINADVAPI
  298. LONG
  299. APIENTRY
  300. RegEnumKeyA (
  301.     IN HKEY hKey,
  302.     IN DWORD dwIndex,
  303.     OUT LPSTR lpName,
  304.     IN DWORD cbName
  305.     );
  306. WINADVAPI
  307. LONG
  308. APIENTRY
  309. RegEnumKeyW (
  310.     IN HKEY hKey,
  311.     IN DWORD dwIndex,
  312.     OUT LPWSTR lpName,
  313.     IN DWORD cbName
  314.     );
  315. #ifdef UNICODE
  316. #define RegEnumKey  RegEnumKeyW
  317. #else
  318. #define RegEnumKey  RegEnumKeyA
  319. #endif // !UNICODE
  320.  
  321. WINADVAPI
  322. LONG
  323. APIENTRY
  324. RegEnumKeyExA (
  325.     IN HKEY hKey,
  326.     IN DWORD dwIndex,
  327.     OUT LPSTR lpName,
  328.     IN OUT LPDWORD lpcbName,
  329.     IN LPDWORD lpReserved,
  330.     IN OUT LPSTR lpClass,
  331.     IN OUT LPDWORD lpcbClass,
  332.     OUT PFILETIME lpftLastWriteTime
  333.     );
  334. WINADVAPI
  335. LONG
  336. APIENTRY
  337. RegEnumKeyExW (
  338.     IN HKEY hKey,
  339.     IN DWORD dwIndex,
  340.     OUT LPWSTR lpName,
  341.     IN OUT LPDWORD lpcbName,
  342.     IN LPDWORD lpReserved,
  343.     IN OUT LPWSTR lpClass,
  344.     IN OUT LPDWORD lpcbClass,
  345.     OUT PFILETIME lpftLastWriteTime
  346.     );
  347. #ifdef UNICODE
  348. #define RegEnumKeyEx  RegEnumKeyExW
  349. #else
  350. #define RegEnumKeyEx  RegEnumKeyExA
  351. #endif // !UNICODE
  352.  
  353. WINADVAPI
  354. LONG
  355. APIENTRY
  356. RegEnumValueA (
  357.     IN HKEY hKey,
  358.     IN DWORD dwIndex,
  359.     OUT LPSTR lpValueName,
  360.     IN OUT LPDWORD lpcbValueName,
  361.     IN LPDWORD lpReserved,
  362.     OUT LPDWORD lpType,
  363.     OUT LPBYTE lpData,
  364.     IN OUT LPDWORD lpcbData
  365.     );
  366. WINADVAPI
  367. LONG
  368. APIENTRY
  369. RegEnumValueW (
  370.     IN HKEY hKey,
  371.     IN DWORD dwIndex,
  372.     OUT LPWSTR lpValueName,
  373.     IN OUT LPDWORD lpcbValueName,
  374.     IN LPDWORD lpReserved,
  375.     OUT LPDWORD lpType,
  376.     OUT LPBYTE lpData,
  377.     IN OUT LPDWORD lpcbData
  378.     );
  379. #ifdef UNICODE
  380. #define RegEnumValue  RegEnumValueW
  381. #else
  382. #define RegEnumValue  RegEnumValueA
  383. #endif // !UNICODE
  384.  
  385. WINADVAPI
  386. LONG
  387. APIENTRY
  388. RegFlushKey (
  389.     IN HKEY hKey
  390.     );
  391.  
  392. WINADVAPI
  393. LONG
  394. APIENTRY
  395. RegGetKeySecurity (
  396.     IN HKEY hKey,
  397.     IN SECURITY_INFORMATION SecurityInformation,
  398.     OUT PSECURITY_DESCRIPTOR pSecurityDescriptor,
  399.     IN OUT LPDWORD lpcbSecurityDescriptor
  400.     );
  401.  
  402. WINADVAPI
  403. LONG
  404. APIENTRY
  405. RegLoadKeyA (
  406.     IN HKEY    hKey,
  407.     IN LPCSTR  lpSubKey,
  408.     IN LPCSTR  lpFile
  409.     );
  410. WINADVAPI
  411. LONG
  412. APIENTRY
  413. RegLoadKeyW (
  414.     IN HKEY    hKey,
  415.     IN LPCWSTR  lpSubKey,
  416.     IN LPCWSTR  lpFile
  417.     );
  418. #ifdef UNICODE
  419. #define RegLoadKey  RegLoadKeyW
  420. #else
  421. #define RegLoadKey  RegLoadKeyA
  422. #endif // !UNICODE
  423.  
  424. WINADVAPI
  425. LONG
  426. APIENTRY
  427. RegNotifyChangeKeyValue (
  428.     IN HKEY hKey,
  429.     IN BOOL bWatchSubtree,
  430.     IN DWORD dwNotifyFilter,
  431.     IN HANDLE hEvent,
  432.     IN BOOL fAsynchronus
  433.     );
  434.  
  435. WINADVAPI
  436. LONG
  437. APIENTRY
  438. RegOpenKeyA (
  439.     IN HKEY hKey,
  440.     IN LPCSTR lpSubKey,
  441.     OUT PHKEY phkResult
  442.     );
  443. WINADVAPI
  444. LONG
  445. APIENTRY
  446. RegOpenKeyW (
  447.     IN HKEY hKey,
  448.     IN LPCWSTR lpSubKey,
  449.     OUT PHKEY phkResult
  450.     );
  451. #ifdef UNICODE
  452. #define RegOpenKey  RegOpenKeyW
  453. #else
  454. #define RegOpenKey  RegOpenKeyA
  455. #endif // !UNICODE
  456.  
  457. WINADVAPI
  458. LONG
  459. APIENTRY
  460. RegOpenKeyExA (
  461.     IN HKEY hKey,
  462.     IN LPCSTR lpSubKey,
  463.     IN DWORD ulOptions,
  464.     IN REGSAM samDesired,
  465.     OUT PHKEY phkResult
  466.     );
  467. WINADVAPI
  468. LONG
  469. APIENTRY
  470. RegOpenKeyExW (
  471.     IN HKEY hKey,
  472.     IN LPCWSTR lpSubKey,
  473.     IN DWORD ulOptions,
  474.     IN REGSAM samDesired,
  475.     OUT PHKEY phkResult
  476.     );
  477. #ifdef UNICODE
  478. #define RegOpenKeyEx  RegOpenKeyExW
  479. #else
  480. #define RegOpenKeyEx  RegOpenKeyExA
  481. #endif // !UNICODE
  482.  
  483. WINADVAPI
  484. LONG
  485. APIENTRY
  486. RegQueryInfoKeyA (
  487.     IN HKEY hKey,
  488.     OUT LPSTR lpClass,
  489.     IN OUT LPDWORD lpcbClass,
  490.     IN LPDWORD lpReserved,
  491.     OUT LPDWORD lpcSubKeys,
  492.     OUT LPDWORD lpcbMaxSubKeyLen,
  493.     OUT LPDWORD lpcbMaxClassLen,
  494.     OUT LPDWORD lpcValues,
  495.     OUT LPDWORD lpcbMaxValueNameLen,
  496.     OUT LPDWORD lpcbMaxValueLen,
  497.     OUT LPDWORD lpcbSecurityDescriptor,
  498.     OUT PFILETIME lpftLastWriteTime
  499.     );
  500. WINADVAPI
  501. LONG
  502. APIENTRY
  503. RegQueryInfoKeyW (
  504.     IN HKEY hKey,
  505.     OUT LPWSTR lpClass,
  506.     IN OUT LPDWORD lpcbClass,
  507.     IN LPDWORD lpReserved,
  508.     OUT LPDWORD lpcSubKeys,
  509.     OUT LPDWORD lpcbMaxSubKeyLen,
  510.     OUT LPDWORD lpcbMaxClassLen,
  511.     OUT LPDWORD lpcValues,
  512.     OUT LPDWORD lpcbMaxValueNameLen,
  513.     OUT LPDWORD lpcbMaxValueLen,
  514.     OUT LPDWORD lpcbSecurityDescriptor,
  515.     OUT PFILETIME lpftLastWriteTime
  516.     );
  517. #ifdef UNICODE
  518. #define RegQueryInfoKey  RegQueryInfoKeyW
  519. #else
  520. #define RegQueryInfoKey  RegQueryInfoKeyA
  521. #endif // !UNICODE
  522.  
  523. WINADVAPI
  524. LONG
  525. APIENTRY
  526. RegQueryValueA (
  527.     IN HKEY hKey,
  528.     IN LPCSTR lpSubKey,
  529.     OUT LPSTR lpValue,
  530.     IN OUT PLONG   lpcbValue
  531.     );
  532. WINADVAPI
  533. LONG
  534. APIENTRY
  535. RegQueryValueW (
  536.     IN HKEY hKey,
  537.     IN LPCWSTR lpSubKey,
  538.     OUT LPWSTR lpValue,
  539.     IN OUT PLONG   lpcbValue
  540.     );
  541. #ifdef UNICODE
  542. #define RegQueryValue  RegQueryValueW
  543. #else
  544. #define RegQueryValue  RegQueryValueA
  545. #endif // !UNICODE
  546.  
  547. #if(WINVER >= 0x0400)
  548. WINADVAPI
  549. LONG
  550. APIENTRY
  551. RegQueryMultipleValuesA (
  552.     IN HKEY hKey,
  553.     OUT PVALENTA val_list,
  554.     IN DWORD num_vals,
  555.     OUT LPSTR lpValueBuf,
  556.     IN OUT LPDWORD ldwTotsize
  557.     );
  558. WINADVAPI
  559. LONG
  560. APIENTRY
  561. RegQueryMultipleValuesW (
  562.     IN HKEY hKey,
  563.     OUT PVALENTW val_list,
  564.     IN DWORD num_vals,
  565.     OUT LPWSTR lpValueBuf,
  566.     IN OUT LPDWORD ldwTotsize
  567.     );
  568. #ifdef UNICODE
  569. #define RegQueryMultipleValues  RegQueryMultipleValuesW
  570. #else
  571. #define RegQueryMultipleValues  RegQueryMultipleValuesA
  572. #endif // !UNICODE
  573. #endif /* WINVER >= 0x0400 */
  574.  
  575. WINADVAPI
  576. LONG
  577. APIENTRY
  578. RegQueryValueExA (
  579.     IN HKEY hKey,
  580.     IN LPCSTR lpValueName,
  581.     IN LPDWORD lpReserved,
  582.     OUT LPDWORD lpType,
  583.     IN OUT LPBYTE lpData,
  584.     IN OUT LPDWORD lpcbData
  585.     );
  586. WINADVAPI
  587. LONG
  588. APIENTRY
  589. RegQueryValueExW (
  590.     IN HKEY hKey,
  591.     IN LPCWSTR lpValueName,
  592.     IN LPDWORD lpReserved,
  593.     OUT LPDWORD lpType,
  594.     IN OUT LPBYTE lpData,
  595.     IN OUT LPDWORD lpcbData
  596.     );
  597. #ifdef UNICODE
  598. #define RegQueryValueEx  RegQueryValueExW
  599. #else
  600. #define RegQueryValueEx  RegQueryValueExA
  601. #endif // !UNICODE
  602.  
  603. WINADVAPI
  604. LONG
  605. APIENTRY
  606. RegReplaceKeyA (
  607.     IN HKEY     hKey,
  608.     IN LPCSTR  lpSubKey,
  609.     IN LPCSTR  lpNewFile,
  610.     IN LPCSTR  lpOldFile
  611.     );
  612. WINADVAPI
  613. LONG
  614. APIENTRY
  615. RegReplaceKeyW (
  616.     IN HKEY     hKey,
  617.     IN LPCWSTR  lpSubKey,
  618.     IN LPCWSTR  lpNewFile,
  619.     IN LPCWSTR  lpOldFile
  620.     );
  621. #ifdef UNICODE
  622. #define RegReplaceKey  RegReplaceKeyW
  623. #else
  624. #define RegReplaceKey  RegReplaceKeyA
  625. #endif // !UNICODE
  626.  
  627. WINADVAPI
  628. LONG
  629. APIENTRY
  630. RegRestoreKeyA (
  631.     IN HKEY hKey,
  632.     IN LPCSTR lpFile,
  633.     IN DWORD   dwFlags
  634.     );
  635. WINADVAPI
  636. LONG
  637. APIENTRY
  638. RegRestoreKeyW (
  639.     IN HKEY hKey,
  640.     IN LPCWSTR lpFile,
  641.     IN DWORD   dwFlags
  642.     );
  643. #ifdef UNICODE
  644. #define RegRestoreKey  RegRestoreKeyW
  645. #else
  646. #define RegRestoreKey  RegRestoreKeyA
  647. #endif // !UNICODE
  648.  
  649. WINADVAPI
  650. LONG
  651. APIENTRY
  652. RegSaveKeyA (
  653.     IN HKEY hKey,
  654.     IN LPCSTR lpFile,
  655.     IN LPSECURITY_ATTRIBUTES lpSecurityAttributes
  656.     );
  657. WINADVAPI
  658. LONG
  659. APIENTRY
  660. RegSaveKeyW (
  661.     IN HKEY hKey,
  662.     IN LPCWSTR lpFile,
  663.     IN LPSECURITY_ATTRIBUTES lpSecurityAttributes
  664.     );
  665. #ifdef UNICODE
  666. #define RegSaveKey  RegSaveKeyW
  667. #else
  668. #define RegSaveKey  RegSaveKeyA
  669. #endif // !UNICODE
  670.  
  671. WINADVAPI
  672. LONG
  673. APIENTRY
  674. RegSetKeySecurity (
  675.     IN HKEY hKey,
  676.     IN SECURITY_INFORMATION SecurityInformation,
  677.     IN PSECURITY_DESCRIPTOR pSecurityDescriptor
  678.     );
  679.  
  680. WINADVAPI
  681. LONG
  682. APIENTRY
  683. RegSetValueA (
  684.     IN HKEY hKey,
  685.     IN LPCSTR lpSubKey,
  686.     IN DWORD dwType,
  687.     IN LPCSTR lpData,
  688.     IN DWORD cbData
  689.     );
  690. WINADVAPI
  691. LONG
  692. APIENTRY
  693. RegSetValueW (
  694.     IN HKEY hKey,
  695.     IN LPCWSTR lpSubKey,
  696.     IN DWORD dwType,
  697.     IN LPCWSTR lpData,
  698.     IN DWORD cbData
  699.     );
  700. #ifdef UNICODE
  701. #define RegSetValue  RegSetValueW
  702. #else
  703. #define RegSetValue  RegSetValueA
  704. #endif // !UNICODE
  705.  
  706.  
  707. WINADVAPI
  708. LONG
  709. APIENTRY
  710. RegSetValueExA (
  711.     IN HKEY hKey,
  712.     IN LPCSTR lpValueName,
  713.     IN DWORD Reserved,
  714.     IN DWORD dwType,
  715.     IN CONST BYTE* lpData,
  716.     IN DWORD cbData
  717.     );
  718. WINADVAPI
  719. LONG
  720. APIENTRY
  721. RegSetValueExW (
  722.     IN HKEY hKey,
  723.     IN LPCWSTR lpValueName,
  724.     IN DWORD Reserved,
  725.     IN DWORD dwType,
  726.     IN CONST BYTE* lpData,
  727.     IN DWORD cbData
  728.     );
  729. #ifdef UNICODE
  730. #define RegSetValueEx  RegSetValueExW
  731. #else
  732. #define RegSetValueEx  RegSetValueExA
  733. #endif // !UNICODE
  734.  
  735. WINADVAPI
  736. LONG
  737. APIENTRY
  738. RegUnLoadKeyA (
  739.     IN HKEY    hKey,
  740.     IN LPCSTR lpSubKey
  741.     );
  742. WINADVAPI
  743. LONG
  744. APIENTRY
  745. RegUnLoadKeyW (
  746.     IN HKEY    hKey,
  747.     IN LPCWSTR lpSubKey
  748.     );
  749. #ifdef UNICODE
  750. #define RegUnLoadKey  RegUnLoadKeyW
  751. #else
  752. #define RegUnLoadKey  RegUnLoadKeyA
  753. #endif // !UNICODE
  754.  
  755. //
  756. // Remoteable System Shutdown APIs
  757. //
  758.  
  759. WINADVAPI
  760. BOOL
  761. APIENTRY
  762. InitiateSystemShutdownA(
  763.     IN LPSTR lpMachineName,
  764.     IN LPSTR lpMessage,
  765.     IN DWORD dwTimeout,
  766.     IN BOOL bForceAppsClosed,
  767.     IN BOOL bRebootAfterShutdown
  768.     );
  769. WINADVAPI
  770. BOOL
  771. APIENTRY
  772. InitiateSystemShutdownW(
  773.     IN LPWSTR lpMachineName,
  774.     IN LPWSTR lpMessage,
  775.     IN DWORD dwTimeout,
  776.     IN BOOL bForceAppsClosed,
  777.     IN BOOL bRebootAfterShutdown
  778.     );
  779. #ifdef UNICODE
  780. #define InitiateSystemShutdown  InitiateSystemShutdownW
  781. #else
  782. #define InitiateSystemShutdown  InitiateSystemShutdownA
  783. #endif // !UNICODE
  784.  
  785.  
  786. WINADVAPI
  787. BOOL
  788. APIENTRY
  789. AbortSystemShutdownA(
  790.     IN LPSTR lpMachineName
  791.     );
  792. WINADVAPI
  793. BOOL
  794. APIENTRY
  795. AbortSystemShutdownW(
  796.     IN LPWSTR lpMachineName
  797.     );
  798. #ifdef UNICODE
  799. #define AbortSystemShutdown  AbortSystemShutdownW
  800. #else
  801. #define AbortSystemShutdown  AbortSystemShutdownA
  802. #endif // !UNICODE
  803.  
  804. //
  805. // defines for InitiateSystemShutdownEx reason codes
  806. //
  807.  
  808. #define REASON_SWINSTALL    0
  809. #define REASON_HWINSTALL    1
  810. #define REASON_SERVICEHANG  2
  811. #define REASON_UNSTABLE     3
  812. #define REASON_SWHWRECONF   4
  813. #define REASON_OTHER        5
  814. #define REASON_UNKNOWN      255
  815. #define REASON_PLANNED_FLAG 0x80000000
  816.  
  817. WINADVAPI
  818. BOOL
  819. APIENTRY
  820. InitiateSystemShutdownExA(
  821.     IN LPSTR lpMachineName,
  822.     IN LPSTR lpMessage,
  823.     IN DWORD dwTimeout,
  824.     IN BOOL bForceAppsClosed,
  825.     IN BOOL bRebootAfterShutdown,
  826.     IN DWORD dwReason
  827.     );
  828. WINADVAPI
  829. BOOL
  830. APIENTRY
  831. InitiateSystemShutdownExW(
  832.     IN LPWSTR lpMachineName,
  833.     IN LPWSTR lpMessage,
  834.     IN DWORD dwTimeout,
  835.     IN BOOL bForceAppsClosed,
  836.     IN BOOL bRebootAfterShutdown,
  837.     IN DWORD dwReason
  838.     );
  839. #ifdef UNICODE
  840. #define InitiateSystemShutdownEx  InitiateSystemShutdownExW
  841. #else
  842. #define InitiateSystemShutdownEx  InitiateSystemShutdownExA
  843. #endif // !UNICODE
  844.  
  845. #ifdef __cplusplus
  846. }
  847. #endif
  848.  
  849.  
  850. #pragma option pop /*P_O_Pop*/
  851. #endif // _WINREG_
  852.