forked from sin365/AxibugEmuOnline
36 lines
594 B
C++
36 lines
594 B
C++
//
|
||
// COM—˜—pƒTƒ|<7C>[ƒgƒNƒ‰ƒX
|
||
//
|
||
#include <objbase.h>
|
||
#include "DebugOut.h"
|
||
#include "Com.h"
|
||
|
||
INT COM::m_nRefCount = 0;
|
||
|
||
LRESULT COM::AddRef()
|
||
{
|
||
if( !m_nRefCount ) {
|
||
HRESULT hr;
|
||
if( (hr = ::CoInitialize( NULL )) != S_OK ) {
|
||
DEBUGOUT( "COM::AddRef() CoInitialize failed.\n" );
|
||
return hr;
|
||
}
|
||
DEBUGOUT( "COM::AddRef() CoInitialize.\n" );
|
||
}
|
||
m_nRefCount++;
|
||
return 0L;
|
||
}
|
||
|
||
void COM::Release()
|
||
{
|
||
if( !m_nRefCount ) {
|
||
DEBUGOUT( "COM::Release() too many released.\n" );
|
||
return;
|
||
}
|
||
if( !(--m_nRefCount) ) {
|
||
::CoUninitialize();
|
||
DEBUGOUT( "COM::AddRef() CoUninitialize.\n" );
|
||
}
|
||
}
|
||
|