stdunk.c
来自「这是一个开放源代码的与WINNT/WIN2K/WIN2003兼容的操作系统」· C语言 代码 · 共 63 行
C
63 行
/*
"Unknown" implementation, in C
by Andrew Greenwood
Not quite sure how this is used, but the C++ variant is intended for
implementing a NonDelegatingUnknown object
*/
#include <stdunk.h>
STDMETHODCALLTYPE
NTSTATUS
Unknown_QueryInterface(
IUnknown* this,
IN REFIID refiid,
OUT PVOID* output)
{
/* TODO */
return STATUS_SUCCESS;
}
STDMETHODCALLTYPE
ULONG
Unknown_AddRef(
IUnknown* unknown_this)
{
struct CUnknown* this = CONTAINING_RECORD(unknown_this, struct CUnknown, IUnknown);
InterlockedIncrement(&this->m_ref_count);
return this->m_ref_count;
}
STDMETHODCALLTYPE
ULONG
Unknown_Release(
IUnknown* unknown_this)
{
struct CUnknown* this = CONTAINING_RECORD(unknown_this, struct CUnknown, IUnknown);
InterlockedDecrement(&this->m_ref_count);
if ( this->m_ref_count == 0 )
{
ExFreePool(this);
return 0;
}
return this->m_ref_count;
}
/*
The vtable for Unknown
*/
const IUnknownVtbl UnknownVtbl =
{
Unknown_QueryInterface,
Unknown_AddRef,
Unknown_Release
};
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?