| 1 | /* $Id: winreg.h,v 1.2 1999-09-02 17:39:37 phaller Exp $ */ | 
|---|
| 2 |  | 
|---|
| 3 | /* | 
|---|
| 4 | *                              Shell Library definitions | 
|---|
| 5 | */ | 
|---|
| 6 | #ifndef __WINE_WINREG_H | 
|---|
| 7 | #define __WINE_WINREG_H | 
|---|
| 8 |  | 
|---|
| 9 | #include "winbase.h" | 
|---|
| 10 | #include "winnt.h" | 
|---|
| 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 |  | 
|---|
| 37 | #define HEX_REG_NONE                     0x80000000 | 
|---|
| 38 | #define HEX_REG_SZ                       0x80000001 | 
|---|
| 39 | #define HEX_REG_EXPAND_SZ                0x80000002 | 
|---|
| 40 | #define HEX_REG_BINARY                   0x80000003 | 
|---|
| 41 | #define HEX_REG_DWORD                    0x80000004 | 
|---|
| 42 | #define HEX_REG_DWORD_LITTLE_ENDIAN      0x80000004 | 
|---|
| 43 | #define HEX_REG_DWORD_BIG_ENDIAN         0x80000005 | 
|---|
| 44 | #define HEX_REG_LINK                     0x80000006 | 
|---|
| 45 | #define HEX_REG_MULTI_SZ                 0x80000007 | 
|---|
| 46 | #define HEX_REG_RESOURCE_LIST            0x80000008 | 
|---|
| 47 | #define HEX_REG_FULL_RESOURCE_DESCRIPTOR 0x80000009 | 
|---|
| 48 |  | 
|---|
| 49 | #define HKEY_CLASSES_ROOT       ((HKEY) 0x80000000) | 
|---|
| 50 | #define HKEY_CURRENT_USER       ((HKEY) 0x80000001) | 
|---|
| 51 | #define HKEY_LOCAL_MACHINE      ((HKEY) 0x80000002) | 
|---|
| 52 | #define HKEY_USERS              ((HKEY) 0x80000003) | 
|---|
| 53 | #define HKEY_PERFORMANCE_DATA   ((HKEY) 0x80000004) | 
|---|
| 54 | #define HKEY_CURRENT_CONFIG     ((HKEY) 0x80000005) | 
|---|
| 55 | #define HKEY_DYN_DATA           ((HKEY) 0x80000006) | 
|---|
| 56 |  | 
|---|
| 57 | #define REG_OPTION_RESERVED             0x00000000 | 
|---|
| 58 | #define REG_OPTION_NON_VOLATILE         0x00000000 | 
|---|
| 59 | #define REG_OPTION_VOLATILE             0x00000001 | 
|---|
| 60 | #define REG_OPTION_CREATE_LINK          0x00000002 | 
|---|
| 61 | #define REG_OPTION_BACKUP_RESTORE       0x00000004 /* FIXME */ | 
|---|
| 62 | #define REG_OPTION_TAINTED              0x80000000 /* Internal? */ | 
|---|
| 63 |  | 
|---|
| 64 | #define REG_CREATED_NEW_KEY     0x00000001 | 
|---|
| 65 | #define REG_OPENED_EXISTING_KEY 0x00000002 | 
|---|
| 66 |  | 
|---|
| 67 | /* For RegNotifyChangeKeyValue */ | 
|---|
| 68 | #define REG_NOTIFY_CHANGE_NAME  0x1 | 
|---|
| 69 |  | 
|---|
| 70 | #define KEY_QUERY_VALUE         0x00000001 | 
|---|
| 71 | #define KEY_SET_VALUE           0x00000002 | 
|---|
| 72 | #define KEY_CREATE_SUB_KEY      0x00000004 | 
|---|
| 73 | #define KEY_ENUMERATE_SUB_KEYS  0x00000008 | 
|---|
| 74 | #define KEY_NOTIFY              0x00000010 | 
|---|
| 75 | #define KEY_CREATE_LINK         0x00000020 | 
|---|
| 76 |  | 
|---|
| 77 | #define KEY_READ                (STANDARD_RIGHTS_READ|  \ | 
|---|
| 78 | KEY_QUERY_VALUE|       \ | 
|---|
| 79 | KEY_ENUMERATE_SUB_KEYS|\ | 
|---|
| 80 | KEY_NOTIFY             \ | 
|---|
| 81 | ) | 
|---|
| 82 | #define KEY_WRITE               (STANDARD_RIGHTS_WRITE| \ | 
|---|
| 83 | KEY_SET_VALUE|         \ | 
|---|
| 84 | KEY_CREATE_SUB_KEY     \ | 
|---|
| 85 | ) | 
|---|
| 86 | #define KEY_EXECUTE             KEY_READ | 
|---|
| 87 | #define KEY_ALL_ACCESS          (STANDARD_RIGHTS_ALL|   \ | 
|---|
| 88 | KEY_READ|KEY_WRITE|    \ | 
|---|
| 89 | KEY_CREATE_LINK        \ | 
|---|
| 90 | ) | 
|---|
| 91 |  | 
|---|
| 92 | /* fixme: move it to basetsd.h */ | 
|---|
| 93 | typedef ULONG_PTR DWORD_PTR, *PDWORD_PTR; | 
|---|
| 94 | /* end fixme */ | 
|---|
| 95 |  | 
|---|
| 96 | /* | 
|---|
| 97 | *      registry provider structs | 
|---|
| 98 | */ | 
|---|
| 99 | typedef struct value_entA | 
|---|
| 100 | {   LPSTR       ve_valuename; | 
|---|
| 101 | DWORD       ve_valuelen; | 
|---|
| 102 | DWORD_PTR   ve_valueptr; | 
|---|
| 103 | DWORD       ve_type; | 
|---|
| 104 | } VALENTA, *PVALENTA; | 
|---|
| 105 |  | 
|---|
| 106 | typedef struct value_entW { | 
|---|
| 107 | LPWSTR      ve_valuename; | 
|---|
| 108 | DWORD       ve_valuelen; | 
|---|
| 109 | DWORD_PTR   ve_valueptr; | 
|---|
| 110 | DWORD       ve_type; | 
|---|
| 111 | } VALENTW, *PVALENTW; | 
|---|
| 112 |  | 
|---|
| 113 |  | 
|---|
| 114 | /* Used by: ControlService */ | 
|---|
| 115 | typedef struct _SERVICE_STATUS { | 
|---|
| 116 | DWORD dwServiceType; | 
|---|
| 117 | DWORD dwCurrentState; | 
|---|
| 118 | DWORD dwControlsAccepted; | 
|---|
| 119 | DWORD dwWin32ExitCode; | 
|---|
| 120 | DWORD dwServiceSpecificExitCode; | 
|---|
| 121 | DWORD dwCheckPoint; | 
|---|
| 122 | DWORD dwWaitHint; | 
|---|
| 123 | } SERVICE_STATUS, *LPSERVICE_STATUS; | 
|---|
| 124 |  | 
|---|
| 125 | HANDLE    WINAPI OpenSCManagerA(LPCSTR,LPCSTR,DWORD); | 
|---|
| 126 | HANDLE    WINAPI OpenSCManagerW(LPCWSTR,LPCWSTR,DWORD); | 
|---|
| 127 | #define     OpenSCManager WINELIB_NAME_AW(OpenSCManager) | 
|---|
| 128 | HANDLE    WINAPI OpenServiceA(HANDLE,LPCSTR,DWORD); | 
|---|
| 129 | HANDLE    WINAPI OpenServiceW(HANDLE,LPCWSTR,DWORD); | 
|---|
| 130 | #define     OpenService WINELIB_NAME_AW(OpenService) | 
|---|
| 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 | DWORD       WINAPI RegCreateKeyExA(HKEY,LPCSTR,DWORD,LPSTR,DWORD,REGSAM, | 
|---|
| 138 | LPSECURITY_ATTRIBUTES,LPHKEY,LPDWORD); | 
|---|
| 139 | DWORD       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 CloseServiceHandle(HANDLE); | 
|---|
| 147 | BOOL      WINAPI ControlService(HANDLE,DWORD,LPSERVICE_STATUS); | 
|---|
| 148 | BOOL      WINAPI DeleteService(HANDLE); | 
|---|
| 149 | BOOL      WINAPI DeregisterEventSource(HANDLE); | 
|---|
| 150 | BOOL      WINAPI GetFileSecurityA(LPCSTR,SECURITY_INFORMATION,PSECURITY_DESCRIPTOR,DWORD,LPDWORD); | 
|---|
| 151 | BOOL      WINAPI GetFileSecurityW(LPCWSTR,SECURITY_INFORMATION,PSECURITY_DESCRIPTOR,DWORD,LPDWORD); | 
|---|
| 152 | #define     GetFileSecurity WINELIB_NAME_AW(GetFileSecurity) | 
|---|
| 153 | BOOL      WINAPI GetUserNameA(LPSTR,LPDWORD); | 
|---|
| 154 | BOOL      WINAPI GetUserNameW(LPWSTR,LPDWORD); | 
|---|
| 155 | #define     GetUserName WINELIB_NAME_AW(GetUserName) | 
|---|
| 156 | BOOL      WINAPI OpenProcessToken(HANDLE,DWORD,HANDLE*); | 
|---|
| 157 | LONG        WINAPI RegConnectRegistryA(LPCSTR,HKEY,LPHKEY); | 
|---|
| 158 | LONG        WINAPI RegConnectRegistryW(LPCWSTR,HKEY,LPHKEY); | 
|---|
| 159 | #define     RegConnectRegistry WINELIB_NAME_AW(RegConnectRegistry) | 
|---|
| 160 | DWORD       WINAPI RegEnumKeyExA(HKEY,DWORD,LPSTR,LPDWORD,LPDWORD,LPSTR, | 
|---|
| 161 | LPDWORD,LPFILETIME); | 
|---|
| 162 | DWORD       WINAPI RegEnumKeyExW(HKEY,DWORD,LPWSTR,LPDWORD,LPDWORD,LPWSTR, | 
|---|
| 163 | LPDWORD,LPFILETIME); | 
|---|
| 164 | #define     RegEnumKeyEx WINELIB_NAME_AW(RegEnumKeyEx) | 
|---|
| 165 | LONG        WINAPI RegGetKeySecurity(HKEY,SECURITY_INFORMATION,PSECURITY_DESCRIPTOR,LPDWORD); | 
|---|
| 166 | LONG        WINAPI RegLoadKeyA(HKEY,LPCSTR,LPCSTR); | 
|---|
| 167 | LONG        WINAPI RegLoadKeyW(HKEY,LPCWSTR,LPCWSTR); | 
|---|
| 168 | #define     RegLoadKey WINELIB_NAME_AW(RegLoadKey) | 
|---|
| 169 | LONG        WINAPI RegNotifyChangeKeyValue(HKEY,BOOL,DWORD,HANDLE,BOOL); | 
|---|
| 170 | DWORD       WINAPI RegOpenKeyExW(HKEY,LPCWSTR,DWORD,REGSAM,LPHKEY); | 
|---|
| 171 | DWORD       WINAPI RegOpenKeyExA(HKEY,LPCSTR,DWORD,REGSAM,LPHKEY); | 
|---|
| 172 | #define     RegOpenKeyEx WINELIB_NAME_AW(RegOpenKeyEx) | 
|---|
| 173 | DWORD       WINAPI RegQueryInfoKeyW(HKEY,LPWSTR,LPDWORD,LPDWORD,LPDWORD, | 
|---|
| 174 | LPDWORD,LPDWORD,LPDWORD,LPDWORD,LPDWORD, | 
|---|
| 175 | LPDWORD,LPFILETIME); | 
|---|
| 176 | DWORD       WINAPI RegQueryInfoKeyA(HKEY,LPSTR,LPDWORD,LPDWORD,LPDWORD, | 
|---|
| 177 | LPDWORD,LPDWORD,LPDWORD,LPDWORD,LPDWORD, | 
|---|
| 178 | LPDWORD,LPFILETIME); | 
|---|
| 179 | #define     RegQueryInfoKey WINELIB_NAME_AW(RegQueryInfoKey) | 
|---|
| 180 | LONG        WINAPI RegReplaceKeyA(HKEY,LPCSTR,LPCSTR,LPCSTR); | 
|---|
| 181 | LONG        WINAPI RegReplaceKeyW(HKEY,LPCWSTR,LPCWSTR,LPCWSTR); | 
|---|
| 182 | #define     RegReplaceKey WINELIB_NAME_AW(RegReplaceKey) | 
|---|
| 183 | LONG        WINAPI RegRestoreKeyA(HKEY,LPCSTR,DWORD); | 
|---|
| 184 | LONG        WINAPI RegRestoreKeyW(HKEY,LPCWSTR,DWORD); | 
|---|
| 185 | #define     RegRestoreKey WINELIB_NAME_AW(RegRestoreKey) | 
|---|
| 186 | LONG        WINAPI RegUnLoadKeyA(HKEY,LPCSTR); | 
|---|
| 187 | LONG        WINAPI RegUnLoadKeyW(HKEY,LPCWSTR); | 
|---|
| 188 | #define     RegUnLoadKey WINELIB_NAME_AW(RegUnLoadKey) | 
|---|
| 189 | BOOL      WINAPI SetFileSecurityA(LPCSTR,SECURITY_INFORMATION,PSECURITY_DESCRIPTOR); | 
|---|
| 190 | BOOL      WINAPI SetFileSecurityW(LPCWSTR,SECURITY_INFORMATION,PSECURITY_DESCRIPTOR); | 
|---|
| 191 | #define     SetFileSecurity WINELIB_NAME_AW(SetFileSecurity) | 
|---|
| 192 | BOOL      WINAPI StartServiceA(HANDLE,DWORD,LPCSTR*); | 
|---|
| 193 | BOOL      WINAPI StartServiceW(HANDLE,DWORD,LPCWSTR*); | 
|---|
| 194 | #define     StartService WINELIB_NAME_AW(StartService) | 
|---|
| 195 |  | 
|---|
| 196 | /* Declarations for functions that are the same in Win16 and Win32 */ | 
|---|
| 197 |  | 
|---|
| 198 | DWORD       WINAPI RegCloseKey(HKEY); | 
|---|
| 199 | DWORD       WINAPI RegFlushKey(HKEY); | 
|---|
| 200 |  | 
|---|
| 201 | DWORD       WINAPI RegCreateKeyA(HKEY,LPCSTR,LPHKEY); | 
|---|
| 202 | DWORD       WINAPI RegCreateKeyW(HKEY,LPCWSTR,LPHKEY); | 
|---|
| 203 | #define     RegCreateKey WINELIB_NAME_AW(RegCreateKey) | 
|---|
| 204 | DWORD       WINAPI RegDeleteKeyA(HKEY,LPCSTR); | 
|---|
| 205 | DWORD       WINAPI RegDeleteKeyW(HKEY,LPWSTR); | 
|---|
| 206 | #define     RegDeleteKey WINELIB_NAME_AW(RegDeleteKey) | 
|---|
| 207 | DWORD       WINAPI RegDeleteValueA(HKEY,LPSTR); | 
|---|
| 208 | DWORD       WINAPI RegDeleteValueW(HKEY,LPWSTR); | 
|---|
| 209 | #define     RegDeleteValue WINELIB_NAME_AW(RegDeleteValue) | 
|---|
| 210 | DWORD       WINAPI RegEnumKeyA(HKEY,DWORD,LPSTR,DWORD); | 
|---|
| 211 | DWORD       WINAPI RegEnumKeyW(HKEY,DWORD,LPWSTR,DWORD); | 
|---|
| 212 | #define     RegEnumKey WINELIB_NAME_AW(RegEnumKey) | 
|---|
| 213 | DWORD       WINAPI RegEnumValueA(HKEY,DWORD,LPSTR,LPDWORD,LPDWORD,LPDWORD,LPBYTE,LPDWORD); | 
|---|
| 214 | DWORD       WINAPI RegEnumValueW(HKEY,DWORD,LPWSTR,LPDWORD,LPDWORD,LPDWORD,LPBYTE,LPDWORD); | 
|---|
| 215 | #define     RegEnumValue WINELIB_NAME_AW(RegEnumValue) | 
|---|
| 216 | DWORD       WINAPI RegOpenKeyA(HKEY,LPCSTR,LPHKEY); | 
|---|
| 217 | DWORD       WINAPI RegOpenKeyW(HKEY,LPCWSTR,LPHKEY); | 
|---|
| 218 | #define     RegOpenKey WINELIB_NAME_AW(RegOpenKey) | 
|---|
| 219 | DWORD       WINAPI RegQueryValueA(HKEY,LPCSTR,LPSTR,LPLONG); | 
|---|
| 220 | DWORD       WINAPI RegQueryValueW(HKEY,LPCWSTR,LPWSTR,LPLONG); | 
|---|
| 221 | #define     RegQueryValue WINELIB_NAME_AW(RegQueryValue) | 
|---|
| 222 | LONG        WINAPI RegQueryValueExA(HKEY,LPSTR,LPDWORD,LPDWORD,LPBYTE,LPDWORD); | 
|---|
| 223 | LONG        WINAPI RegQueryValueExW(HKEY,LPWSTR,LPDWORD,LPDWORD,LPBYTE,LPDWORD); | 
|---|
| 224 | #define     RegQueryValueEx WINELIB_NAME_AW(RegQueryValueEx) | 
|---|
| 225 | DWORD       WINAPI RegSetValueA(HKEY,LPCSTR,DWORD,LPCSTR,DWORD); | 
|---|
| 226 | DWORD       WINAPI RegSetValueW(HKEY,LPCWSTR,DWORD,LPCWSTR,DWORD); | 
|---|
| 227 | #define     RegSetValue WINELIB_NAME_AW(RegSetValue) | 
|---|
| 228 | DWORD       WINAPI RegSetValueExA(HKEY,LPSTR,DWORD,DWORD,LPBYTE,DWORD); | 
|---|
| 229 | DWORD       WINAPI RegSetValueExW(HKEY,LPWSTR,DWORD,DWORD,LPBYTE,DWORD); | 
|---|
| 230 | #define     RegSetValueEx WINELIB_NAME_AW(RegSetValueEx) | 
|---|
| 231 |  | 
|---|
| 232 | #endif  /* __WINE_WINREG_H */ | 
|---|