2 ReactOS Kernel-Mode COM
3 IUnknown implementations
6 Please see COPYING in the top-level directory for license information.
23 result
= ExAllocatePoolWithTag(pool_type
, size
, tag
);
26 RtlZeroMemory(result
, size
);
37 return KCOM_New(size
, pool_type
, 'wNcP');
47 return KCOM_New(size
, pool_type
, tag
);
66 CUnknown::CUnknown(PUNKNOWN outer_unknown
)
71 m_outer_unknown
= outer_unknown
;
73 m_outer_unknown
= PUNKNOWN(dynamic_cast<PNONDELEGATINGUNKNOWN
>(this));
81 CUnknown::NonDelegatingAddRef()
83 InterlockedIncrement(&m_ref_count
);
88 CUnknown::NonDelegatingRelease()
90 if ( InterlockedDecrement(&m_ref_count
) == 0 )
100 STDMETHODIMP_(NTSTATUS
)
101 CUnknown::NonDelegatingQueryInterface(
107 if ( IsEqualGUID(iid
, IID_IUnknown
) ) /* TODO: Aligned? */
108 *ppVoid
= PVOID(PUNKNOWN(this));
115 PUNKNOWN(*ppVoid
)->AddRef();
116 return STATUS_SUCCESS
;
119 return STATUS_INVALID_PARAMETER
;
123 extern "C" void __cxa_pure_virtual() { ASSERT(FALSE
); }