home *** CD-ROM | disk | FTP | other *** search
/ Tricks of the Windows Gam…ming Gurus (2nd Edition) / Disc2.iso / vc98 / include / winreg.h < prev    next >
C/C++ Source or Header  |  1998-04-25  |  14KB  |  794 lines

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