| 1 | /*
|
|---|
| 2 | * Shell Library definitions
|
|---|
| 3 | */
|
|---|
| 4 | #ifndef __WINE_WINREG_H
|
|---|
| 5 | #define __WINE_WINREG_H
|
|---|
| 6 |
|
|---|
| 7 | #include "winbase.h"
|
|---|
| 8 | #include "winnt.h"
|
|---|
| 9 |
|
|---|
| 10 | typedef LONG LSTATUS;
|
|---|
| 11 |
|
|---|
| 12 | /*
|
|---|
| 13 | #define SHELL_ERROR_SUCCESS 0L
|
|---|
| 14 | #define SHELL_ERROR_BADDB 1L
|
|---|
| 15 | #define SHELL_ERROR_BADKEY 2L
|
|---|
| 16 | #define SHELL_ERROR_CANTOPEN 3L
|
|---|
| 17 | #define SHELL_ERROR_CANTREAD 4L
|
|---|
| 18 | #define SHELL_ERROR_CANTWRITE 5L
|
|---|
| 19 | #define SHELL_ERROR_OUTOFMEMORY 6L
|
|---|
| 20 | #define SHELL_ERROR_INVALID_PARAMETER 7L
|
|---|
| 21 | #define SHELL_ERROR_ACCESS_DENIED 8L
|
|---|
| 22 | */
|
|---|
| 23 |
|
|---|
| 24 | #define REG_NONE 0 /* no type */
|
|---|
| 25 | #define REG_SZ 1 /* string type (ASCII) */
|
|---|
| 26 | #define REG_EXPAND_SZ 2 /* string, includes %ENVVAR% (expanded by caller) (ASCII) */
|
|---|
| 27 | #define REG_BINARY 3 /* binary format, callerspecific */
|
|---|
| 28 | /* YES, REG_DWORD == REG_DWORD_LITTLE_ENDIAN */
|
|---|
| 29 | #define REG_DWORD 4 /* DWORD in little endian format */
|
|---|
| 30 | #define REG_DWORD_LITTLE_ENDIAN 4 /* DWORD in little endian format */
|
|---|
| 31 | #define REG_DWORD_BIG_ENDIAN 5 /* DWORD in big endian format */
|
|---|
| 32 | #define REG_LINK 6 /* symbolic link (UNICODE) */
|
|---|
| 33 | #define REG_MULTI_SZ 7 /* multiple strings, delimited by \0, terminated by \0\0 (ASCII) */
|
|---|
| 34 | #define REG_RESOURCE_LIST 8 /* resource list? huh? */
|
|---|
| 35 | #define REG_FULL_RESOURCE_DESCRIPTOR 9 /* full resource descriptor? huh? */
|
|---|
| 36 | #define REG_RESOURCE_REQUIREMENTS_LIST 10
|
|---|
| 37 |
|
|---|
| 38 | #define HEX_REG_NONE 0x80000000
|
|---|
| 39 | #define HEX_REG_SZ 0x80000001
|
|---|
| 40 | #define HEX_REG_EXPAND_SZ 0x80000002
|
|---|
| 41 | #define HEX_REG_BINARY 0x80000003
|
|---|
| 42 | #define HEX_REG_DWORD 0x80000004
|
|---|
| 43 | #define HEX_REG_DWORD_LITTLE_ENDIAN 0x80000004
|
|---|
| 44 | #define HEX_REG_DWORD_BIG_ENDIAN 0x80000005
|
|---|
| 45 | #define HEX_REG_LINK 0x80000006
|
|---|
| 46 | #define HEX_REG_MULTI_SZ 0x80000007
|
|---|
| 47 | #define HEX_REG_RESOURCE_LIST 0x80000008
|
|---|
| 48 | #define HEX_REG_FULL_RESOURCE_DESCRIPTOR 0x80000009
|
|---|
| 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 | #define HKEY_CURRENT_CONFIG ((HKEY) 0x80000005)
|
|---|
| 56 | #define HKEY_DYN_DATA ((HKEY) 0x80000006)
|
|---|
| 57 |
|
|---|
| 58 | #define REG_OPTION_RESERVED 0x00000000
|
|---|
| 59 | #define REG_OPTION_NON_VOLATILE 0x00000000
|
|---|
| 60 | #define REG_OPTION_VOLATILE 0x00000001
|
|---|
| 61 | #define REG_OPTION_CREATE_LINK 0x00000002
|
|---|
| 62 | #define REG_OPTION_BACKUP_RESTORE 0x00000004 /* FIXME */
|
|---|
| 63 | #define REG_OPTION_TAINTED 0x80000000 /* Internal? */
|
|---|
| 64 |
|
|---|
| 65 | #define REG_CREATED_NEW_KEY 0x00000001
|
|---|
| 66 | #define REG_OPENED_EXISTING_KEY 0x00000002
|
|---|
| 67 |
|
|---|
| 68 | /* For RegNotifyChangeKeyValue */
|
|---|
| 69 | #define REG_NOTIFY_CHANGE_NAME 0x1
|
|---|
| 70 |
|
|---|
| 71 | #define KEY_QUERY_VALUE 0x00000001
|
|---|
| 72 | #define KEY_SET_VALUE 0x00000002
|
|---|
| 73 | #define KEY_CREATE_SUB_KEY 0x00000004
|
|---|
| 74 | #define KEY_ENUMERATE_SUB_KEYS 0x00000008
|
|---|
| 75 | #define KEY_NOTIFY 0x00000010
|
|---|
| 76 | #define KEY_CREATE_LINK 0x00000020
|
|---|
| 77 |
|
|---|
| 78 | /*
|
|---|
| 79 | * RegGetValue() restrictions
|
|---|
| 80 | */
|
|---|
| 81 |
|
|---|
| 82 | #define RRF_RT_REG_NONE (1 << 0)
|
|---|
| 83 | #define RRF_RT_REG_SZ (1 << 1)
|
|---|
| 84 | #define RRF_RT_REG_EXPAND_SZ (1 << 2)
|
|---|
| 85 | #define RRF_RT_REG_BINARY (1 << 3)
|
|---|
| 86 | #define RRF_RT_REG_DWORD (1 << 4)
|
|---|
| 87 | #define RRF_RT_REG_MULTI_SZ (1 << 5)
|
|---|
| 88 | #define RRF_RT_REG_QWORD (1 << 6)
|
|---|
| 89 | #define RRF_RT_DWORD (RRF_RT_REG_BINARY | RRF_RT_REG_DWORD)
|
|---|
| 90 | #define RRF_RT_QWORD (RRF_RT_REG_BINARY | RRF_RT_REG_QWORD)
|
|---|
| 91 | #define RRF_RT_ANY 0xffff
|
|---|
| 92 | #define RRF_NOEXPAND (1 << 28)
|
|---|
| 93 | #define RRF_ZEROONFAILURE (1 << 29)
|
|---|
| 94 |
|
|---|
| 95 | #define KEY_READ (STANDARD_RIGHTS_READ| \
|
|---|
| 96 | KEY_QUERY_VALUE| \
|
|---|
| 97 | KEY_ENUMERATE_SUB_KEYS|\
|
|---|
| 98 | KEY_NOTIFY \
|
|---|
| 99 | )
|
|---|
| 100 | #define KEY_WRITE (STANDARD_RIGHTS_WRITE| \
|
|---|
| 101 | KEY_SET_VALUE| \
|
|---|
| 102 | KEY_CREATE_SUB_KEY \
|
|---|
| 103 | )
|
|---|
| 104 | #define KEY_EXECUTE KEY_READ
|
|---|
| 105 | #define KEY_ALL_ACCESS (STANDARD_RIGHTS_ALL| \
|
|---|
| 106 | KEY_READ|KEY_WRITE| \
|
|---|
| 107 | KEY_CREATE_LINK \
|
|---|
| 108 | )
|
|---|
| 109 |
|
|---|
| 110 | /*
|
|---|
| 111 | * registry provider structs
|
|---|
| 112 | */
|
|---|
| 113 | typedef struct value_entA
|
|---|
| 114 | { LPSTR ve_valuename;
|
|---|
| 115 | DWORD ve_valuelen;
|
|---|
| 116 | DWORD_PTR ve_valueptr;
|
|---|
| 117 | DWORD ve_type;
|
|---|
| 118 | } VALENTA, *PVALENTA;
|
|---|
| 119 |
|
|---|
| 120 | typedef struct value_entW {
|
|---|
| 121 | LPWSTR ve_valuename;
|
|---|
| 122 | DWORD ve_valuelen;
|
|---|
| 123 | DWORD_PTR ve_valueptr;
|
|---|
| 124 | DWORD ve_type;
|
|---|
| 125 | } VALENTW, *PVALENTW;
|
|---|
| 126 |
|
|---|
| 127 | #ifdef __cplusplus
|
|---|
| 128 | extern "C" {
|
|---|
| 129 | #endif
|
|---|
| 130 |
|
|---|
| 131 | BOOL WINAPI LookupPrivilegeValueA(LPCSTR,LPCSTR,LPVOID);
|
|---|
| 132 | BOOL WINAPI LookupPrivilegeValueW(LPCWSTR,LPCWSTR,LPVOID);
|
|---|
| 133 | #define LookupPrivilegeValue WINELIB_NAME_AW(LookupPrivilegeValue)
|
|---|
| 134 | HANDLE WINAPI RegisterEventSourceA(LPCSTR,LPCSTR);
|
|---|
| 135 | HANDLE WINAPI RegisterEventSourceW(LPCWSTR,LPCWSTR);
|
|---|
| 136 | #define RegisterEventSource WINELIB_NAME_AW(RegisterEventSource)
|
|---|
| 137 | LONG WINAPI RegCreateKeyExA(HKEY,LPCSTR,DWORD,LPSTR,DWORD,REGSAM,
|
|---|
| 138 | LPSECURITY_ATTRIBUTES,LPHKEY,LPDWORD);
|
|---|
| 139 | LONG WINAPI RegCreateKeyExW(HKEY,LPCWSTR,DWORD,LPWSTR,DWORD,REGSAM,
|
|---|
| 140 | LPSECURITY_ATTRIBUTES,LPHKEY,LPDWORD);
|
|---|
| 141 | #define RegCreateKeyEx WINELIB_NAME_AW(RegCreateKeyEx)
|
|---|
| 142 | LONG WINAPI RegSaveKeyA(HKEY,LPCSTR,LPSECURITY_ATTRIBUTES);
|
|---|
| 143 | LONG WINAPI RegSaveKeyW(HKEY,LPCWSTR,LPSECURITY_ATTRIBUTES);
|
|---|
| 144 | #define RegSaveKey WINELIB_NAME_AW(RegSaveKey)
|
|---|
| 145 | LONG WINAPI RegSetKeySecurity(HKEY,SECURITY_INFORMATION,PSECURITY_DESCRIPTOR);
|
|---|
| 146 | BOOL WINAPI DeregisterEventSource(HANDLE);
|
|---|
| 147 | BOOL WINAPI GetFileSecurityA(LPCSTR,SECURITY_INFORMATION,PSECURITY_DESCRIPTOR,DWORD,LPDWORD);
|
|---|
| 148 | BOOL WINAPI GetFileSecurityW(LPCWSTR,SECURITY_INFORMATION,PSECURITY_DESCRIPTOR,DWORD,LPDWORD);
|
|---|
| 149 | #define GetFileSecurity WINELIB_NAME_AW(GetFileSecurity)
|
|---|
| 150 | BOOL WINAPI GetUserNameA(LPSTR,LPDWORD);
|
|---|
| 151 | BOOL WINAPI GetUserNameW(LPWSTR,LPDWORD);
|
|---|
| 152 | #define GetUserName WINELIB_NAME_AW(GetUserName)
|
|---|
| 153 | BOOL WINAPI OpenProcessToken(HANDLE,DWORD,HANDLE*);
|
|---|
| 154 | LONG WINAPI RegConnectRegistryA(LPCSTR,HKEY,LPHKEY);
|
|---|
| 155 | LONG WINAPI RegConnectRegistryW(LPCWSTR,HKEY,LPHKEY);
|
|---|
| 156 | #define RegConnectRegistry WINELIB_NAME_AW(RegConnectRegistry)
|
|---|
| 157 | LONG WINAPI RegEnumKeyExA(HKEY,DWORD,LPSTR,LPDWORD,LPDWORD,LPSTR,
|
|---|
| 158 | LPDWORD,LPFILETIME);
|
|---|
| 159 | LONG WINAPI RegEnumKeyExW(HKEY,DWORD,LPWSTR,LPDWORD,LPDWORD,LPWSTR,
|
|---|
| 160 | LPDWORD,LPFILETIME);
|
|---|
| 161 | #define RegEnumKeyEx WINELIB_NAME_AW(RegEnumKeyEx)
|
|---|
| 162 | LONG WINAPI RegGetKeySecurity(HKEY,SECURITY_INFORMATION,PSECURITY_DESCRIPTOR,LPDWORD);
|
|---|
| 163 | LONG WINAPI RegLoadKeyA(HKEY,LPCSTR,LPCSTR);
|
|---|
| 164 | LONG WINAPI RegLoadKeyW(HKEY,LPCWSTR,LPCWSTR);
|
|---|
| 165 | #define RegLoadKey WINELIB_NAME_AW(RegLoadKey)
|
|---|
| 166 | LONG WINAPI RegNotifyChangeKeyValue(HKEY,BOOL,DWORD,HANDLE,BOOL);
|
|---|
| 167 | LONG WINAPI RegOpenKeyExW(HKEY,LPCWSTR,DWORD,REGSAM,LPHKEY);
|
|---|
| 168 | LONG WINAPI RegOpenKeyExA(HKEY,LPCSTR,DWORD,REGSAM,LPHKEY);
|
|---|
| 169 | #define RegOpenKeyEx WINELIB_NAME_AW(RegOpenKeyEx)
|
|---|
| 170 | LONG WINAPI RegQueryInfoKeyW(HKEY,LPWSTR,LPDWORD,LPDWORD,LPDWORD,
|
|---|
| 171 | LPDWORD,LPDWORD,LPDWORD,LPDWORD,LPDWORD,
|
|---|
| 172 | LPDWORD,LPFILETIME);
|
|---|
| 173 | LONG WINAPI RegQueryInfoKeyA(HKEY,LPSTR,LPDWORD,LPDWORD,LPDWORD,
|
|---|
| 174 | LPDWORD,LPDWORD,LPDWORD,LPDWORD,LPDWORD,
|
|---|
| 175 | LPDWORD,LPFILETIME);
|
|---|
| 176 | #define RegQueryInfoKey WINELIB_NAME_AW(RegQueryInfoKey)
|
|---|
| 177 | LONG WINAPI RegReplaceKeyA(HKEY,LPCSTR,LPCSTR,LPCSTR);
|
|---|
| 178 | LONG WINAPI RegReplaceKeyW(HKEY,LPCWSTR,LPCWSTR,LPCWSTR);
|
|---|
| 179 | #define RegReplaceKey WINELIB_NAME_AW(RegReplaceKey)
|
|---|
| 180 | LONG WINAPI RegRestoreKeyA(HKEY,LPCSTR,DWORD);
|
|---|
| 181 | LONG WINAPI RegRestoreKeyW(HKEY,LPCWSTR,DWORD);
|
|---|
| 182 | #define RegRestoreKey WINELIB_NAME_AW(RegRestoreKey)
|
|---|
| 183 | LONG WINAPI RegUnLoadKeyA(HKEY,LPCSTR);
|
|---|
| 184 | LONG WINAPI RegUnLoadKeyW(HKEY,LPCWSTR);
|
|---|
| 185 | #define RegUnLoadKey WINELIB_NAME_AW(RegUnLoadKey)
|
|---|
| 186 | BOOL WINAPI SetFileSecurityA(LPCSTR,SECURITY_INFORMATION,PSECURITY_DESCRIPTOR);
|
|---|
| 187 | BOOL WINAPI SetFileSecurityW(LPCWSTR,SECURITY_INFORMATION,PSECURITY_DESCRIPTOR);
|
|---|
| 188 | #define SetFileSecurity WINELIB_NAME_AW(SetFileSecurity)
|
|---|
| 189 |
|
|---|
| 190 | /* Declarations for functions that are the same in Win16 and Win32 */
|
|---|
| 191 |
|
|---|
| 192 | LONG WINAPI RegCloseKey(HKEY);
|
|---|
| 193 | LONG WINAPI RegFlushKey(HKEY);
|
|---|
| 194 |
|
|---|
| 195 | LONG WINAPI RegCreateKeyA(HKEY,LPCSTR,LPHKEY);
|
|---|
| 196 | LONG WINAPI RegCreateKeyW(HKEY,LPCWSTR,LPHKEY);
|
|---|
| 197 | #define RegCreateKey WINELIB_NAME_AW(RegCreateKey)
|
|---|
| 198 | LONG WINAPI RegDeleteKeyA(HKEY,LPCSTR);
|
|---|
| 199 | LONG WINAPI RegDeleteKeyW(HKEY,LPCWSTR);
|
|---|
| 200 | #define RegDeleteKey WINELIB_NAME_AW(RegDeleteKey)
|
|---|
| 201 | LONG WINAPI RegDeleteValueA(HKEY,LPCSTR);
|
|---|
| 202 | LONG WINAPI RegDeleteValueW(HKEY,LPCWSTR);
|
|---|
| 203 | #define RegDeleteValue WINELIB_NAME_AW(RegDeleteValue)
|
|---|
| 204 | LSTATUS WINAPI RegDeleteTreeA(HKEY,LPCSTR);
|
|---|
| 205 | LSTATUS WINAPI RegDeleteTreeW(HKEY,LPCWSTR);
|
|---|
| 206 | #define RegDeleteTree WINELIB_NAME_AW(RegDeleteTree)
|
|---|
| 207 | LONG WINAPI RegEnumKeyA(HKEY,DWORD,LPSTR,DWORD);
|
|---|
| 208 | LONG WINAPI RegEnumKeyW(HKEY,DWORD,LPWSTR,DWORD);
|
|---|
| 209 | #define RegEnumKey WINELIB_NAME_AW(RegEnumKey)
|
|---|
| 210 | LONG WINAPI RegEnumValueA(HKEY,DWORD,LPSTR,LPDWORD,LPDWORD,LPDWORD,LPBYTE,LPDWORD);
|
|---|
| 211 | LONG WINAPI RegEnumValueW(HKEY,DWORD,LPWSTR,LPDWORD,LPDWORD,LPDWORD,LPBYTE,LPDWORD);
|
|---|
| 212 | #define RegEnumValue WINELIB_NAME_AW(RegEnumValue)
|
|---|
| 213 | LONG WINAPI RegOpenKeyA(HKEY,LPCSTR,LPHKEY);
|
|---|
| 214 | LONG WINAPI RegOpenKeyW(HKEY,LPCWSTR,LPHKEY);
|
|---|
| 215 | #define RegOpenKey WINELIB_NAME_AW(RegOpenKey)
|
|---|
| 216 | LONG WINAPI RegQueryValueA(HKEY,LPCSTR,LPSTR,LPLONG);
|
|---|
| 217 | LONG WINAPI RegQueryValueW(HKEY,LPCWSTR,LPWSTR,LPLONG);
|
|---|
| 218 | #define RegQueryValue WINELIB_NAME_AW(RegQueryValue)
|
|---|
| 219 | LONG WINAPI RegQueryValueExA(HKEY,LPCSTR,LPDWORD,LPDWORD,LPBYTE,LPDWORD);
|
|---|
| 220 | LONG WINAPI RegQueryValueExW(HKEY,LPCWSTR,LPDWORD,LPDWORD,LPBYTE,LPDWORD);
|
|---|
| 221 | #define RegQueryValueEx WINELIB_NAME_AW(RegQueryValueEx)
|
|---|
| 222 | LONG WINAPI RegSetValueA(HKEY,LPCSTR,DWORD,LPCSTR,DWORD);
|
|---|
| 223 | LONG WINAPI RegSetValueW(HKEY,LPCWSTR,DWORD,LPCWSTR,DWORD);
|
|---|
| 224 | #define RegSetValue WINELIB_NAME_AW(RegSetValue)
|
|---|
| 225 | LONG WINAPI RegSetValueExA(HKEY,LPCSTR,DWORD,DWORD,const BYTE *,DWORD);
|
|---|
| 226 | LONG WINAPI RegSetValueExW(HKEY,LPCWSTR,DWORD,DWORD,const BYTE *,DWORD);
|
|---|
| 227 | #define RegSetValueEx WINELIB_NAME_AW(RegSetValueEx)
|
|---|
| 228 |
|
|---|
| 229 | LONG WINAPI RegQueryMultipleValuesA(HKEY hKey, PVALENTA val_list, DWORD num_vals, LPTSTR lpValueBuf, LPDWORD ldwTotsize);
|
|---|
| 230 | LONG WINAPI RegQueryMultipleValuesW(HKEY hKey, PVALENTW val_list, DWORD num_vals, LPWSTR lpValueBuf, LPDWORD ldwTotsize);
|
|---|
| 231 | #define RegQueryMultipleValues WINELIB_NAME_AW(RegQueryMultipleValues)
|
|---|
| 232 |
|
|---|
| 233 | #ifdef __cplusplus
|
|---|
| 234 | } // extern "C"
|
|---|
| 235 | #endif
|
|---|
| 236 |
|
|---|
| 237 | #endif /* __WINE_WINREG_H */
|
|---|