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 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 /* _UNKNOWN_H_ */ 74 75