winapi_ui_automation/um/
objidl.rs

1// Licensed under the Apache License, Version 2.0
2// <LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
3// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your option.
4// All files in the project carrying such notice may not be copied, modified, or distributed
5// except according to those terms.
6//! this ALWAYS GENERATED file contains the definitions for the interfaces
7use ctypes::c_void;
8use shared::basetsd::UINT64;
9use shared::guiddef::{CLSID, IID, REFCLSID, REFIID};
10use shared::minwindef::{BOOL, BYTE, DWORD, FILETIME, HGLOBAL, ULONG, WORD};
11use shared::ntdef::LONG;
12use shared::windef::{HBITMAP, HENHMETAFILE};
13use shared::wtypes::{CLIPFORMAT, HMETAFILEPICT};
14use shared::wtypesbase::{LPCOLESTR, LPOLESTR, OLECHAR};
15use um::objidlbase::{IEnumString, IStream, STATSTG};
16use um::unknwnbase::{IUnknown, IUnknownVtbl};
17use um::winnt::{HRESULT, ULARGE_INTEGER};
18//8402
19STRUCT!{struct BIND_OPTS {
20    cbStruct: DWORD,
21    grfFlags: DWORD,
22    grfMode: DWORD,
23    dwTickCountDeadline: DWORD,
24}}
25pub type LPBIND_OPTS = *mut BIND_OPTS;
26//8479
27RIDL!{#[uuid(0x0000000e, 0x0000, 0x0000, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46)]
28interface IBindCtx(IBindCtxVtbl): IUnknown(IUnknownVtbl) {
29    fn RegisterObjectBound(
30        punk: *mut IUnknown,
31    ) -> HRESULT,
32    fn RevokeObjectBound(
33        punk: *mut IUnknown,
34    ) -> HRESULT,
35    fn ReleaseBoundObjects() -> HRESULT,
36    fn SetBindOptions(
37        pbindopts: *mut BIND_OPTS,
38    ) -> HRESULT,
39    fn GetBindOptions(
40        pbindopts: *mut BIND_OPTS,
41    ) -> HRESULT,
42    fn GetRunningObjectTable(
43        pprot: *mut *mut IRunningObjectTable,
44    ) -> HRESULT,
45    fn RegisterObjectParam(
46        pszKey: LPOLESTR,
47        punk: *mut IUnknown,
48    ) -> HRESULT,
49    fn GetObjectParam(
50        pszKey: LPOLESTR,
51        ppunk: *mut *mut IUnknown,
52    ) -> HRESULT,
53    fn EnumObjectParam(
54        ppenum: *mut *mut IEnumString,
55    ) -> HRESULT,
56    fn RevokeObjectParam(
57        pszKey: LPOLESTR,
58    ) -> HRESULT,
59}}
60//8681
61RIDL!{#[uuid(0x00000102, 0x0000, 0x0000, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46)]
62interface IEnumMoniker(IEnumMonikerVtbl): IUnknown(IUnknownVtbl) {
63    fn Next(
64        celt: ULONG,
65        rgelt: *mut *mut IMoniker,
66        pceltFetched: *mut ULONG,
67    ) -> HRESULT,
68    fn Skip(
69        celt: ULONG,
70    ) -> HRESULT,
71    fn Reset() -> HRESULT,
72    fn Clone(
73        ppenum: *mut *mut IEnumMoniker,
74    ) -> HRESULT,
75}}
76//8958
77RIDL!{#[uuid(0x00000010, 0x0000, 0x0000, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46)]
78interface IRunningObjectTable(IRunningObjectTableVtbl): IUnknown(IUnknownVtbl) {
79    fn Register(
80        grfFlags: DWORD,
81        punkObject: *mut IUnknown,
82        pmkObjectName: *mut IMoniker,
83        pdwRegister: *mut DWORD,
84    ) -> HRESULT,
85    fn Revoke(
86        dwRegister: DWORD,
87    ) -> HRESULT,
88    fn IsRunning(
89        pmkObjectName: *mut IMoniker,
90    ) -> HRESULT,
91    fn GetObject(
92        pmkObjectName: *mut IMoniker,
93        ppunkObject: *mut *mut IUnknown,
94    ) -> HRESULT,
95    fn NoteChangeTime(
96        dwRegister: DWORD,
97        pfiletime: *mut FILETIME,
98    ) -> HRESULT,
99    fn GetTimeOfLastChange(
100        pmkObjectName: *mut IMoniker,
101        pfiletime: *mut FILETIME,
102    ) -> HRESULT,
103    fn EnumRunning(
104        ppenumMoniker: *mut *mut IEnumMoniker,
105    ) -> HRESULT,
106}}
107//9125
108RIDL!{#[uuid(0x0000010c, 0x0000, 0x0000, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46)]
109interface IPersist(IPersistVtbl): IUnknown(IUnknownVtbl) {
110    fn GetClassID(
111        pClassID: *mut CLSID,
112    ) -> HRESULT,
113}}
114//9207
115RIDL!{#[uuid(0x00000109, 0x0000, 0x0000, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46)]
116interface IPersistStream(IPersistStreamVtbl): IPersist(IPersistVtbl) {
117    fn IsDirty() -> HRESULT,
118    fn Load(
119        pStm: *mut IStream,
120    ) -> HRESULT,
121    fn Save(
122        pStm: *mut IStream,
123        fClearDirty: BOOL,
124    ) -> HRESULT,
125    fn GetSizeMax(
126        pcbSize: *mut ULARGE_INTEGER,
127    ) -> HRESULT,
128}}
129//9350
130RIDL!{#[uuid(0x0000000f, 0x0000, 0x0000, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46)]
131interface IMoniker(IMonikerVtbl): IPersistStream(IPersistStreamVtbl) {
132    fn BindToObject(
133        pbc: *mut IBindCtx,
134        pmkToLeft: *mut IMoniker,
135        riidResult: REFIID,
136        ppvResult: *mut *mut c_void,
137    ) -> HRESULT,
138    fn BindToStorage(
139        pbc: *mut IBindCtx,
140        pmkToLeft: *mut IMoniker,
141        riid: REFIID,
142        ppvObj: *mut *mut c_void,
143    ) -> HRESULT,
144    fn Reduce(
145        pbc: *mut IBindCtx,
146        dwReduceHowFar: DWORD,
147        ppmkToLeft: *mut *mut IMoniker,
148        ppmkReduced: *mut *mut IMoniker,
149    ) -> HRESULT,
150    fn ComposeWith(
151        pmkRight: *mut IMoniker,
152        fOnlyIfNotGeneric: BOOL,
153        ppmkComposite: *mut *mut IMoniker,
154    ) -> HRESULT,
155    fn Enum(
156        fForward: BOOL,
157        ppenumMoniker: *mut *mut IEnumMoniker,
158    ) -> HRESULT,
159    fn IsEqual(
160        pmkOtherMoniker: *mut IMoniker,
161    ) -> HRESULT,
162    fn Hash(
163        pdwHash: *mut DWORD,
164    ) -> HRESULT,
165    fn IsRunning(
166        pbc: *mut IBindCtx,
167        pmkToLeft: *mut IMoniker,
168        pmkNewlyRunning: *mut IMoniker,
169    ) -> HRESULT,
170    fn GetTimeOfLastChange(
171        pbc: *mut IBindCtx,
172        pmkToLeft: *mut IMoniker,
173        pFileTime: *mut FILETIME,
174    ) -> HRESULT,
175    fn Inverse(
176        ppmk: *mut *mut IMoniker,
177    ) -> HRESULT,
178    fn CommonPrefixWith(
179        pmkOther: *mut IMoniker,
180        ppmkPrefix: *mut *mut IMoniker,
181    ) -> HRESULT,
182    fn RelativePathTo(
183        pmkOther: *mut IMoniker,
184        ppmkRelPath: *mut *mut IMoniker,
185    ) -> HRESULT,
186    fn GetDisplayName(
187        pbc: *mut IBindCtx,
188        pmkToLeft: *mut IMoniker,
189        ppszDisplayName: *mut LPOLESTR,
190    ) -> HRESULT,
191    fn ParseDisplayName(
192        pbc: *mut IBindCtx,
193        pmkToLeft: *mut IMoniker,
194        pszDisplayName: LPOLESTR,
195        pchEaten: *mut ULONG,
196        ppmkOut: *mut *mut IMoniker,
197    ) -> HRESULT,
198    fn IsSystemMoniker(
199        pdwMksys: *mut DWORD,
200    ) -> HRESULT,
201}}
202ENUM!{enum EOLE_AUTHENTICATION_CAPABILITIES {
203    EOAC_NONE = 0,
204    EOAC_MUTUAL_AUTH = 0x1,
205    EOAC_STATIC_CLOAKING = 0x20,
206    EOAC_DYNAMIC_CLOAKING = 0x40,
207    EOAC_ANY_AUTHORITY = 0x80,
208    EOAC_MAKE_FULLSIC = 0x100,
209    EOAC_DEFAULT = 0x800,
210    EOAC_SECURE_REFS = 0x2,
211    EOAC_ACCESS_CONTROL = 0x4,
212    EOAC_APPID = 0x8,
213    EOAC_DYNAMIC = 0x10,
214    EOAC_REQUIRE_FULLSIC = 0x200,
215    EOAC_AUTO_IMPERSONATE = 0x400,
216    EOAC_NO_CUSTOM_MARSHAL = 0x2000,
217    EOAC_DISABLE_AAA = 0x1000,
218}}
219STRUCT!{struct SOLE_AUTHENTICATION_SERVICE {
220    dwAuthnSvc: DWORD,
221    dwAuthzSvc: DWORD,
222    pPrincipalName: *mut OLECHAR,
223    hr: HRESULT,
224}}
225RIDL!{#[uuid(0x0000000d, 0x0000, 0x0000, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46)]
226interface IEnumSTATSTG(IEnumSTATSTGVtbl): IUnknown(IUnknownVtbl) {
227    fn Next(
228        celt: ULONG,
229        rgelt: *mut STATSTG,
230        pceltFetched: *mut ULONG,
231    ) -> HRESULT,
232    fn Skip(
233        celt: ULONG,
234    ) -> HRESULT,
235    fn Reset() -> HRESULT,
236    fn Clone(
237        ppenum: *mut *mut IEnumSTATSTG,
238    ) -> HRESULT,
239}}
240pub type SNB = *const *const OLECHAR;
241RIDL!{#[uuid(0x0000000b, 0x0000, 0x0000, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46)]
242interface IStorage(IStorageVtbl): IUnknown(IUnknownVtbl) {
243    fn CreateStream(
244        pwcsName: *const OLECHAR,
245        grfMode: DWORD,
246        reserved1: DWORD,
247        reserved2: DWORD,
248        ppstm: *mut *mut IStream,
249    ) -> HRESULT,
250    fn OpenStream(
251        pwcsName: *const OLECHAR,
252        reserved1: *const c_void,
253        grfMode: DWORD,
254        reserved2: DWORD,
255        ppstm: *mut *mut IStream,
256    ) -> HRESULT,
257    fn CreateStorage(
258        pwcsName: *const OLECHAR,
259        grfMode: DWORD,
260        reserved1: DWORD,
261        reserved2: DWORD,
262        ppstg: *mut *mut IStorage,
263    ) -> HRESULT,
264    fn OpenStorage(
265        pwcsName: *const OLECHAR,
266        pstgPriority: IStorage,
267        grfMode: DWORD,
268        snbExclude: SNB,
269        reserved: DWORD,
270        ppstg: *mut *mut IStorage,
271    ) -> HRESULT,
272    fn CopyTo(
273        ciidExclude: DWORD,
274        rgiidExclude: *const IID,
275        snbExclude: SNB,
276        pstgDest: *const IStorage,
277    ) -> HRESULT,
278    fn MoveElementTo(
279        pwcsName: *const OLECHAR,
280        pstgDest: *const IStorage,
281        pwcsNewName: *const OLECHAR,
282        grfFlags: DWORD,
283    ) -> HRESULT,
284    fn Commit(
285        grfCommitFlags: DWORD,
286    ) -> HRESULT,
287    fn Revert() -> HRESULT,
288    fn EnumElements(
289        reserved1: DWORD,
290        reserved2: *const c_void,
291        reserved3: DWORD,
292        ppenum: *mut *mut IEnumSTATSTG,
293    ) -> HRESULT,
294    fn DestroyElement(
295        pwcsName: *const OLECHAR,
296    ) -> HRESULT,
297    fn RenameElement(
298        pwcsOldName: *const OLECHAR,
299        pwcsNewName: *const OLECHAR,
300    ) -> HRESULT,
301    fn SetElementTimes(
302        pwcsName: *const OLECHAR,
303        pctime: *const FILETIME,
304        patime: *const FILETIME,
305        pmtime: *const FILETIME,
306    ) -> HRESULT,
307    fn SetClass(
308        clsid: REFCLSID,
309    ) -> HRESULT,
310    fn SetStateBits(
311        grfStateBits: DWORD,
312        grfMask: DWORD,
313    ) -> HRESULT,
314    fn Stat(
315        pstatstg: *mut STATSTG,
316        grfStatFlag: DWORD,
317    ) -> HRESULT,
318}}
319RIDL!{#[uuid(0x0000010b, 0x0000, 0x0000, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46)]
320interface IPersistFile(IPersistFileVtbl): IPersist(IPersistVtbl) {
321    fn IsDirty() -> HRESULT,
322    fn Load(
323        pszFileName: LPCOLESTR,
324        dwMode: DWORD,
325    ) -> HRESULT,
326    fn Save(
327        pszFileName: LPCOLESTR,
328        fRemember: BOOL,
329    ) -> HRESULT,
330    fn SaveCompleted(
331        pszFileName: LPCOLESTR,
332    ) -> HRESULT,
333    fn GetCurFile(
334        ppszFileName: *mut LPOLESTR,
335    ) -> HRESULT,
336}}
337STRUCT!{struct DVTARGETDEVICE {
338    tdSize: DWORD,
339    tdDriverNameOffset: WORD,
340    tdDeviceNameOffset: WORD,
341    tdPortNameOffset: WORD,
342    tdExtDevmodeOFfset: WORD,
343    tdData: [BYTE; 1],
344}}
345STRUCT!{struct FORMATETC {
346    cfFormat: CLIPFORMAT,
347    ptd: *const DVTARGETDEVICE,
348    dwAspect: DWORD,
349    lindex: LONG,
350    tymed: DWORD,
351}}
352RIDL!{#[uuid(0x00000103, 0x0000, 0x0000, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46)]
353interface IEnumFORMATETC(IEnumFORMATETCVtbl): IUnknown(IUnknownVtbl) {
354    fn Next(
355        celt: ULONG,
356        rgelt: *mut FORMATETC,
357        pceltFetched: *mut ULONG,
358    ) -> HRESULT,
359    fn Skip(
360        celt: ULONG,
361    ) -> HRESULT,
362    fn Reset() -> HRESULT,
363    fn Clone(
364        ppenum: *mut *mut IEnumFORMATETC,
365    ) -> HRESULT,
366}}
367ENUM!{enum ADVF {
368    ADVF_NODATA = 1,
369    ADVF_PRIMEFIRST = 2,
370    ADVF_ONLYONCE = 4,
371    ADVF_DATAONSTOP = 64,
372    ADVFCACHE_NOHANDLER = 8,
373    ADVFCACHE_FORCEBUILTIN = 16,
374    ADVFCACHE_ONSAVE = 32,
375}}
376STRUCT!{struct STATDATA {
377    formatetc: FORMATETC,
378    advf: DWORD,
379    pAdvSInk: *mut IAdviseSink,
380    dwConnection: DWORD,
381}}
382RIDL!{#[uuid(0x00000105, 0x0000, 0x0000, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46)]
383interface IEnumSTATDATA(IEnumSTATDATAVtbl): IUnknown(IUnknownVtbl) {
384    fn Next(
385        celt: ULONG,
386        rgelt: *mut STATDATA,
387        pceltFetched: *mut ULONG,
388    ) -> HRESULT,
389    fn Skip(
390        celt: ULONG,
391    ) -> HRESULT,
392    fn Reset() -> HRESULT,
393    fn Clone(
394        ppenum: *mut *mut IEnumSTATDATA,
395    ) -> HRESULT,
396}}
397ENUM!{enum TYMED {
398    TYMED_HGLOBAL = 1,
399    TYMED_FILE = 2,
400    TYMED_ISTREAM = 4,
401    TYMED_ISTORAGE = 8,
402    TYMED_GDI = 16,
403    TYMED_MFPICT = 32,
404    TYMED_ENHMF = 64,
405    TYMED_NULL = 0,
406}}
407UNION!{union STGMEDIUM_u {
408    [u64; 7], //TODO: I guessed to move on
409    hBitmap hBitmap_mut: HBITMAP,
410    hMetaFilePict hMetaFilePict_mut: HMETAFILEPICT,
411    hEnhMetaFile hEnhMetaFile_mut: HENHMETAFILE,
412    hGlobal hGlobal_mut: HGLOBAL,
413    lpszFileName lpszFileName_mut: LPOLESTR,
414    pstm pstm_mut: *mut IStream,
415    pstg pstg_mut: *mut IStorage,
416}}
417STRUCT!{struct STGMEDIUM {
418    tymed: DWORD,
419    u: *mut STGMEDIUM_u,
420    pUnkForRelease: *mut IUnknown,
421}}
422RIDL!{#[uuid(0x0000010f, 0x0000, 0x0000, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46)]
423interface IAdviseSink(IAdviseSinkVtbl): IUnknown(IUnknownVtbl) {
424    fn OnDataChange(
425        pformatetc: *mut FORMATETC,
426        pStgmed: *mut STGMEDIUM,
427    ) -> c_void,
428    fn OnViewChange(
429        dwAspect: DWORD,
430        lindex: LONG,
431    ) -> c_void,
432    fn OnRename(
433        pmk: *mut IMoniker,
434    ) -> c_void,
435    fn OnSave() -> c_void,
436    fn OnClose() -> c_void,
437}}
438ENUM!{enum DATADIR {
439    DATADIR_GET = 1,
440    DATADIR_SET = 2,
441}}
442pub type LPDATAOBJECT = *mut IDataObject;
443RIDL!{#[uuid(0x0000010e, 0x0000, 0x0000, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46)]
444interface IDataObject(IDataObjectVtbl): IUnknown(IUnknownVtbl) {
445    fn GetData(
446        pformatetcIn: *const FORMATETC,
447        pmedium: *mut STGMEDIUM,
448    ) -> HRESULT,
449    fn GetDataHere(
450        pformatetc: *const FORMATETC,
451        pmedium: *mut STGMEDIUM,
452    ) -> HRESULT,
453    fn QueryGetData(
454        pformatetc: *const FORMATETC,
455    ) -> HRESULT,
456    fn GetCanonicalFormatEtc(
457        pformatetcIn: *const FORMATETC,
458        pformatetcOut: *mut FORMATETC,
459    ) -> HRESULT,
460    fn SetData(
461        pformatetc: *const FORMATETC,
462        pformatetcOut: *const FORMATETC,
463        fRelease: BOOL,
464    ) -> HRESULT,
465    fn EnumFormatEtc(
466        dwDirection: DWORD,
467        ppenumFormatEtc: *mut *mut IEnumFORMATETC,
468    ) -> HRESULT,
469    fn DAdvise(
470        pformatetc: *const FORMATETC,
471        advf: DWORD,
472        pAdvSInk: *const IAdviseSink,
473        pdwConnection: *mut DWORD,
474    ) -> HRESULT,
475    fn DUnadvise(
476        dwConnection: DWORD,
477    ) -> HRESULT,
478    fn EnumDAdvise(
479        ppenumAdvise: *const *const IEnumSTATDATA,
480    ) -> HRESULT,
481}}
482RIDL!{#[uuid(0xa2f05a09, 0x27a2, 0x42b5, 0xbc, 0x0e, 0xac, 0x16, 0x3e, 0xf4, 0x9d, 0x9b)]
483interface IApartmentShutdown(IApartmentShutdownVtbl): IUnknown(IUnknownVtbl) {
484    fn OnUninitialize(
485        ui64ApartmentIdentifier: UINT64,
486    ) -> (),
487}}
488RIDL!{#[uuid(0x00000003, 0x0000, 0x0000, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46)]
489interface IMarshal(IMarshalVtbl): IUnknown(IUnknownVtbl) {
490    fn GetUnmarshalClass(
491        riid: REFIID,
492        pv: *mut c_void,
493        dwDestContext: DWORD,
494        pvDestContext: *mut c_void,
495        mshlflags: DWORD,
496        pCid: *mut CLSID,
497    ) -> HRESULT,
498    fn GetMarshalSizeMax(
499        riid: REFIID,
500        pv: *mut c_void,
501        dwDestContext: DWORD,
502        pvDestContext: *mut c_void,
503        mshlflags: DWORD,
504        pSize: *mut DWORD,
505    ) -> HRESULT,
506    fn MarshalInterface(
507        pStm: *mut IStream,
508        riid: REFIID,
509        pv: *mut c_void,
510        dwDestContext: DWORD,
511        pvDestContext: *mut c_void,
512        mshlflags: DWORD,
513    ) -> HRESULT,
514    fn UnmarshalInterface(
515        pStm: *mut IStream,
516        riid: REFIID,
517        ppv: *mut *mut c_void,
518    ) -> HRESULT,
519    fn ReleaseMarshalData(
520        pStm: *mut IStream,
521    ) -> HRESULT,
522    fn DisconnectObject(
523        dwReserved: DWORD,
524    ) -> HRESULT,
525}}