2 ReactOS Kernel-Mode COM
3 IUnknown implementations
6 Please see COPYING in the top-level directory for license information.
14 CUnknown::CUnknown(PUNKNOWN outer_unknown
)
19 m_outer_unknown
= outer_unknown
;
21 m_outer_unknown
= PUNKNOWN(dynamic_cast<PNONDELEGATINGUNKNOWN
>(this));
29 CUnknown::NonDelegatingAddRef()
31 InterlockedIncrement(&m_ref_count
);
36 CUnknown::NonDelegatingRelease()
38 if ( InterlockedDecrement(&m_ref_count
) == 0 )
48 STDMETHODIMP_(NTSTATUS
)
49 CUnknown::NonDelegatingQueryInterface(
55 if ( IsEqualGUID(iid
, IID_IUnknown
) ) /* TODO: Aligned? */
56 *ppVoid
= PVOID(PUNKNOWN(this));
63 PUNKNOWN(*ppVoid
)->AddRef();
64 return STATUS_SUCCESS
;
67 return STATUS_INVALID_PARAMETER
;
71 extern "C" void __cxa_pure_virtual() { ASSERT(FALSE
); }