1 /** 2 * Windows API header module 3 * 4 * Translated from MinGW Windows headers 5 * 6 * Authors: Stewart Gordon 7 * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) 8 * Source: $(DRUNTIMESRC core/sys/windows/_winreg.d) 9 */ 10 /// Automatically imported and edited from the druntime module 11 /// core.sys.windows.winreg for the auto-generated win32 package. 12 module win32.winreg; 13 //version (Windows): 14 @system: 15 16 version (ANSI) {} else version = Unicode; 17 version (Win32_UseLib) pragma(lib, "advapi32"); 18 19 import win32.w32api, win32.winbase, win32.windef; 20 21 enum : HKEY { // for some reason, DMD errors if I don't give all the values explicitly 22 HKEY_CLASSES_ROOT = cast(HKEY) 0x80000000, 23 HKEY_CURRENT_USER = cast(HKEY) 0x80000001, 24 HKEY_LOCAL_MACHINE = cast(HKEY) 0x80000002, 25 HKEY_USERS = cast(HKEY) 0x80000003, 26 HKEY_PERFORMANCE_DATA = cast(HKEY) 0x80000004, 27 HKEY_CURRENT_CONFIG = cast(HKEY) 0x80000005, 28 HKEY_DYN_DATA = cast(HKEY) 0x80000006, 29 HKEY_PERFORMANCE_TEXT = cast(HKEY) 0x80000050, 30 HKEY_PERFORMANCE_NLSTEXT = cast(HKEY) 0x80000060, 31 } 32 33 //enum : DWORD { 34 // REG_OPTION_NON_VOLATILE, 35 // REG_OPTION_VOLATILE 36 //} 37 38 enum : DWORD { 39 REG_CREATED_NEW_KEY = 1, 40 REG_OPENED_EXISTING_KEY 41 } 42 43 enum : DWORD { 44 REG_NONE = 0, 45 REG_SZ, 46 REG_EXPAND_SZ, 47 REG_BINARY, 48 REG_DWORD_LITTLE_ENDIAN, 49 REG_DWORD = REG_DWORD_LITTLE_ENDIAN, 50 REG_DWORD_BIG_ENDIAN, 51 REG_LINK, 52 REG_MULTI_SZ, 53 REG_RESOURCE_LIST, 54 REG_FULL_RESOURCE_DESCRIPTOR, 55 REG_RESOURCE_REQUIREMENTS_LIST, 56 REG_QWORD_LITTLE_ENDIAN, 57 REG_QWORD = REG_QWORD_LITTLE_ENDIAN 58 } 59 60 enum DWORD 61 REG_NOTIFY_CHANGE_NAME = 1, 62 REG_NOTIFY_CHANGE_ATTRIBUTES = 2, 63 REG_NOTIFY_CHANGE_LAST_SET = 4, 64 REG_NOTIFY_CHANGE_SECURITY = 8; 65 66 alias ACCESS_MASK REGSAM; 67 68 struct VALENTA { 69 LPSTR ve_valuename; 70 DWORD ve_valuelen; 71 DWORD_PTR ve_valueptr; 72 DWORD ve_type; 73 } 74 alias VALENTA* PVALENTA; 75 76 struct VALENTW { 77 LPWSTR ve_valuename; 78 DWORD ve_valuelen; 79 DWORD_PTR ve_valueptr; 80 DWORD ve_type; 81 } 82 alias VALENTW* PVALENTW; 83 84 // RRF - Registry Routine Flags (for RegGetValue) 85 static if (_WIN32_WINNT >= 0x600) { 86 enum : DWORD { 87 RRF_RT_REG_NONE = 0x00000001, 88 RRF_RT_REG_SZ = 0x00000002, 89 RRF_RT_REG_EXPAND_SZ = 0x00000004, 90 RRF_RT_REG_BINARY = 0x00000008, 91 RRF_RT_REG_DWORD = 0x00000010, 92 RRF_RT_REG_MULTI_SZ = 0x00000020, 93 RRF_RT_REG_QWORD = 0x00000040, 94 RRF_RT_DWORD = RRF_RT_REG_BINARY | RRF_RT_REG_DWORD, 95 RRF_RT_QWORD = RRF_RT_REG_BINARY | RRF_RT_REG_QWORD, 96 RRF_RT_ANY = 0x0000FFFF, 97 RRF_NOEXPAND = 0x10000000, 98 RRF_ZEROONFAILURE = 0x20000000 99 } 100 } 101 102 extern (Windows) nothrow @nogc { 103 LONG RegCloseKey(const scope HKEY); 104 LONG RegConnectRegistryA(LPCSTR, HKEY, PHKEY); 105 LONG RegConnectRegistryW(LPCWSTR, HKEY, PHKEY); 106 LONG RegCreateKeyExA(const scope HKEY, LPCSTR, DWORD, LPSTR, DWORD, REGSAM, 107 LPSECURITY_ATTRIBUTES, PHKEY, PDWORD); 108 LONG RegCreateKeyExW(const scope HKEY, LPCWSTR, DWORD, LPWSTR, DWORD, REGSAM, 109 LPSECURITY_ATTRIBUTES, PHKEY, PDWORD); 110 LONG RegDeleteKeyA(const scope HKEY, LPCSTR); 111 LONG RegDeleteKeyW(const scope HKEY, LPCWSTR); 112 LONG RegDeleteValueA(const scope HKEY, LPCSTR); 113 LONG RegDeleteValueW(const scope HKEY, LPCWSTR); 114 LONG RegEnumKeyExA(const scope HKEY, DWORD, LPSTR, PDWORD, PDWORD, LPSTR, PDWORD, 115 PFILETIME); 116 LONG RegEnumKeyExW(const scope HKEY, DWORD, LPWSTR, PDWORD, PDWORD, LPWSTR, PDWORD, 117 PFILETIME); 118 LONG RegEnumValueA(const scope HKEY, DWORD, LPSTR, PDWORD, PDWORD, PDWORD, LPBYTE, 119 PDWORD); 120 LONG RegEnumValueW(const scope HKEY, DWORD, LPWSTR, PDWORD, PDWORD, PDWORD, LPBYTE, 121 PDWORD); 122 LONG RegFlushKey(const scope HKEY); 123 LONG RegLoadKeyA(const scope HKEY, LPCSTR, LPCSTR); 124 LONG RegLoadKeyW(const scope HKEY, LPCWSTR, LPCWSTR); 125 LONG RegOpenKeyExA(const scope HKEY, LPCSTR, DWORD, REGSAM, PHKEY); 126 LONG RegOpenKeyExW(const scope HKEY, LPCWSTR, DWORD, REGSAM, PHKEY); 127 LONG RegQueryInfoKeyA(const scope HKEY, LPSTR, PDWORD, PDWORD, PDWORD, PDWORD, 128 PDWORD, PDWORD, PDWORD, PDWORD, PDWORD, PFILETIME); 129 LONG RegQueryInfoKeyW(const scope HKEY, LPWSTR, PDWORD, PDWORD, PDWORD, PDWORD, 130 PDWORD, PDWORD, PDWORD, PDWORD, PDWORD, PFILETIME); 131 LONG RegQueryMultipleValuesA(const scope HKEY, PVALENTA, DWORD, LPSTR, LPDWORD); 132 LONG RegQueryMultipleValuesW(const scope HKEY, PVALENTW, DWORD, LPWSTR, LPDWORD); 133 LONG RegQueryValueExA(const scope HKEY, LPCSTR, LPDWORD, LPDWORD, /*LPBYTE*/LPVOID, LPDWORD); 134 LONG RegQueryValueExW(const scope HKEY, LPCWSTR, LPDWORD, LPDWORD, /*LPBYTE*/LPVOID, LPDWORD); 135 LONG RegReplaceKeyA(const scope HKEY, LPCSTR, LPCSTR, LPCSTR); 136 LONG RegReplaceKeyW(const scope HKEY, LPCWSTR, LPCWSTR, LPCWSTR); 137 LONG RegSaveKeyA(const scope HKEY, LPCSTR, LPSECURITY_ATTRIBUTES); 138 LONG RegSaveKeyW(const scope HKEY, LPCWSTR, LPSECURITY_ATTRIBUTES); 139 LONG RegSetKeySecurity(const scope HKEY, SECURITY_INFORMATION, PSECURITY_DESCRIPTOR); 140 LONG RegSetValueExA(const scope HKEY, LPCSTR, DWORD, DWORD, const(BYTE)*, DWORD); 141 LONG RegSetValueExW(const scope HKEY, LPCWSTR, DWORD, DWORD, const(BYTE)*, DWORD); 142 LONG RegUnLoadKeyA(const scope HKEY, LPCSTR); 143 LONG RegUnLoadKeyW(const scope HKEY, LPCWSTR); 144 LONG RegNotifyChangeKeyValue(const scope HKEY, BOOL, DWORD, HANDLE, BOOL); 145 146 BOOL AbortSystemShutdownA(LPCSTR); 147 BOOL AbortSystemShutdownW(LPCWSTR); 148 BOOL InitiateSystemShutdownA(LPSTR, LPSTR, DWORD, BOOL, BOOL); 149 BOOL InitiateSystemShutdownW(LPWSTR, LPWSTR, DWORD, BOOL, BOOL); 150 LONG RegGetKeySecurity(const scope HKEY, SECURITY_INFORMATION, 151 PSECURITY_DESCRIPTOR, PDWORD); 152 LONG RegRestoreKeyA(const scope HKEY, LPCSTR, DWORD); 153 LONG RegRestoreKeyW(const scope HKEY, LPCWSTR, DWORD); 154 LONG RegSetKeySecurity(const scope HKEY, SECURITY_INFORMATION, 155 PSECURITY_DESCRIPTOR); 156 157 static if (_WIN32_WINNT >= 0x500) { 158 LONG RegDisablePredefinedCache(); 159 LONG RegOpenCurrentUser(REGSAM, PHKEY); 160 LONG RegOpenUserClassesRoot(HANDLE, DWORD, REGSAM, PHKEY); 161 } 162 163 static if (_WIN32_WINNT >= 0x501) { 164 LONG RegSaveKeyExA(const scope HKEY, LPCSTR, LPSECURITY_ATTRIBUTES, DWORD); 165 LONG RegSaveKeyExW(const scope HKEY, LPCWSTR, LPSECURITY_ATTRIBUTES, DWORD); 166 } 167 168 static if (_WIN32_WINNT >= 0x600) { 169 LONG RegGetValueA(const scope HKEY hkey, LPCSTR lpSubKey, LPCSTR lpValue, 170 DWORD dwFlags, LPDWORD pdwType, PVOID pvData, LPDWORD pcbData); 171 LONG RegGetValueW(const scope HKEY hkey, LPCWSTR lpSubKey, LPCWSTR lpValue, 172 DWORD dwFlags, LPDWORD pdwType, PVOID pvData, LPDWORD pcbData); 173 } 174 175 //deprecated { 176 LONG RegCreateKeyA(const scope HKEY, LPCSTR, PHKEY); 177 LONG RegCreateKeyW(const scope HKEY, LPCWSTR, PHKEY); 178 LONG RegEnumKeyA(const scope HKEY, DWORD, LPSTR, DWORD); 179 LONG RegEnumKeyW(const scope HKEY, DWORD, LPWSTR, DWORD); 180 LONG RegOpenKeyA(const scope HKEY, LPCSTR, PHKEY); 181 LONG RegOpenKeyW(const scope HKEY, LPCWSTR, PHKEY); 182 LONG RegQueryValueA(const scope HKEY, LPCSTR, LPSTR, PLONG); 183 LONG RegQueryValueW(const scope HKEY, LPCWSTR, LPWSTR, PLONG); 184 LONG RegSetValueA(const scope HKEY, LPCSTR, DWORD, LPCSTR, DWORD); 185 LONG RegSetValueW(const scope HKEY, LPCWSTR, DWORD, LPCWSTR, DWORD); 186 //} 187 } 188 189 version (Unicode) { 190 alias VALENTW VALENT; 191 alias RegConnectRegistryW RegConnectRegistry; 192 alias RegCreateKeyExW RegCreateKeyEx; 193 alias RegDeleteKeyW RegDeleteKey; 194 alias RegDeleteValueW RegDeleteValue; 195 alias RegEnumKeyExW RegEnumKeyEx; 196 alias RegEnumValueW RegEnumValue; 197 alias RegLoadKeyW RegLoadKey; 198 alias RegOpenKeyExW RegOpenKeyEx; 199 alias RegQueryInfoKeyW RegQueryInfoKey; 200 alias RegQueryMultipleValuesW RegQueryMultipleValues; 201 alias RegQueryValueExW RegQueryValueEx; 202 alias RegReplaceKeyW RegReplaceKey; 203 alias RegSaveKeyW RegSaveKey; 204 alias RegSetValueExW RegSetValueEx; 205 alias RegUnLoadKeyW RegUnLoadKey; 206 207 alias AbortSystemShutdownW AbortSystemShutdown; 208 alias InitiateSystemShutdownW InitiateSystemShutdown; 209 alias RegRestoreKeyW RegRestoreKey; 210 static if (_WIN32_WINNT >= 0x501) { 211 alias RegSaveKeyExA RegSaveKeyEx; 212 } 213 static if (_WIN32_WINNT >= 0x600) { 214 alias RegGetValueW RegGetValue; 215 } 216 //deprecated { 217 alias RegCreateKeyW RegCreateKey; 218 alias RegEnumKeyW RegEnumKey; 219 alias RegOpenKeyW RegOpenKey; 220 alias RegQueryValueW RegQueryValue; 221 alias RegSetValueW RegSetValue; 222 //} 223 } else { 224 alias VALENTA VALENT; 225 alias RegConnectRegistryA RegConnectRegistry; 226 alias RegCreateKeyExA RegCreateKeyEx; 227 alias RegDeleteKeyA RegDeleteKey; 228 alias RegDeleteValueA RegDeleteValue; 229 alias RegEnumKeyExA RegEnumKeyEx; 230 alias RegEnumValueA RegEnumValue; 231 alias RegLoadKeyA RegLoadKey; 232 alias RegOpenKeyExA RegOpenKeyEx; 233 alias RegQueryInfoKeyA RegQueryInfoKey; 234 alias RegQueryMultipleValuesA RegQueryMultipleValues; 235 alias RegQueryValueExA RegQueryValueEx; 236 alias RegReplaceKeyA RegReplaceKey; 237 alias RegSaveKeyA RegSaveKey; 238 alias RegSetValueExA RegSetValueEx; 239 alias RegUnLoadKeyA RegUnLoadKey; 240 alias AbortSystemShutdownA AbortSystemShutdown; 241 alias InitiateSystemShutdownA InitiateSystemShutdown; 242 alias RegRestoreKeyW RegRestoreKey; 243 static if (_WIN32_WINNT >= 0x501) { 244 alias RegSaveKeyExA RegSaveKeyEx; 245 } 246 static if (_WIN32_WINNT >= 0x600) { 247 alias RegGetValueA RegGetValue; 248 } 249 //deprecated { 250 alias RegCreateKeyA RegCreateKey; 251 alias RegEnumKeyA RegEnumKey; 252 alias RegOpenKeyA RegOpenKey; 253 alias RegQueryValueA RegQueryValue; 254 alias RegSetValueA RegSetValue; 255 //} 256 } 257 258 alias VALENT* PVALENT;