[PSDK]
[reactos.git] / include / reactos / 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 #ifndef _MSC_VER
33 strict_context_handle
34 #endif
35 ]
36 interface Irot
37 {
38 typedef struct tagInterfaceData
39 {
40 ULONG ulCntData;
41 [size_is(ulCntData)] BYTE abData[];
42 } InterfaceData;
43
44 typedef [unique] InterfaceData *PInterfaceData;
45
46 typedef struct tagInterfaceList
47 {
48 ULONG size;
49 [size_is(size)] PInterfaceData interfaces[];
50 } InterfaceList;
51
52 typedef [unique] InterfaceList *PInterfaceList;
53
54 typedef DWORD IrotCookie;
55
56 typedef handle_t IrotHandle;
57 typedef [context_handle] void *IrotContextHandle;
58
59 HRESULT IrotRegister(
60 [in] IrotHandle h,
61 [in] const MonikerComparisonData *moniker_data,
62 [in] const InterfaceData *object,
63 [in] const InterfaceData *moniker,
64 [in] const FILETIME *time,
65 [in] DWORD grfFlags,
66 [out] IrotCookie *cookie,
67 [out] IrotContextHandle *ctxt_handle);
68
69 HRESULT IrotRevoke(
70 [in] IrotHandle h,
71 [in] IrotCookie cookie,
72 [in, out] IrotContextHandle *ctxt_handle,
73 [out] PInterfaceData *object,
74 [out] PInterfaceData *moniker);
75
76 HRESULT IrotIsRunning(
77 [in] IrotHandle h,
78 [in] const MonikerComparisonData *moniker_data);
79
80 HRESULT IrotGetObject(
81 [in] IrotHandle h,
82 [in] const MonikerComparisonData *moniker_data,
83 [out] PInterfaceData *obj,
84 [out] IrotCookie *cookie);
85
86 HRESULT IrotNoteChangeTime(
87 [in] IrotHandle h,
88 [in] IrotCookie cookie,
89 [in] const FILETIME *time);
90
91 HRESULT IrotGetTimeOfLastChange(
92 [in] IrotHandle h,
93 [in] const MonikerComparisonData *moniker_data,
94 [out] FILETIME *time);
95
96 HRESULT IrotEnumRunning(
97 [in] IrotHandle h,
98 [out] PInterfaceList *list);
99 }