windows-nt/Source/XPSP1/NT/com/oleutest/server2/olesrv.hxx
2020-09-26 16:20:57 +08:00

146 lines
3.4 KiB
C++

//+-------------------------------------------------------------------
//
// File: oleimpl.hxx
//
// Contents: This file contins the DLL entry points
// LibMain
// DllGetClassObject (Bindings key func)
// DllCanUnloadNow
// CBasicBndCF (class factory)
// History: 30-Mar-92 SarahJ Created
// 31-Dec-93 ErikGav Chicago port
//
//---------------------------------------------------------------------
#ifndef __OLESRV_H__
#define __OLESRV_H__
#include <smartp.hxx>
DefineSmartItfP(IClassFactory)
//+---------------------------------------------------------------------------
//
// Function: operator new, public
//
// Synopsis: Global operator new which does not throw exceptions.
//
// Arguments: [size] -- Size of the memory to allocate.
//
// Returns: A pointer to the allocated memory. Is *NOT* initialized to 0!
//
// Notes: We override new to make delete easier.
//
//----------------------------------------------------------------------------
inline void* __cdecl
operator new (size_t size)
{
return(CoTaskMemAlloc(size));
}
//+-------------------------------------------------------------------------
//
// Function: ::operator delete
//
// Synopsis: Free a block of memory
//
// Arguments: [lpv] - block to free.
//
//--------------------------------------------------------------------------
inline void __cdecl operator delete(void FAR* lpv)
{
CoTaskMemFree(lpv);
}
//+-------------------------------------------------------------------
//
// Class: CBasicBndCF
//
// Synopsis: Class Factory for CBasicBnd
//
// Methods: IUnknown - QueryInterface, AddRef, Release
// IClassFactory - CreateInstance
//
// History: 21-Mar-92 SarahJ Created
//
//--------------------------------------------------------------------
class CAdvBndCF: public IClassFactory
{
public:
// Constructor/Destructor
CAdvBndCF();
~CAdvBndCF();
static IClassFactory FAR * Create();
// IUnknown
STDMETHODIMP QueryInterface(REFIID iid, void FAR * FAR * ppv);
STDMETHODIMP_(ULONG) AddRef (void);
STDMETHODIMP_(ULONG) Release (void);
// IClassFactory
STDMETHODIMP CreateInstance(
IUnknown FAR* pUnkOuter,
REFIID iidInterface,
void FAR* FAR* ppv);
STDMETHODIMP LockServer(BOOL fLock);
private:
XIClassFactory _xifac;
DWORD _dwRegistration;
ULONG _cRefs;
};
//+-------------------------------------------------------------------
//
// Class: CAdvBnd
//
// Synopsis: Test class CBasicBnd
//
// Methods:
//
// History: 21-Mar-92 SarahJ Created
//
//--------------------------------------------------------------------
class CAdvBnd: public IPersistFile
{
public:
CAdvBnd(IClassFactory *pFactory);
~CAdvBnd();
// IUnknown
STDMETHODIMP QueryInterface(REFIID iid, void FAR * FAR * ppv);
STDMETHODIMP_(ULONG) AddRef (void);
STDMETHODIMP_(ULONG) Release (void);
// IPersitFile
STDMETHODIMP GetClassID(LPCLSID lpClassID);
STDMETHODIMP IsDirty();
STDMETHODIMP Load(LPCWSTR lpszFileName, DWORD grfMode);
STDMETHODIMP Save(LPCWSTR lpszFileName, BOOL fRemember);
STDMETHODIMP SaveCompleted(LPCWSTR lpszFileName);
STDMETHODIMP GetCurFile(LPWSTR FAR * lpszFileName);
private:
XIUnknown _xiunk;
DWORD _dwRegister;
ULONG _cRefs;
};
#endif