Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

395 lines
7.8 KiB

//+-------------------------------------------------------------------------
//
// Microsoft OLE
// Copyright (C) Microsoft Corporation, 1994 - 1995.
//
// File: tstclass.hxx
//
// Contents: These are the test classes that marina defines.
// They should be used by tests dll's.
//
// Classes: CMApplication
// CMDocument
// CMOleObject
//
// Functions:
//
// History: 09-26-95 alexe Cleaned things up, added more
// marina functions
// 06-27-95 alexe Made everything WCHAR based
// 12-05-94 kennethm Created
//
//--------------------------------------------------------------------------
#ifndef __TSTCLASS_HXX__
#define __TSTCLASS_HXX__
//
// The hack below is due to a risc compiler problem.
// We have to specify DllExport or Import at definition
// time.
//
#define DllExport __declspec(dllexport)
#define DllImport __declspec(dllimport)
#ifdef MARINADLL
#define DllScope DllExport
#else
#define DllScope DllImport
#endif
//
// Defines for the object types
// Do not modify this value without matching changes in marina's idl file
//
typedef enum tagObjectType {
eServer = 1,
eContainer,
eLink
} OBJECTTYPE;
//
// Forward declarations
//
class DllScope CMObject;
class DllScope CMDocument;
class DllScope CMApplication;
//+-------------------------------------------------------------------------
//
// Class: CMApplication
//
// Purpose:
//
// Interface: CreateAndLaunch
// Close
// CreateDoc
// CreateDocEx
// OpenDoc
// CloseAllDocs
// GetDocumentCount
// CallFunction
// IsEqual
//
// ~CMApplication
// CMApplication
//
// History: 1-18-95 kennethm Created
//
// Notes:
//
//--------------------------------------------------------------------------
class DllScope CMApplication
{
public:
//
// Static create function
//
static HRESULT CreateAndLaunch(
CMApplication** ppNewApplication,
LPTSTR pszAppName);
//
// Close the application
//
HRESULT Close(
LPVOID pvArgs,
size_t cbArgs) ;
//
// Makes a new document inside this application
//
HRESULT CreateDoc(
CMDocument **ppNewDocument,
LPVOID pvArgs,
size_t cbArgs) ;
HRESULT CreateDocEx(
CMDocument **ppNewDocument,
LPWSTR pszFunctionName,
LPVOID pvArgs,
size_t cbArgs) ;
//
// Open a document
//
HRESULT OpenDoc(
CMDocument **ppNewDocument,
LPVOID pvArgs,
size_t cbArgs) ;
//
// Close all documents
//
HRESULT CloseAllDocs(
LPVOID pvArgs,
size_t cbArgs) ;
//
// Get the total number of documents
//
HRESULT GetDocumentCount(
LPVOID pvArgs,
size_t cbArgs,
DWORD *pdwCount) ;
//
// Run a function on the application side
//
HRESULT CallFunction(
LPWSTR pszFunctionName,
PVOID pvParamIn,
size_t stParamSizeIn,
PLONG plResultOut,
PVOID *ppvParamOut,
size_t *pstParamSizeOut);
//
// Check to see if this is equal to another CMApplication object.
//
BOOL IsEqual(CMApplication* pOtherApp);
~CMApplication();
CMApplication(HANDLE hMySelf, HANDLE hProcess);
private:
//
// Constructor. Use the static createandlaunch function to
// create an application
//
CMApplication();
//
// Global reference for this application
//
HANDLE m_hMySelf;
//
// This applications entry in the slip table
//
HANDLE m_hSlipEntry;
//
// This is the process handle of the application.
// Used in the close method to wait for application to actually
// close.
//
HANDLE m_hProcess ;
};
//+-------------------------------------------------------------------------
//
// Class: CMDocument
//
// Purpose:
//
// Interface: CMDocument(handle)
// Save
// Close
// Copy
// InsertObject
// GetObject
// GetApplication
// IsEqual
// CallFunction
//
// History: 1-18-95 kennethm Created
//
// Notes:
//
//--------------------------------------------------------------------------
class DllScope CMDocument
{
public:
//
// Constructor. Called normally by CMApplication::CreateDoc
//
CMDocument(HANDLE hMySelf)
{
m_hMySelf = hMySelf;
}
//
// Save the document
//
HRESULT Save(
LPVOID pvArgs,
size_t cbArgs) ;
//
// Close the document
//
HRESULT Close(
LPVOID pvArgs,
size_t cbArgs) ;
//
// Copies the document to the clipboard
//
HRESULT CopyDocument(LPVOID pvArgs, size_t cbArgs) ;
//
// Insert an object
//
HRESULT InsertObject(
LPVOID pvArgs,
size_t cbArgs,
CMObject **ppMObject);
//
// Get child object of document
//
HRESULT GetObject(
LPVOID pvArgs,
size_t cbArgs,
CMObject **ppMObject);
//
// Return pointer to parent CMAppliation class
//
HRESULT GetApplication(CMApplication** ppApplication);
//
// Check to see if this is equal to another CMDocument object.
//
BOOL IsEqual(CMDocument* pOtherDoc);
//
// Calls the named function on this document
//
HRESULT CallFunction(
LPWSTR pszFunctionName,
PVOID pvParamIn,
size_t stParamSizeIn,
PLONG plResultOut,
PVOID *ppvParamOut,
size_t *pstParamSizeOut);
//
// Get the total number of objects
//
HRESULT GetObjectCount(
LPVOID pvArgs,
size_t cbArgs,
DWORD *pdwCount) ;
private:
//
// This is not a slip table handle. This is the handle that
// references this document on a system wide basis.
//
HANDLE m_hMySelf;
};
//+-------------------------------------------------------------------------
//
// Class: CMObject
//
// Purpose:
//
// Interface: CMObject(handle)
// GetServerDocument
// CopyObject
// ActivateObject
// CallFunction
//
// History: 12-18-95 kennethm Created
//
// Notes:
//
//--------------------------------------------------------------------------
class DllScope CMObject
{
public:
CMObject(HANDLE hSlipEntry);
~CMObject();
//
// Returns this objects representation on the server side
//
HRESULT GetServerDocument(
LPCWSTR pszFileName,
CMDocument** ppDocument);
//
// Copies an object
//
HRESULT CopyObject(LPVOID pvArgs, size_t cbArgs) ;
//
// Activates a site object
//
HRESULT ActivateObject(
LPVOID pvArgs,
size_t cbArgs,
LPCWSTR pszDocumentName,
CMDocument **ppSvrDoc);
//
// Performs a remote function call at the object level
//
HRESULT CMObject::CallFunction(
LPWSTR pszFunctionName,
PVOID pvParamIn,
size_t stParamSizeIn,
PLONG plResultOut,
PVOID *ppvParamOut,
size_t *pstParamSizeOut);
private:
//
// This objects entry in the slip table
//
HANDLE m_hSlipEntry;
};
#endif // __TSTCLASS_HXX__