22#error KS.H must be included before KCOM.H
28#if defined(__cplusplus)
32#define STATIC_KoCreateObject 0x72CF721CL, 0x525A, 0x11D1, {0x9A, 0xA1, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96}
34#define KOSTRING_CreateObject L"{72CF721C-525A-11D1-9AA1-00A0C9223196}"
36#ifndef CLSCTX_KERNEL_SERVER
37#define CLSCTX_KERNEL_SERVER 0x00000200
40#if !defined(__cplusplus) || _MSC_VER < 1100
42#define STATIC_IID_IKoInitializeParentDeviceObject 0x21B36996, 0x8DE3, 0x11D1, 0x8A, 0xE0, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96
47interface __declspec(
uuid(
"21B36996-8DE3-11D1-8AE0-00A0C9223196")) IKoInitializeParentDeviceObject;
55#define COMDDKMETHOD DECLSPEC_IMPORT
62#define COMDDKAPI DECLSPEC_IMPORT
74#define INTERFACE INonDelegatedUnknown
92#define INTERFACE IIndirectedUnknown
110#define INTERFACE IKoInitializeParentDeviceObject
118#if defined(__cplusplus)
120class CBaseUnknown :
public INonDelegatedUnknown,
public IIndirectedUnknown {
140#if !defined(DEFINE_ABSTRACT_UNKNOWN)
141#define DEFINE_ABSTRACT_UNKNOWN() \
142 STDMETHOD(QueryInterface)(THIS_ REFIID InterfaceId, PVOID* Interface) PURE; \
143 STDMETHOD_(ULONG,AddRef)(THIS) PURE; \
144 STDMETHOD_(ULONG,Release)(THIS) PURE;
147#define DEFINE_STD_UNKNOWN() \
148 STDMETHODIMP NonDelegatedQueryInterface( REFIID InterfaceId, PVOID* Interface); \
149 STDMETHODIMP QueryInterface( REFIID InterfaceId, PVOID* Interface); \
150 STDMETHODIMP_(ULONG) AddRef(); \
151 STDMETHODIMP_(ULONG) Release();
153#define IMPLEMENT_STD_UNKNOWN(Class) \
154 STDMETHODIMP Class::QueryInterface( REFIID InterfaceId, PVOID* Interface) { \
155 return m_UnknownOuter->QueryInterface(InterfaceId, Interface);\
157 STDMETHODIMP_(ULONG) Class::AddRef() { \
158 return m_UnknownOuter->AddRef(); \
160 STDMETHODIMP_(ULONG) Class::Release() { \
161 return m_UnknownOuter->Release(); \
199#if defined(__cplusplus)
205#ifndef _NEW_DELETE_OPERATORS_
206#define _NEW_DELETE_OPERATORS_
208inline PVOID operator new(
219inline PVOID operator new(
231inline void __cdecl operator delete(
237inline void __cdecl operator delete(
245#if defined(_SYS_GUID_OPERATOR_EQ_)
246#define _GUID_OPERATORS_
250#ifndef _GUID_OPERATORS_
251#define _GUID_OPERATORS_
258 return !(guidOne == guidOther);
bool _STLP_CALL operator!=(const allocator< _T1 > &, const allocator< _T2 > &) _STLP_NOTHROW
#define DECLARE_INTERFACE_(i, b)
#define DECLARE_INTERFACE(i)
#define DEFINE_GUIDEX(name)
#define ExAllocatePoolWithTag(hernya, size, tag)
void __declspec(noinline) __cdecl _free_base(void *const block)
COMDDKAPI NTSTATUS NTAPI KoDeviceInitialize(IN PDEVICE_OBJECT DeviceObject)
NTSTATUS(* KoCreateObjectHandler)(IN REFCLSID ClassId, IN IUnknown *UnkOuter OPTIONAL, IN REFIID InterfaceId, OUT PVOID *Interface)
COMDDKAPI void NTAPI KoRelease(IN REFCLSID ClassId)
COMDDKAPI NTSTATUS NTAPI KoDriverInitialize(IN PDRIVER_OBJECT DriverObject, IN PUNICODE_STRING RegistryPathName, IN KoCreateObjectHandler CreateObjectHandler)
COMDDKAPI NTSTATUS NTAPI KoCreateInstance(IN REFCLSID ClassId, IN IUnknown *UnkOuter OPTIONAL, IN ULONG ClsContext, IN REFIID InterfaceId, OUT PVOID *Interface)
#define DEFINE_GUIDSTRUCT(guid, name)
unsigned __int3264 UINT_PTR
PULONG MinorVersion OPTIONAL
bool operator==(const TKeyDef &t1, const TKeyDef &t2)
#define RtlZeroMemory(Destination, Length)
_In_ PDEVICE_OBJECT DeviceObject
_Must_inspect_result_ _In_ PDRIVER_OBJECT DriverObject
_Must_inspect_result_ _In_ WDFDEVICE _In_ LPCGUID _Out_ PINTERFACE Interface
#define IsEqualGUIDAligned(guid1, guid2)