strmbase: Have BaseControlWindow use BaseDispatch.
[wine] / include / wine / irot.idl
1 /*
2  * Copyright 2007 Robert Shearman for CodeWeavers
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 "wtypes.idl";
20
21 cpp_quote("#define IROT_PROTSEQ {'n','c','a','l','r','p','c',0}")
22 cpp_quote("#define IROT_ENDPOINT {'i','r','o','t',0}")
23
24 typedef struct tagMonikerComparisonData {
25         ULONG ulCntData;
26         [size_is(ulCntData)] BYTE abData[];
27 } MonikerComparisonData;
28
29 [
30     uuid(7a98c254-6808-11cf-b73b-00aa00b677a8),
31     version(0.2),
32     strict_context_handle
33 ]
34 interface Irot
35 {
36         typedef struct tagInterfaceData
37         {
38                 ULONG ulCntData;
39                 [size_is(ulCntData)] BYTE abData[];
40         } InterfaceData;
41
42         typedef [unique] InterfaceData *PInterfaceData;
43
44         typedef struct tagInterfaceList
45         {
46                 ULONG size;
47                 [size_is(size)] PInterfaceData interfaces[];
48         } InterfaceList;
49
50         typedef [unique] InterfaceList *PInterfaceList;
51
52         typedef DWORD IrotCookie;
53
54         typedef handle_t IrotHandle;
55         typedef [context_handle] void *IrotContextHandle;
56
57         HRESULT IrotRegister(
58                 [in]  IrotHandle h,
59                 [in]  const MonikerComparisonData *moniker_data,
60                 [in]  const InterfaceData *object,
61                 [in]  const InterfaceData *moniker,
62                 [in]  const FILETIME *time,
63                 [in]  DWORD grfFlags,
64                 [out] IrotCookie *cookie,
65                 [out] IrotContextHandle *ctxt_handle);
66
67         HRESULT IrotRevoke(
68                 [in]  IrotHandle h,
69                 [in]  IrotCookie cookie,
70                 [in, out] IrotContextHandle *ctxt_handle,
71                 [out] PInterfaceData *object,
72                 [out] PInterfaceData *moniker);
73
74         HRESULT IrotIsRunning(
75                 [in]  IrotHandle h,
76                 [in]  const MonikerComparisonData *moniker_data);
77
78         HRESULT IrotGetObject(
79                 [in]  IrotHandle h,
80                 [in]  const MonikerComparisonData *moniker_data,
81                 [out] PInterfaceData *obj,
82                 [out] IrotCookie *cookie);
83
84         HRESULT IrotNoteChangeTime(
85                 [in]  IrotHandle h,
86                 [in]  IrotCookie cookie,
87                 [in]  const FILETIME *time);
88
89         HRESULT IrotGetTimeOfLastChange(
90                 [in]  IrotHandle h,
91                 [in]  const MonikerComparisonData *moniker_data,
92                 [out] FILETIME *time);
93
94         HRESULT IrotEnumRunning(
95                 [in]  IrotHandle h,
96                 [out] PInterfaceList *list);
97 }