/* ReactOS Kernel-Mode COM by Andrew Greenwood This file is in the public domain. */ #ifndef _UNKNOWN_H_ #define _UNKNOWN_H_ #ifdef __cplusplus extern "C" { #include } #else #include #endif #include #define COM_NO_WINDOWS_H #include #ifdef PUT_GUIDS_HERE #include #endif /* =============================================================== IUnknown */ #ifndef __IUnknown_INTERFACE_DEFINED__ #define __IUnknown_INTERFACE_DEFINED__ DEFINE_GUID(IID_IUnknown, 0x00000000, 0x0000, 0x0000, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x46); #undef INTERFACE #define INTERFACE IUnknown DECLARE_INTERFACE(IUnknown) { STDMETHOD_(NTSTATUS, QueryInterface)( THIS_ _In_ REFIID, _COM_Outptr_ PVOID*) PURE; STDMETHOD_(ULONG, AddRef)( THIS ) PURE; STDMETHOD_(ULONG, Release)( THIS ) PURE; }; #endif /* __IUnknown_INTERFACE_DEFINED__ */ #undef INTERFACE typedef IUnknown *PUNKNOWN; /* =============================================================== IUnknown definition Boilerplate code macro for use in subclassed interfaces */ #define DEFINE_ABSTRACT_UNKNOWN() \ STDMETHOD_(NTSTATUS, QueryInterface)( THIS_ \ REFIID InterfaceId, \ PVOID* Interface) PURE; \ \ STDMETHOD_(ULONG, AddRef)(THIS) PURE; \ \ STDMETHOD_(ULONG, Release)(THIS) PURE; /* =============================================================== Constructor callback definition */ typedef HRESULT (NTAPI *PFNCREATEINSTANCE)( _Out_ PUNKNOWN* Unknown, _In_ REFCLSID ClassId, _In_ PUNKNOWN OuterUnknown, _In_ POOL_TYPE PoolType); #endif /* _UNKNOWN_H_ */