windows-nt/Source/XPSP1/NT/multimedia/media/avi/avifile/aviview/regobjs.cpp
2020-09-26 16:20:57 +08:00

163 lines
2.7 KiB
C++

/* - - - - - - - - */
/*
** Copyright (C) Microsoft Corporation 1993. All rights reserved.
*/
/* - - - - - - - - */
#include <windows.h>
#include <windowsx.h>
#include <string.h>
#include <mmsystem.h>
#include <compobj.h>
#include "aviview.h"
#include <ole2.h>
#include <vfw.h>
#include "regobjs.h"
/*
** The usage counter keeps track of the overall usage of objects based on
** implementations provided by the component. This allows one to determine
** when the implementation is no longer in use.
*/
UINT uUseCount;
BOOL fLocked;
IClassFactory FAR * gpCF;
DWORD gdwRegistered;
extern "C" BOOL RegisterObjects(void);
extern "C" void RevokeObjects(void);
BOOL RegisterObjects(void)
{
#if 0
HRESULT hresult;
#endif
// OleInitialize(NULL);
#if 0
CAppCF::MakeInst(CLSID_ACMCmprsStream, IID_IClassFactory,
(void FAR * FAR *) &gpCF);
hresult = CoRegisterClassObject(CLSID_ACMCmprsStream,
gpCF,
CLSCTX_INPROC_SERVER,
REGCLS_MULTIPLEUSE,
&gdwRegistered);
if (FAILED(GetScode(hresult))) {
delete gpCF;
gpCF = NULL;
return FALSE;
}
#endif
return TRUE;
}
void RevokeObjects(void)
{
#if 0
CoRevokeClassObject(gdwRegistered);
#endif
// OleUninitialize();
}
/* - - - - - - - - */
HRESULT CAppCF::MakeInst(
const CLSID FAR& rclsid,
const IID FAR& riid,
void FAR* FAR* ppv)
{
CAppCF FAR* pAppCF;
IUnknown FAR* pUnknown;
HRESULT hresult;
pAppCF = new FAR CAppCF(rclsid, &pUnknown);
if (pAppCF == NULL)
return ResultFromScode(E_OUTOFMEMORY);
hresult = pUnknown->QueryInterface(riid, ppv);
if (FAILED(GetScode(hresult)))
delete pAppCF;
return hresult;
}
/* - - - - - - - - */
CAppCF::CAppCF(
const CLSID FAR& rclsid,
IUnknown FAR* FAR* ppUnknown)
{
m_clsid = rclsid;
m_refs = 0;
*ppUnknown = this;
}
/* - - - - - - - - */
STDMETHODIMP CAppCF::QueryInterface(
const IID FAR& iid,
void FAR* FAR* ppv)
{
if (iid == IID_IUnknown)
*ppv = this;
else if (iid == IID_IClassFactory)
*ppv = this;
else
return ResultFromScode(E_NOINTERFACE);
AddRef();
return NULL;
}
/* - - - - - - - - */
STDMETHODIMP_(ULONG) CAppCF::AddRef()
{
return ++m_refs;
}
/* - - - - - - - - */
STDMETHODIMP_(ULONG) CAppCF::Release()
{
if (!--m_refs) {
delete this;
return 0;
}
return m_refs;
}
/* - - - - - - - - */
STDMETHODIMP CAppCF::CreateInstance(
IUnknown FAR* pUnknownOuter,
const IID FAR& riid,
void FAR* FAR* ppv)
{
#if 0
if (IsEqualCLSID(m_clsid, CLSID_ACMCmprsStream)) {
return CACMCmpStream::MakeInst(pUnknownOuter, riid, ppv);
}
else
#endif
{
return ResultFromScode(CO_E_CANTDETERMINECLASS); // !!!
}
}
/* - - - - - - - - */
STDMETHODIMP CAppCF::LockServer(
BOOL fLock)
{
fLocked = fLock;
return NULL;
}
/* - - - - - - - - */