setupapi: Fixed returns values and added a test for SetupDiOpenClassRegKeyExW.
[wine] / include / hlink.idl
1 /*
2  * Copyright 2005 Jacek Caban
3  *
4  * This library is free software; you can redistribute it and/or
5  * modify it under the terms of the GNU Lesser General Public
6  * License as published by the Free Software Foundation; either
7  * version 2.1 of the License, or (at your option) any later version.
8  *
9  * This library is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12  * Lesser General Public License for more details.
13  *
14  * You should have received a copy of the GNU Lesser General Public
15  * License along with this library; if not, write to the Free Software
16  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
17  */
18
19 import "urlmon.idl";
20
21 interface IHlink;
22 interface IHlinkSite;
23 interface IHlinkFrame;
24 interface IHlinkBrowseContext;
25
26 cpp_quote("HRESULT WINAPI HlinkCreateFromMoniker(IMoniker*, LPCWSTR, LPCWSTR, IHlinkSite*, DWORD, IUnknown*, REFIID, void**);")
27 cpp_quote("HRESULT WINAPI HlinkCreateFromString(LPCWSTR, LPCWSTR, LPCWSTR, IHlinkSite*, DWORD, IUnknown*, REFIID, void**);")
28 cpp_quote("HRESULT WINAPI HlinkCreateFromData(IDataObject*, IHlinkSite*, DWORD dwSiteData, IUnknown*, REFIID, void**);")
29 cpp_quote("HRESULT WINAPI HlinkQueryCreateFromData(IDataObject*);")
30 cpp_quote("HRESULT WINAPI HlinkClone(IHlink*, REFIID, IHlinkSite*, DWORD, void **);")
31 cpp_quote("HRESULT WINAPI HlinkCreateBrowseContext(IUnknown*, REFIID, void **);")
32 cpp_quote("HRESULT WINAPI HlinkNavigateToStringReference(LPCWSTR, LPCWSTR, IHlinkSite*, DWORD, IHlinkFrame*, DWORD, LPBC, IBindStatusCallback*, IHlinkBrowseContext*);")
33 cpp_quote("HRESULT WINAPI HlinkNavigate(IHlink*, IHlinkFrame*, DWORD, LPBC, IBindStatusCallback*, IHlinkBrowseContext*);")
34 cpp_quote("HRESULT WINAPI HlinkOnNavigate(IHlinkFrame*, IHlinkBrowseContext*, DWORD, IMoniker*, LPCWSTR, LPCWSTR, ULONG*);")
35 cpp_quote("HRESULT WINAPI HlinkIsShortcut(LPCWSTR);")
36 cpp_quote("HRESULT WINAPI HlinkTranslateURL(LPCWSTR,DWORD,LPWSTR*);")
37
38 /*****************************************************************************
39  *    IHlink interface
40  */
41 [
42     object,
43     uuid(79EAC9C3-BAF9-11CE-8C82-00AA004BA90B),
44     pointer_default(unique)
45 ]
46 interface IHlink: IUnknown
47 {
48     typedef [unique] IHlink *LPHLINK;
49
50     typedef enum {
51         HLNF_INTERNALJUMP          = 0x00000001,
52         HLNF_OPENINNEWWINDOW       = 0x00000002,
53         HLNF_NAVIGATINGBACK        = 0x00000004,
54         HLNF_NAVIGATINGFORWARD     = 0x00000008,
55         HLNF_NAVIGATINGTOSTACKITEM = 0x00000010,
56         HLNF_CREATENOHISTORY       = 0x00000020
57     } HLNF;
58
59     typedef enum {
60         HLINKGETREF_DEFAULT  = 0,
61         HLINKGETREF_ABSOLUTE = 1,
62         HLINKGETREF_RELATIVE = 2,
63     } HLINKGETREF;
64
65     typedef enum {
66         HLFNAMEF_DEFAULT          = 0x00000000,
67         HLFNAMEF_TRYCACHE         = 0x00000001,
68         HLFNAMEF_TRYPRETTYTARGET  = 0x00000002,
69         HLFNAMEF_TRYFULLTARGET    = 0x00000004,
70         HLFNAMEF_TRYWIN95SHORTCUT = 0x00000008
71     } HLFNAMEF;
72
73     typedef enum {
74         HLINKMISC_RELATIVE = 0x00000001,
75     } HLINKMISC;
76
77     typedef enum {
78         HLINKSETF_TARGET   = 0x00000001,
79         HLINKSETF_LOCATION = 0x00000002
80     } HLINKSETF;
81
82     HRESULT SetHlinkSite(
83         [in, unique] IHlinkSite *pihlSite,
84         [in] DWORD dwSiteData);
85
86     HRESULT GetHlinkSite(
87         [out] IHlinkSite **ppihlSite,
88         [out] DWORD *pdwSiteData);
89
90     HRESULT SetMonikerReference(
91         [in] DWORD grfHLSETF,
92         [in, unique] IMoniker *pimkTarget,
93         [in, unique] LPCWSTR pwzLocation);
94
95     HRESULT GetMonikerReference(
96         [in]  DWORD dwWhichRef,
97         [out] IMoniker **ppimkTarget,
98         [out] LPWSTR *ppwzLocation);
99
100     HRESULT SetStringReference(
101         [in] DWORD grfHLSETF,
102         [in, unique] LPCWSTR pwzTarget,
103         [in, unique] LPCWSTR pwzLocation);
104
105     HRESULT GetStringReference(
106         [in]  DWORD dwWhichRef,
107         [out] LPWSTR *ppwzTarget,
108         [out] LPWSTR *ppwzLocation);
109
110     HRESULT SetFriendlyName(
111         [in, unique] LPCWSTR pwzFriendlyName);
112
113     HRESULT GetFriendlyName(
114         [in]  DWORD grfHLFNAMEF,
115         [out] LPWSTR *ppwzFriendlyName);
116
117     HRESULT SetTargetFrameName(
118         [in, unique] LPCWSTR pwzTargetFrameName);
119
120     HRESULT GetTargetFrameName(
121         [out] LPWSTR *ppwzTargetFrameName);
122
123     HRESULT GetMiscStatus(
124         [out] DWORD *pdwStatus);
125
126     HRESULT Navigate(
127         [in] DWORD grfHLNF,
128         [in, unique] LPBC pibc,
129         [in, unique] IBindStatusCallback *pibsc,
130         [in, unique] IHlinkBrowseContext *pihlbc);
131
132     HRESULT SetAdditionalParams(
133         [in, unique] LPCWSTR pwzAdditionalParams);
134
135     HRESULT GetAdditionalParams(
136         [out] LPWSTR *ppwzAdditionalParams);
137 }
138
139 /*****************************************************************************
140  *    IHlink interface
141  */
142 [
143     object,
144     uuid(79EAC9C2-BAF9-11CE-8C82-00AA004BA90B),
145     pointer_default(unique)
146 ]
147 interface IHlinkSite: IUnknown
148 {
149     typedef [unique] IHlinkSite *LPHLINKSITE;
150
151     typedef enum {
152         HLINKWHICHMK_CONTAINER = 1,
153         HLINKWHICHMK_BASE      = 2,
154     } HLINKWHICHMK;
155
156     HRESULT QueryService(
157         [in] DWORD dwSiteData,
158         [in] REFGUID guidService,
159         [in] REFIID riid,
160         [out, iid_is(riid)] IUnknown **ppiunk);
161
162     HRESULT GetMoniker(
163         [in] DWORD dwSiteData,
164         [in] DWORD dwAssign,
165         [in] DWORD dwWhich,
166         [out] IMoniker **ppimk);
167
168     HRESULT ReadyToNavigate(
169         [in] DWORD dwSiteData,
170         [in] DWORD dwReserved);
171
172     HRESULT OnNavigationComplete(
173         [in] DWORD dwSiteData,
174         [in] DWORD dwreserved,
175         [in] HRESULT hrError,
176         [in, unique] LPCWSTR pwzError);
177 }
178
179 /*****************************************************************************
180  *    IEnumHLITEM interface
181  */
182 [
183     local,
184     object,
185     uuid(79EAC9C6-BAF9-11CE-8C82-00AA004BA90B),
186     pointer_default(unique)
187 ]
188 interface IEnumHLITEM : IUnknown
189 {
190     typedef [unique] IEnumHLITEM *LPENUMHLITEM;
191
192     typedef struct tagHLITEM {
193         ULONG  uHLID;
194         LPWSTR pwzFriendlyName;
195     } HLITEM;
196     typedef [unique] HLITEM *LPHLITEM;
197
198     HRESULT Next(
199         [in]  ULONG celt,
200         [out] HLITEM *rgelt,
201         [out] ULONG *pceltFetched);
202
203     HRESULT Skip(
204         [in] ULONG celt);
205
206     HRESULT Reset();
207
208     HRESULT Clone(
209         [out] IEnumHLITEM **ppienumhlitem);
210 }
211
212 /*****************************************************************************
213  *    IHlinkBrowseContext interface
214  */
215 [
216     local,
217     object,
218     uuid(79EAC9C7-BAF9-11CE-8C82-00AA004BA90B),
219     pointer_default(unique)
220 ]
221 interface IHlinkBrowseContext : IUnknown
222 {
223     typedef [unique] IHlinkBrowseContext *LPHLINKBROWSECONTEXT;
224
225     enum {
226         HLTB_DOCKEDLEFT    = 0,
227         HLTB_DOCKEDTOP     = 1,
228         HLTB_DOCKEDRIGHT   = 2,
229         HLTB_DOCKEDBOTTOM  = 3,
230         HLTB_FLOATING      = 4
231     };
232
233     typedef struct _tagHLTBINFO {
234         ULONG uDockType;
235         RECT  rcTbPos;
236     } HLTBINFO;
237
238     enum {
239         HLBWIF_HASFRAMEWNDINFO   = 0x00000001,
240         HLBWIF_HASDOCWNDINFO     = 0x00000002,
241         HLBWIF_FRAMEWNDMAXIMIZED = 0x00000004,
242         HLBWIF_DOCWNDMAXIMIZED   = 0x00000008,
243         HLBWIF_HASWEBTOOLBARINFO = 0x00000010,
244         HLBWIF_WEBTOOLBARHIDDEN  = 0x00000020
245     };
246
247     typedef struct _tagHLBWINFO {
248         ULONG    cbSize;
249         DWORD    grfHLBWIF;
250         RECT     rcFramePos;
251         RECT     rcDocPos;
252         HLTBINFO hltbinfo;
253     } HLBWINFO;
254
255     typedef [unique] HLBWINFO *LPHLBWINFO;
256
257     enum {
258         HLID_INVALID     = 0x00000000,
259         HLID_PREVIOUS    = 0xFFFFFFFF,
260         HLID_NEXT        = 0xFFFFFFFE,
261         HLID_CURRENT     = 0xFFFFFFFD,
262         HLID_STACKBOTTOM = 0xFFFFFFFC,
263         HLID_STACKTOP    = 0xFFFFFFFB
264     };
265
266     enum {
267         HLQF_ISVALID   = 0x00000001,
268         HLQF_ISCURRENT = 0x00000002
269     };
270
271     HRESULT Register(
272         [in] DWORD reserved,
273         [in, unique] IUnknown *piunk,
274         [in, unique] IMoniker *pimk,
275         [out] DWORD *pdwRegister);
276
277     HRESULT GetObject(
278         [in, unique] IMoniker *pimk,
279         [in] BOOL fBindIfRootRegistered,
280         [out] IUnknown **ppiunk);
281
282     HRESULT Revoke(
283         [in] DWORD dwRegister);
284
285     HRESULT SetBrowseWindowInfo(
286         [in, unique] HLBWINFO *phlbwi);
287
288     HRESULT GetBrowseWindowInfo(
289         [out] HLBWINFO *phlbwi);
290
291     HRESULT SetInitialHlink(
292         [in, unique] IMoniker * pimkTarget,
293         [in, unique] LPCWSTR pwzLocation,
294         [in, unique] LPCWSTR pwzFriendlyName);
295
296     HRESULT OnNavigateHlink(
297         [in] DWORD grfHLNF,
298         [in, unique] IMoniker *pimkTarget,
299         [in, unique] LPCWSTR pwzLocation,
300         [in, unique] LPCWSTR pwzFriendlyName,
301         [out] ULONG *puHLID);
302
303     HRESULT UpdateHlink(
304         [in] ULONG uHLID,
305         [in, unique] IMoniker *pimkTarget,
306         [in, unique] LPCWSTR pwzLocation,
307         [in, unique] LPCWSTR pwzFriendlyName);
308
309     HRESULT EnumNavigationStack(
310         [in] DWORD dwReserved,
311         [in] DWORD grfHLFNAMEF,
312         [out] IEnumHLITEM **ppienumhlitem);
313
314     HRESULT QueryHlink(
315         [in] DWORD grfHLQF,
316         [in] ULONG uHLID);
317
318     HRESULT GetHlink(
319         [in] ULONG uHLID,
320         [out] IHlink **ppihl);
321
322     HRESULT SetCurrentHlink(
323         [in] ULONG uHLID);
324
325     HRESULT Clone(
326         [in, unique] IUnknown *piunkOuter,
327         [in] REFIID riid,
328         [out, iid_is(riid)] IUnknown **ppiunkObj);
329
330     HRESULT Close(
331         [in] DWORD reserved);
332 }
333
334
335 /*****************************************************************************
336  *    IHlinkTarget interface
337  */
338 [
339     object,
340     uuid(79EAC9C4-BAF9-11CE-8C82-00AA004BA90B),
341     pointer_default(unique)
342 ]
343 interface IHlinkTarget : IUnknown
344 {
345     typedef [unique] IHlinkTarget *LPHLINKTARGET;
346
347     HRESULT SetBrowseContext(
348         [in, unique] IHlinkBrowseContext *pihlbc);
349
350     HRESULT GetBrowseContext(
351         [out] IHlinkBrowseContext **ppihlbc);
352
353     HRESULT Navigate(
354         [in] DWORD grfHLNF,
355         [in, unique] LPCWSTR pwzJumpLocation);
356
357     HRESULT GetMoniker(
358         [in,unique]  LPCWSTR pwzLocation,
359         [in] DWORD dwAssign,
360         [out] IMoniker **ppimkLocation);
361
362     HRESULT GetFriendlyName(
363         [in,unique]  LPCWSTR pwzLocation,
364         [out] LPWSTR *ppwzFriendlyName);
365 }
366
367 /*****************************************************************************
368  *    IHlinkFrame interface
369  */
370 [
371     object,
372     uuid(79eac9c5-baf9-11ce-8c82-00aa004ba90b),
373     pointer_default(unique)
374 ]
375
376 interface IHlinkFrame : IUnknown
377 {
378     typedef IHlinkFrame *LPHLINKFRAME;
379
380     HRESULT SetBrowseContext( 
381         [in, unique] IHlinkBrowseContext * pihlbc);
382     HRESULT GetBrowseContext( 
383         [out] IHlinkBrowseContext ** ppihlbc);
384     HRESULT Navigate( 
385         [in] DWORD grfHLNF, 
386         [in, unique] LPBC pbc, 
387         [in, unique] IBindStatusCallback *pibsc, 
388         [in, unique] IHlink *pihlNavigate);
389     HRESULT OnNavigate( 
390         [in] DWORD grfHLNF, 
391         [in, unique] IMoniker *pimkTarget, 
392         [in, unique] LPCWSTR pwzLocation, 
393         [in, unique] LPCWSTR pwzFriendlyName, 
394         [in] DWORD dwreserved);
395     HRESULT UpdateHlink( 
396         [in] ULONG uHLID, 
397         [in, unique] IMoniker *pimkTarget, 
398         [in, unique] LPCWSTR pwzLocation, 
399         [in, unique] LPCWSTR pwzFriendlyName);
400 }