xref: /reactos/sdk/include/psdk/unknwn.idl (revision 80774a2f)
1/*
2 * Copyright 2002 Ove Kaaven
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#ifndef DO_NO_IMPORTS
20import "wtypes.idl";
21#endif
22
23cpp_quote("#ifdef __WINESRC__")
24cpp_quote("#define WIDL_C_INLINE_WRAPPERS")
25cpp_quote("#endif")
26
27cpp_quote("#ifdef WIDL_C_INLINE_WRAPPERS")
28cpp_quote("#define SAVE_WIDL_C_INLINE_WRAPPERS")
29cpp_quote("#undef WIDL_C_INLINE_WRAPPERS")
30cpp_quote("#endif")
31
32[
33  local,
34  object,
35  uuid(00000000-0000-0000-C000-000000000046),
36  pointer_default(unique)
37]
38interface IUnknown
39{
40  typedef [unique] IUnknown *LPUNKNOWN;
41
42  HRESULT QueryInterface(
43    [in] REFIID riid,
44    [out, iid_is(riid)] void **ppvObject);
45  ULONG AddRef();
46  ULONG Release();
47}
48
49cpp_quote("HRESULT STDMETHODCALLTYPE IUnknown_QueryInterface_Proxy(IUnknown* This, REFIID riid, void **ppvObject);")
50cpp_quote("void __RPC_STUB IUnknown_QueryInterface_Stub(IRpcStubBuffer* This, IRpcChannelBuffer* pRpcChannelBuffer,")
51cpp_quote("     PRPC_MESSAGE pRpcMessage, DWORD* pdwStubPhase);")
52cpp_quote("ULONG STDMETHODCALLTYPE IUnknown_AddRef_Proxy(IUnknown* This);")
53cpp_quote("void __RPC_STUB IUnknown_AddRef_Stub(IRpcStubBuffer* This, IRpcChannelBuffer* pRpcChannelBuffer,")
54cpp_quote("     PRPC_MESSAGE pRpcMessage, DWORD* pdwStubPhase);")
55cpp_quote("ULONG STDMETHODCALLTYPE IUnknown_Release_Proxy(IUnknown* This);")
56cpp_quote("void __RPC_STUB IUnknown_Release_Stub(IRpcStubBuffer* This, IRpcChannelBuffer* pRpcChannelBuffer,")
57cpp_quote("     PRPC_MESSAGE pRpcMessage, DWORD* pdwStubPhase);")
58
59cpp_quote("#ifdef SAVE_WIDL_C_INLINE_WRAPPERS")
60cpp_quote("#define WIDL_C_INLINE_WRAPPERS")
61cpp_quote("#endif")
62
63[
64  object,
65  uuid(00000001-0000-0000-C000-000000000046),
66  pointer_default(unique)
67]
68interface IClassFactory : IUnknown
69{
70  typedef [unique] IClassFactory *LPCLASSFACTORY;
71
72  [local]
73  HRESULT CreateInstance(
74    [in, unique] IUnknown *pUnkOuter,
75    [in] REFIID riid,
76    [out, iid_is(riid)] void **ppvObject);
77
78  [call_as(CreateInstance)]
79  HRESULT RemoteCreateInstance(
80    [in] REFIID riid,
81    [out, iid_is(riid)] IUnknown **ppvObject);
82
83  [local]
84  HRESULT LockServer(
85    [in] BOOL fLock);
86
87  [call_as(LockServer)]
88  HRESULT RemoteLockServer(
89    [in] BOOL fLock);
90}
91