source: trunk/src/shell32/shellreg.c@ 5655

Last change on this file since 5655 was 5618, checked in by sandervl, 24 years ago

resync with latest wine

File size: 5.6 KB
Line 
1/*
2 Shell Registry Access
3*/
4#include <string.h>
5#include <stdio.h>
6#include "winerror.h"
7#include "winreg.h"
8#include "debugtools.h"
9#include "winnls.h"
10
11#include "shellapi.h"
12#include "shlobj.h"
13#include "shell32_main.h"
14#include "wine/undocshell.h"
15
16DEFAULT_DEBUG_CHANNEL(shell);
17
18/*************************************************************************
19 * SHRegOpenKeyA [SHELL32.506]
20 *
21 */
22HRESULT WINAPI SHRegOpenKeyA(
23 HKEY hKey,
24 LPSTR lpSubKey,
25 LPHKEY phkResult)
26{
27 TRACE("(0x%08x, %s, %p)\n", hKey, debugstr_a(lpSubKey), phkResult);
28 return RegOpenKeyA(hKey, lpSubKey, phkResult);
29}
30
31/*************************************************************************
32 * SHRegOpenKeyW [NT4.0:SHELL32.507]
33 *
34 */
35HRESULT WINAPI SHRegOpenKeyW (
36 HKEY hkey,
37 LPCWSTR lpszSubKey,
38 LPHKEY retkey)
39{
40 WARN("0x%04x %s %p\n",hkey,debugstr_w(lpszSubKey),retkey);
41 return RegOpenKeyW( hkey, lpszSubKey, retkey );
42}
43
44/*************************************************************************
45 * SHRegQueryValueExA [SHELL32.509]
46 *
47 */
48HRESULT WINAPI SHRegQueryValueExA(
49 HKEY hkey,
50 LPSTR lpValueName,
51 LPDWORD lpReserved,
52 LPDWORD lpType,
53 LPBYTE lpData,
54 LPDWORD lpcbData)
55{
56 TRACE("0x%04x %s %p %p %p %p\n", hkey, lpValueName, lpReserved, lpType, lpData, lpcbData);
57 return RegQueryValueExA (hkey, lpValueName, lpReserved, lpType, lpData, lpcbData);
58}
59
60/*************************************************************************
61 * SHRegQueryValueW [NT4.0:SHELL32.510]
62 *
63 */
64HRESULT WINAPI SHRegQueryValueW(
65 HKEY hkey,
66 LPWSTR lpszSubKey,
67 LPWSTR lpszData,
68 LPDWORD lpcbData )
69{
70 WARN("0x%04x %s %p %p semi-stub\n",
71 hkey, debugstr_w(lpszSubKey), lpszData, lpcbData);
72 return RegQueryValueW( hkey, lpszSubKey, lpszData, lpcbData );
73}
74
75/*************************************************************************
76 * SHRegQueryValueExW [NT4.0:SHELL32.511]
77 *
78 * FIXME
79 * if the datatype REG_EXPAND_SZ then expand the string and change
80 * *pdwType to REG_SZ.
81 */
82HRESULT WINAPI SHRegQueryValueExW (
83 HKEY hkey,
84 LPWSTR pszValue,
85 LPDWORD pdwReserved,
86 LPDWORD pdwType,
87 LPVOID pvData,
88 LPDWORD pcbData)
89{
90 DWORD ret;
91 WARN("0x%04x %s %p %p %p %p semi-stub\n",
92 hkey, debugstr_w(pszValue), pdwReserved, pdwType, pvData, pcbData);
93 ret = RegQueryValueExW ( hkey, pszValue, pdwReserved, pdwType, pvData, pcbData);
94 return ret;
95}
96
97/*************************************************************************
98 * SHRegDeleteKeyA [SHELL32]
99 */
100HRESULT WINAPI SHRegDeleteKeyA(
101 HKEY hkey,
102 LPCSTR pszSubKey)
103{
104 FIXME("hkey=0x%08x, %s\n", hkey, debugstr_a(pszSubKey));
105#ifdef __WIN32OS2__
106 return RegDeleteKeyA(hkey,pszSubKey);
107#else
108 return 0;
109#endif
110}
111
112/*************************************************************************
113 * SHRegDeleteKeyW [SHELL32]
114 */
115HRESULT WINAPI SHRegDeleteKeyW(
116 HKEY hkey,
117 LPCWSTR pszSubKey)
118{
119 FIXME("hkey=0x%08x, %s\n", hkey, debugstr_w(pszSubKey));
120#ifdef __WIN32OS2__
121 return RegDeleteKeyW(hkey,pszSubKey);
122#else
123 return 0;
124#endif
125}
126
127/*************************************************************************
128 * SHRegCloseKey [NT4.0:SHELL32.505]
129 *
130 */
131HRESULT WINAPI SHRegCloseKey (HKEY hkey)
132{
133 TRACE("0x%04x\n",hkey);
134 return RegCloseKey( hkey );
135}
136
137#ifndef __WIN32OS2__
138
139/* 16-bit functions */
140
141/* 0 and 1 are valid rootkeys in win16 shell.dll and are used by
142 * some programs. Do not remove those cases. -MM
143 */
144static inline void fix_win16_hkey( HKEY *hkey )
145{
146 if (*hkey == 0 || *hkey == 1) *hkey = HKEY_CLASSES_ROOT;
147}
148
149/******************************************************************************
150 * RegOpenKey16 [SHELL.1]
151 */
152DWORD WINAPI RegOpenKey16( HKEY hkey, LPCSTR name, LPHKEY retkey )
153{
154 fix_win16_hkey( &hkey );
155 return RegOpenKeyA( hkey, name, retkey );
156}
157
158/******************************************************************************
159 * RegCreateKey16 [SHELL.2]
160 */
161DWORD WINAPI RegCreateKey16( HKEY hkey, LPCSTR name, LPHKEY retkey )
162{
163 fix_win16_hkey( &hkey );
164 return RegCreateKeyA( hkey, name, retkey );
165}
166
167/******************************************************************************
168 * RegCloseKey16 [SHELL.3]
169 */
170DWORD WINAPI RegCloseKey16( HKEY hkey )
171{
172 fix_win16_hkey( &hkey );
173 return RegCloseKey( hkey );
174}
175
176/******************************************************************************
177 * RegDeleteKey16 [SHELL.4]
178 */
179DWORD WINAPI RegDeleteKey16( HKEY hkey, LPCSTR name )
180{
181 fix_win16_hkey( &hkey );
182 return RegDeleteKeyA( hkey, name );
183}
184
185/******************************************************************************
186 * RegSetValue16 [SHELL.5]
187 */
188DWORD WINAPI RegSetValue16( HKEY hkey, LPCSTR name, DWORD type, LPCSTR data, DWORD count )
189{
190 fix_win16_hkey( &hkey );
191 return RegSetValueA( hkey, name, type, data, count );
192}
193
194/******************************************************************************
195 * RegQueryValue16 [SHELL.6]
196 *
197 * NOTES
198 * Is this HACK still applicable?
199 *
200 * HACK
201 * The 16bit RegQueryValue doesn't handle selectorblocks anyway, so we just
202 * mask out the high 16 bit. This (not so much incidently) hopefully fixes
203 * Aldus FH4)
204 */
205DWORD WINAPI RegQueryValue16( HKEY hkey, LPCSTR name, LPSTR data, LPDWORD count )
206{
207 fix_win16_hkey( &hkey );
208 if (count) *count &= 0xffff;
209 return RegQueryValueA( hkey, name, data, count );
210}
211
212/******************************************************************************
213 * RegEnumKey16 [SHELL.7]
214 */
215DWORD WINAPI RegEnumKey16( HKEY hkey, DWORD index, LPSTR name, DWORD name_len )
216{
217 fix_win16_hkey( &hkey );
218 return RegEnumKeyA( hkey, index, name, name_len );
219}
220#endif //__WIN32OS2__
Note: See TracBrowser for help on using the repository browser.