Sync with trunk (r48545)
[reactos.git] / include / psdk / unknown.h
1 /*
2 * unknown.h
3 *
4 * Contributors:
5 * Created by Magnus Olsen
6 *
7 * THIS SOFTWARE IS NOT COPYRIGHTED
8 *
9 * This source code is offered for use in the public domain. You may
10 * use, modify or distribute it freely.
11 *
12 * This code is distributed in the hope that it will be useful but
13 * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
14 * DISCLAIMED. This includes but is not limited to warranties of
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
16 *
17 */
18
19 #ifndef __unknwn_h__
20 #define __unknwn_h__
21
22 #ifdef __cplusplus
23 extern "C" {
24 #include <wdm.h>
25 }
26 #else
27 #include <wdm.h>
28 #endif
29
30 #include <windef.h>
31 #define COM_NO_WINDOWS_H
32 #include <basetyps.h>
33 #ifdef PUT_GUIDS_HERE
34 #include <initguid.h>
35 #endif
36
37 DEFINE_GUID(IID_IUnknown, 0x00000000, 0x0000, 0x0000, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46);
38 #if defined(__cplusplus) && _MSC_VER >= 1100
39 struct __declspec(uuid("00000000-0000-0000-C000-000000000046")) IUnknown;
40 #endif
41
42 #undef INTERFACE
43 #define INTERFACE IUnknown
44 DECLARE_INTERFACE(IUnknown)
45 {
46 STDMETHOD(QueryInterface)
47 ( THIS_
48 IN REFIID,
49 OUT PVOID *
50 ) PURE;
51
52 STDMETHOD_(ULONG,AddRef)
53 ( THIS
54 ) PURE;
55
56 STDMETHOD_(ULONG,Release)
57 ( THIS
58 ) PURE;
59 };
60 #undef INTERFACE
61
62 typedef IUnknown *PUNKNOWN;
63 typedef
64 HRESULT
65 (NTAPI *PFNCREATEINSTANCE)
66 (
67 OUT PUNKNOWN * Unknown,
68 IN REFCLSID ClassId,
69 IN PUNKNOWN OuterUnknown,
70 IN POOL_TYPE PoolType
71 );
72
73 #endif
74