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 _UNKNOWN_H_
20#define _UNKNOWN_H_
21
22#ifdef __cplusplus
23extern "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
37DEFINE_GUID(IID_IUnknown, 0x00000000, 0x0000, 0x0000, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46);
38#if defined(__cplusplus) && _MSC_VER >= 1100
39struct __declspec(uuid("00000000-0000-0000-C000-000000000046")) IUnknown;
40#endif
41
42#undef INTERFACE
43#define INTERFACE IUnknown
44DECLARE_INTERFACE(IUnknown)
45{
46    STDMETHOD(QueryInterface)
47    (   THIS_
48		REFIID,
49		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
62typedef IUnknown *PUNKNOWN;
63typedef
64HRESULT
65(NTAPI *PFNCREATEINSTANCE)
66(
67  PUNKNOWN * Unknown,
68  REFCLSID   ClassId,
69  PUNKNOWN   OuterUnknown,
70  POOL_TYPE  PoolType
71);
72
73#endif /* _UNKNOWN_H_ */
74
75