winreg.h 14 KB

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