Subversion Repositories Kolibri OS

Rev

Blame | Last modification | View Log | Download | RSS feed

  1. /**
  2.  * This file has no copyright assigned and is placed in the Public Domain.
  3.  * This file is part of the w64 mingw-runtime package.
  4.  * No warranty is given; refer to the file DISCLAIMER within this package.
  5.  */
  6. #ifndef _WINREG_
  7. #define _WINREG_
  8.  
  9. #ifdef __cplusplus
  10. extern "C" {
  11. #endif
  12.  
  13. #ifndef WINVER
  14. #define WINVER 0x0502
  15. #endif
  16.  
  17. #define RRF_RT_REG_NONE 0x00000001
  18. #define RRF_RT_REG_SZ 0x00000002
  19. #define RRF_RT_REG_EXPAND_SZ 0x00000004
  20. #define RRF_RT_REG_BINARY 0x00000008
  21. #define RRF_RT_REG_DWORD 0x00000010
  22. #define RRF_RT_REG_MULTI_SZ 0x00000020
  23. #define RRF_RT_REG_QWORD 0x00000040
  24.  
  25. #define RRF_RT_DWORD (RRF_RT_REG_BINARY | RRF_RT_REG_DWORD)
  26. #define RRF_RT_QWORD (RRF_RT_REG_BINARY | RRF_RT_REG_QWORD)
  27. #define RRF_RT_ANY 0x0000ffff
  28.  
  29. #define RRF_NOEXPAND 0x10000000
  30. #define RRF_ZEROONFAILURE 0x20000000
  31.  
  32.   typedef ACCESS_MASK REGSAM;
  33.  
  34. #define HKEY_CLASSES_ROOT ((HKEY) (ULONG_PTR)((LONG)0x80000000))
  35. #define HKEY_CURRENT_USER ((HKEY) (ULONG_PTR)((LONG)0x80000001))
  36. #define HKEY_LOCAL_MACHINE ((HKEY) (ULONG_PTR)((LONG)0x80000002))
  37. #define HKEY_USERS ((HKEY) (ULONG_PTR)((LONG)0x80000003))
  38. #define HKEY_PERFORMANCE_DATA ((HKEY) (ULONG_PTR)((LONG)0x80000004))
  39. #define HKEY_PERFORMANCE_TEXT ((HKEY) (ULONG_PTR)((LONG)0x80000050))
  40. #define HKEY_PERFORMANCE_NLSTEXT ((HKEY) (ULONG_PTR)((LONG)0x80000060))
  41. #define HKEY_CURRENT_CONFIG ((HKEY) (ULONG_PTR)((LONG)0x80000005))
  42. #define HKEY_DYN_DATA ((HKEY) (ULONG_PTR)((LONG)0x80000006))
  43.  
  44. #define REG_SECURE_CONNECTION 1
  45.  
  46. #ifndef _PROVIDER_STRUCTS_DEFINED
  47. #define _PROVIDER_STRUCTS_DEFINED
  48.  
  49. #define PROVIDER_KEEPS_VALUE_LENGTH 0x1
  50.   struct val_context {
  51.     int valuelen;
  52.     LPVOID value_context;
  53.     LPVOID val_buff_ptr;
  54.   };
  55.  
  56.   typedef struct val_context *PVALCONTEXT;
  57.  
  58.   typedef struct pvalueA {
  59.     LPSTR pv_valuename;
  60.     int pv_valuelen;
  61.     LPVOID pv_value_context;
  62.     DWORD pv_type;
  63.   }PVALUEA,*PPVALUEA;
  64.  
  65.   typedef struct pvalueW {
  66.     LPWSTR pv_valuename;
  67.     int pv_valuelen;
  68.     LPVOID pv_value_context;
  69.     DWORD pv_type;
  70.   }PVALUEW,*PPVALUEW;
  71.  
  72. #ifdef UNICODE
  73.   typedef PVALUEW PVALUE;
  74.   typedef PPVALUEW PPVALUE;
  75. #else
  76.   typedef PVALUEA PVALUE;
  77.   typedef PPVALUEA PPVALUE;
  78. #endif
  79.  
  80.   typedef DWORD __cdecl QUERYHANDLER(LPVOID keycontext,PVALCONTEXT val_list,DWORD num_vals,LPVOID outputbuffer,DWORD *total_outlen,DWORD input_blen);
  81.  
  82.   typedef QUERYHANDLER *PQUERYHANDLER;
  83.  
  84.   typedef struct provider_info {
  85.     PQUERYHANDLER pi_R0_1val;
  86.     PQUERYHANDLER pi_R0_allvals;
  87.     PQUERYHANDLER pi_R3_1val;
  88.     PQUERYHANDLER pi_R3_allvals;
  89.     DWORD pi_flags;
  90.     LPVOID pi_key_context;
  91.   } REG_PROVIDER;
  92.  
  93.   typedef struct provider_info *PPROVIDER;
  94.  
  95.   typedef struct value_entA {
  96.     LPSTR ve_valuename;
  97.     DWORD ve_valuelen;
  98.     DWORD_PTR ve_valueptr;
  99.     DWORD ve_type;
  100.   } VALENTA,*PVALENTA;
  101.  
  102.   typedef struct value_entW {
  103.     LPWSTR ve_valuename;
  104.     DWORD ve_valuelen;
  105.     DWORD_PTR ve_valueptr;
  106.     DWORD ve_type;
  107.   } VALENTW,*PVALENTW;
  108.  
  109. #ifdef UNICODE
  110.   typedef VALENTW VALENT;
  111.   typedef PVALENTW PVALENT;
  112. #else
  113.   typedef VALENTA VALENT;
  114.   typedef PVALENTA PVALENT;
  115. #endif
  116. #endif
  117.  
  118. #define WIN31_CLASS NULL
  119.  
  120. #ifdef UNICODE
  121. #define RegConnectRegistry RegConnectRegistryW
  122. #define RegConnectRegistryEx RegConnectRegistryExW
  123. #define RegCreateKey RegCreateKeyW
  124. #define RegCreateKeyEx RegCreateKeyExW
  125. #define RegDeleteKey RegDeleteKeyW
  126. #define RegDeleteKeyEx RegDeleteKeyExW
  127. #define RegDeleteValue RegDeleteValueW
  128. #define RegEnumKey RegEnumKeyW
  129. #define RegEnumKeyEx RegEnumKeyExW
  130. #define RegEnumValue RegEnumValueW
  131. #define RegLoadKey RegLoadKeyW
  132. #define RegOpenKey RegOpenKeyW
  133. #define RegOpenKeyEx RegOpenKeyExW
  134. #define RegQueryInfoKey RegQueryInfoKeyW
  135. #define RegQueryValue RegQueryValueW
  136. #define RegQueryMultipleValues RegQueryMultipleValuesW
  137. #define RegQueryValueEx RegQueryValueExW
  138. #define RegReplaceKey RegReplaceKeyW
  139. #define RegRestoreKey RegRestoreKeyW
  140. #define RegSaveKey RegSaveKeyW
  141. #define RegSetValue RegSetValueW
  142. #define RegSetValueEx RegSetValueExW
  143. #define RegUnLoadKey RegUnLoadKeyW
  144. #define RegGetValue RegGetValueW
  145. #define InitiateSystemShutdown InitiateSystemShutdownW
  146. #define AbortSystemShutdown AbortSystemShutdownW
  147. #else
  148. #define RegConnectRegistry RegConnectRegistryA
  149. #define RegConnectRegistryEx RegConnectRegistryExA
  150. #define RegCreateKey RegCreateKeyA
  151. #define RegCreateKeyEx RegCreateKeyExA
  152. #define RegDeleteKey RegDeleteKeyA
  153. #define RegDeleteKeyEx RegDeleteKeyExA
  154. #define RegDeleteValue RegDeleteValueA
  155. #define RegEnumKey RegEnumKeyA
  156. #define RegEnumKeyEx RegEnumKeyExA
  157. #define RegEnumValue RegEnumValueA
  158. #define RegLoadKey RegLoadKeyA
  159. #define RegOpenKey RegOpenKeyA
  160. #define RegOpenKeyEx RegOpenKeyExA
  161. #define RegQueryInfoKey RegQueryInfoKeyA
  162. #define RegQueryValue RegQueryValueA
  163. #define RegQueryMultipleValues RegQueryMultipleValuesA
  164. #define RegQueryValueEx RegQueryValueExA
  165. #define RegReplaceKey RegReplaceKeyA
  166. #define RegRestoreKey RegRestoreKeyA
  167. #define RegSaveKey RegSaveKeyA
  168. #define RegSetValue RegSetValueA
  169. #define RegSetValueEx RegSetValueExA
  170. #define RegUnLoadKey RegUnLoadKeyA
  171. #define RegGetValue RegGetValueA
  172. #define InitiateSystemShutdown InitiateSystemShutdownA
  173. #define AbortSystemShutdown AbortSystemShutdownA
  174. #endif
  175.  
  176.   WINADVAPI LONG WINAPI RegCloseKey(HKEY hKey);
  177.   WINADVAPI LONG WINAPI RegOverridePredefKey(HKEY hKey,HKEY hNewHKey);
  178.   WINADVAPI LONG WINAPI RegOpenUserClassesRoot(HANDLE hToken,DWORD dwOptions,REGSAM samDesired,PHKEY phkResult);
  179.   WINADVAPI LONG WINAPI RegOpenCurrentUser(REGSAM samDesired,PHKEY phkResult);
  180.   WINADVAPI LONG WINAPI RegDisablePredefinedCache();
  181.   WINADVAPI LONG WINAPI RegConnectRegistryA(LPCSTR lpMachineName,HKEY hKey,PHKEY phkResult);
  182.   WINADVAPI LONG WINAPI RegConnectRegistryW(LPCWSTR lpMachineName,HKEY hKey,PHKEY phkResult);
  183.   WINADVAPI LONG WINAPI RegConnectRegistryExA(LPCSTR lpMachineName,HKEY hKey,ULONG Flags,PHKEY phkResult);
  184.   WINADVAPI LONG WINAPI RegConnectRegistryExW(LPCWSTR lpMachineName,HKEY hKey,ULONG Flags,PHKEY phkResult);
  185.   WINADVAPI LONG WINAPI RegCreateKeyA(HKEY hKey,LPCSTR lpSubKey,PHKEY phkResult);
  186.   WINADVAPI LONG WINAPI RegCreateKeyW(HKEY hKey,LPCWSTR lpSubKey,PHKEY phkResult);
  187.   WINADVAPI LONG WINAPI RegCreateKeyExA(HKEY hKey,LPCSTR lpSubKey,DWORD Reserved,LPSTR lpClass,DWORD dwOptions,REGSAM samDesired,LPSECURITY_ATTRIBUTES lpSecurityAttributes,PHKEY phkResult,LPDWORD lpdwDisposition);
  188.   WINADVAPI LONG WINAPI RegCreateKeyExW(HKEY hKey,LPCWSTR lpSubKey,DWORD Reserved,LPWSTR lpClass,DWORD dwOptions,REGSAM samDesired,LPSECURITY_ATTRIBUTES lpSecurityAttributes,PHKEY phkResult,LPDWORD lpdwDisposition);
  189.   WINADVAPI LONG WINAPI RegDeleteKeyA(HKEY hKey,LPCSTR lpSubKey);
  190.   WINADVAPI LONG WINAPI RegDeleteKeyW(HKEY hKey,LPCWSTR lpSubKey);
  191.   WINADVAPI LONG WINAPI RegDeleteKeyExA(HKEY hKey,LPCSTR lpSubKey,REGSAM samDesired,DWORD Reserved);
  192.   WINADVAPI LONG WINAPI RegDeleteKeyExW(HKEY hKey,LPCWSTR lpSubKey,REGSAM samDesired,DWORD Reserved);
  193.   WINADVAPI LONG WINAPI RegDisableReflectionKey(HKEY hBase);
  194.   WINADVAPI LONG WINAPI RegEnableReflectionKey(HKEY hBase);
  195.   WINADVAPI LONG WINAPI RegQueryReflectionKey(HKEY hBase,WINBOOL *bIsReflectionDisabled);
  196.   WINADVAPI LONG WINAPI RegDeleteValueA(HKEY hKey,LPCSTR lpValueName);
  197.   WINADVAPI LONG WINAPI RegDeleteValueW(HKEY hKey,LPCWSTR lpValueName);
  198.   WINADVAPI LONG WINAPI RegEnumKeyA(HKEY hKey,DWORD dwIndex,LPSTR lpName,DWORD cchName);
  199.   WINADVAPI LONG WINAPI RegEnumKeyW(HKEY hKey,DWORD dwIndex,LPWSTR lpName,DWORD cchName);
  200.   WINADVAPI LONG WINAPI RegEnumKeyExA(HKEY hKey,DWORD dwIndex,LPSTR lpName,LPDWORD lpcchName,LPDWORD lpReserved,LPSTR lpClass,LPDWORD lpcchClass,PFILETIME lpftLastWriteTime);
  201.   WINADVAPI LONG WINAPI RegEnumKeyExW(HKEY hKey,DWORD dwIndex,LPWSTR lpName,LPDWORD lpcchName,LPDWORD lpReserved,LPWSTR lpClass,LPDWORD lpcchClass,PFILETIME lpftLastWriteTime);
  202.   WINADVAPI LONG WINAPI RegEnumValueA(HKEY hKey,DWORD dwIndex,LPSTR lpValueName,LPDWORD lpcchValueName,LPDWORD lpReserved,LPDWORD lpType,LPBYTE lpData,LPDWORD lpcbData);
  203.   WINADVAPI LONG WINAPI RegEnumValueW(HKEY hKey,DWORD dwIndex,LPWSTR lpValueName,LPDWORD lpcchValueName,LPDWORD lpReserved,LPDWORD lpType,LPBYTE lpData,LPDWORD lpcbData);
  204.   WINADVAPI LONG WINAPI RegFlushKey(HKEY hKey);
  205.   WINADVAPI LONG WINAPI RegGetKeySecurity(HKEY hKey,SECURITY_INFORMATION SecurityInformation,PSECURITY_DESCRIPTOR pSecurityDescriptor,LPDWORD lpcbSecurityDescriptor);
  206.   WINADVAPI LONG WINAPI RegLoadKeyA(HKEY hKey,LPCSTR lpSubKey,LPCSTR lpFile);
  207.   WINADVAPI LONG WINAPI RegLoadKeyW(HKEY hKey,LPCWSTR lpSubKey,LPCWSTR lpFile);
  208.   WINADVAPI LONG WINAPI RegNotifyChangeKeyValue(HKEY hKey,WINBOOL bWatchSubtree,DWORD dwNotifyFilter,HANDLE hEvent,WINBOOL fAsynchronous);
  209.   WINADVAPI LONG WINAPI RegOpenKeyA(HKEY hKey,LPCSTR lpSubKey,PHKEY phkResult);
  210.   WINADVAPI LONG WINAPI RegOpenKeyW(HKEY hKey,LPCWSTR lpSubKey,PHKEY phkResult);
  211.   WINADVAPI LONG WINAPI RegOpenKeyExA(HKEY hKey,LPCSTR lpSubKey,DWORD ulOptions,REGSAM samDesired,PHKEY phkResult);
  212.   WINADVAPI LONG WINAPI RegOpenKeyExW(HKEY hKey,LPCWSTR lpSubKey,DWORD ulOptions,REGSAM samDesired,PHKEY phkResult);
  213.   WINADVAPI LONG WINAPI RegQueryInfoKeyA(HKEY hKey,LPSTR lpClass,LPDWORD lpcchClass,LPDWORD lpReserved,LPDWORD lpcSubKeys,LPDWORD lpcbMaxSubKeyLen,LPDWORD lpcbMaxClassLen,LPDWORD lpcValues,LPDWORD lpcbMaxValueNameLen,LPDWORD lpcbMaxValueLen,LPDWORD lpcbSecurityDescriptor,PFILETIME lpftLastWriteTime);
  214.   WINADVAPI LONG WINAPI RegQueryInfoKeyW(HKEY hKey,LPWSTR lpClass,LPDWORD lpcchClass,LPDWORD lpReserved,LPDWORD lpcSubKeys,LPDWORD lpcbMaxSubKeyLen,LPDWORD lpcbMaxClassLen,LPDWORD lpcValues,LPDWORD lpcbMaxValueNameLen,LPDWORD lpcbMaxValueLen,LPDWORD lpcbSecurityDescriptor,PFILETIME lpftLastWriteTime);
  215.   WINADVAPI LONG WINAPI RegQueryValueA(HKEY hKey,LPCSTR lpSubKey,LPSTR lpData,PLONG lpcbData);
  216.   WINADVAPI LONG WINAPI RegQueryValueW(HKEY hKey,LPCWSTR lpSubKey,LPWSTR lpData,PLONG lpcbData);
  217.   WINADVAPI LONG WINAPI RegQueryMultipleValuesA(HKEY hKey,PVALENTA val_list,DWORD num_vals,LPSTR lpValueBuf,LPDWORD ldwTotsize);
  218.   WINADVAPI LONG WINAPI RegQueryMultipleValuesW(HKEY hKey,PVALENTW val_list,DWORD num_vals,LPWSTR lpValueBuf,LPDWORD ldwTotsize);
  219.   WINADVAPI LONG WINAPI RegQueryValueExA(HKEY hKey,LPCSTR lpValueName,LPDWORD lpReserved,LPDWORD lpType,LPBYTE lpData,LPDWORD lpcbData);
  220.   WINADVAPI LONG WINAPI RegQueryValueExW(HKEY hKey,LPCWSTR lpValueName,LPDWORD lpReserved,LPDWORD lpType,LPBYTE lpData,LPDWORD lpcbData);
  221.   WINADVAPI LONG WINAPI RegReplaceKeyA(HKEY hKey,LPCSTR lpSubKey,LPCSTR lpNewFile,LPCSTR lpOldFile);
  222.   WINADVAPI LONG WINAPI RegReplaceKeyW(HKEY hKey,LPCWSTR lpSubKey,LPCWSTR lpNewFile,LPCWSTR lpOldFile);
  223.   WINADVAPI LONG WINAPI RegRestoreKeyA(HKEY hKey,LPCSTR lpFile,DWORD dwFlags);
  224.   WINADVAPI LONG WINAPI RegRestoreKeyW(HKEY hKey,LPCWSTR lpFile,DWORD dwFlags);
  225.   WINADVAPI LONG WINAPI RegSaveKeyA(HKEY hKey,LPCSTR lpFile,LPSECURITY_ATTRIBUTES lpSecurityAttributes);
  226.   WINADVAPI LONG WINAPI RegSaveKeyW(HKEY hKey,LPCWSTR lpFile,LPSECURITY_ATTRIBUTES lpSecurityAttributes);
  227.   WINADVAPI LONG WINAPI RegSetKeySecurity(HKEY hKey,SECURITY_INFORMATION SecurityInformation,PSECURITY_DESCRIPTOR pSecurityDescriptor);
  228.   WINADVAPI LONG WINAPI RegSetValueA(HKEY hKey,LPCSTR lpSubKey,DWORD dwType,LPCSTR lpData,DWORD cbData);
  229.   WINADVAPI LONG WINAPI RegSetValueW(HKEY hKey,LPCWSTR lpSubKey,DWORD dwType,LPCWSTR lpData,DWORD cbData);
  230.   WINADVAPI LONG WINAPI RegSetValueExA(HKEY hKey,LPCSTR lpValueName,DWORD Reserved,DWORD dwType,CONST BYTE *lpData,DWORD cbData);
  231.   WINADVAPI LONG WINAPI RegSetValueExW(HKEY hKey,LPCWSTR lpValueName,DWORD Reserved,DWORD dwType,CONST BYTE *lpData,DWORD cbData);
  232.   WINADVAPI LONG WINAPI RegUnLoadKeyA(HKEY hKey,LPCSTR lpSubKey);
  233.   WINADVAPI LONG WINAPI RegUnLoadKeyW(HKEY hKey,LPCWSTR lpSubKey);
  234.   WINADVAPI LONG WINAPI RegGetValueA(HKEY hkey,LPCSTR lpSubKey,LPCSTR lpValue,DWORD dwFlags,LPDWORD pdwType,PVOID pvData,LPDWORD pcbData);
  235.   WINADVAPI LONG WINAPI RegGetValueW(HKEY hkey,LPCWSTR lpSubKey,LPCWSTR lpValue,DWORD dwFlags,LPDWORD pdwType,PVOID pvData,LPDWORD pcbData);
  236.   WINADVAPI WINBOOL WINAPI InitiateSystemShutdownA(LPSTR lpMachineName,LPSTR lpMessage,DWORD dwTimeout,WINBOOL bForceAppsClosed,WINBOOL bRebootAfterShutdown);
  237.   WINADVAPI WINBOOL WINAPI InitiateSystemShutdownW(LPWSTR lpMachineName,LPWSTR lpMessage,DWORD dwTimeout,WINBOOL bForceAppsClosed,WINBOOL bRebootAfterShutdown);
  238.   WINADVAPI WINBOOL WINAPI AbortSystemShutdownA(LPSTR lpMachineName);
  239.   WINADVAPI WINBOOL WINAPI AbortSystemShutdownW(LPWSTR lpMachineName);
  240.  
  241. #include <reason.h>
  242.  
  243. #define REASON_SWINSTALL SHTDN_REASON_MAJOR_SOFTWARE|SHTDN_REASON_MINOR_INSTALLATION
  244. #define REASON_HWINSTALL SHTDN_REASON_MAJOR_HARDWARE|SHTDN_REASON_MINOR_INSTALLATION
  245. #define REASON_SERVICEHANG SHTDN_REASON_MAJOR_SOFTWARE|SHTDN_REASON_MINOR_HUNG
  246. #define REASON_UNSTABLE SHTDN_REASON_MAJOR_SYSTEM|SHTDN_REASON_MINOR_UNSTABLE
  247. #define REASON_SWHWRECONF SHTDN_REASON_MAJOR_SOFTWARE|SHTDN_REASON_MINOR_RECONFIG
  248. #define REASON_OTHER SHTDN_REASON_MAJOR_OTHER|SHTDN_REASON_MINOR_OTHER
  249. #define REASON_UNKNOWN SHTDN_REASON_UNKNOWN
  250. #define REASON_LEGACY_API SHTDN_REASON_LEGACY_API
  251. #define REASON_PLANNED_FLAG SHTDN_REASON_FLAG_PLANNED
  252.  
  253. #define MAX_SHUTDOWN_TIMEOUT (10*365*24*60*60)
  254.  
  255. #ifdef UNICODE
  256. #define InitiateSystemShutdownEx InitiateSystemShutdownExW
  257. #define RegSaveKeyEx RegSaveKeyExW
  258. #else
  259. #define InitiateSystemShutdownEx InitiateSystemShutdownExA
  260. #define RegSaveKeyEx RegSaveKeyExA
  261. #endif
  262.  
  263.   WINADVAPI WINBOOL WINAPI InitiateSystemShutdownExA(LPSTR lpMachineName,LPSTR lpMessage,DWORD dwTimeout,WINBOOL bForceAppsClosed,WINBOOL bRebootAfterShutdown,DWORD dwReason);
  264.   WINADVAPI WINBOOL WINAPI InitiateSystemShutdownExW(LPWSTR lpMachineName,LPWSTR lpMessage,DWORD dwTimeout,WINBOOL bForceAppsClosed,WINBOOL bRebootAfterShutdown,DWORD dwReason);
  265.   WINADVAPI LONG WINAPI RegSaveKeyExA(HKEY hKey,LPCSTR lpFile,LPSECURITY_ATTRIBUTES lpSecurityAttributes,DWORD Flags);
  266.   WINADVAPI LONG WINAPI RegSaveKeyExW(HKEY hKey,LPCWSTR lpFile,LPSECURITY_ATTRIBUTES lpSecurityAttributes,DWORD Flags);
  267.   WINADVAPI LONG WINAPI Wow64Win32ApiEntry (DWORD dwFuncNumber,DWORD dwFlag,DWORD dwRes);
  268.  
  269. #ifdef __cplusplus
  270. }
  271. #endif
  272. #endif
  273.