home *** CD-ROM | disk | FTP | other *** search
/ Inter.Net 55-1 / Inter.Net 55-1.iso / CBuilder / Setup / BCB / data.z / winreg.h < prev    next >
Encoding:
C/C++ Source or Header  |  1998-02-09  |  14.0 KB  |  783 lines

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