2025-04-27 07:49:33 -04:00

179 lines
6.5 KiB
C

//***************************************************************************
//
// Copyright (c) 1997-2001 Microsoft Corporation, All Rights Reserved
//
// MOENGINE.H
//
// Purpose: Code-generation engine for framework providers
//
//***************************************************************************
#define DllImport __declspec( dllimport )
#define DllExport __declspec( dllexport )
// Error codes
//============
#define MO_INVALID_ID 0x00
#define MO_SUCCESS 0x00
#define MO_ERROR_PROVIDER_NOT_FOUND 0x01
#define MO_ERROR_INVALID_FILENAME 0x02
#define MO_ERROR_FILE_OPEN 0x03
#define MO_ERROR_TEMPLATE_NOT_FOUND 0x04
#define MO_ERROR_INVALID_PARAMETER 0x05
#define MO_ERROR_PROPSET_NOT_FOUND 0x06
#define MO_ERROR_MEMORY 0x07
#define MO_ERROR_DIRECTORY 0x08
#define MO_ERROR_FILES_EXIST 0x09
#define MO_ERROR_DIRECTORY_NOT_FOUND 0x0A
#define MO_ERROR_FILE_WRITE_ERROR 0x0B
#define MO_PROPTYPE_UNKNOWN 0x00
#define MO_PROPTYPE_DWORD 0x01
#define MO_PROPTYPE_CHString 0x02
#define MO_PROPTYPE_BOOL 0x03
#define MO_PROPTYPE_DATETIME 0x04
#define MO_ATTRIB_READ 0x01
#define MO_ATTRIB_WRITE MO_ATTRIB_READ << 1
#define MO_ATTRIB_VOLATILE MO_ATTRIB_WRITE << 1
#define MO_ATTRIB_EXPENSIVE MO_ATTRIB_VOLATILE << 1
#define MO_ATTRIB_KEY MO_ATTRIB_EXPENSIVE << 1
#ifdef MO_ENGINE_PROGRAM
// Internal structures
//====================
typedef struct _PROPERTY_ATTRIB_INFO
{
struct _PROPERTY_ATTRIB_INFO *pNext ;
CHString sProperty ;
DWORD dwFlags ;
} PROPERTY_ATTRIB_INFO, *PPROPERTY_ATTRIB_INFO ;
typedef struct _PROPERTY_INFO
{
struct _PROPERTY_INFO *pNext ;
CHString sProperty ;
CHString sPropertyNamePtr ;
CHString sName ;
CHString sPutMethod ;
CHString sGetMethod ;
DWORD dwType ;
DWORD dwFlags ;
} PROPERTY_INFO, *PPROPERTY_INFO ;
typedef struct _PROPSET_INFO
{
struct _PROPSET_INFO *pNext ;
DWORD dwPropSetID ;
CHString sBaseName ;
CHString sBaseUpcase ;
CHString sDescription ;
CHString sPropSetName ;
CHString sPropSetUUID ;
CHString sClassName ;
CHString sParentClassName ;
WCHAR szCPPFileSpec[_MAX_PATH] ;
WCHAR szHFileSpec[_MAX_PATH] ;
PPROPERTY_INFO pPropertyList ;
PPROPERTY_ATTRIB_INFO pPropertyAttribList ;
} PROPSET_INFO, *PPROPSET_INFO ;
typedef struct _PROVIDER_INFO
{
struct _PROVIDER_INFO *pNext ;
DWORD dwProviderID ;
CHString sBaseName ;
CHString sDescription ;
CHString sOutputPath ;
CHString sTLBPath ;
CHString sLibraryUUID ;
CHString sProviderUUID ;
CHString sCpp;
CHString sObj;
WCHAR szDEFFileSpec[_MAX_PATH] ;
WCHAR szIDLFileSpec[_MAX_PATH] ;
WCHAR szOLEFileSpec[_MAX_PATH] ;
WCHAR szMOFFileSpec[_MAX_PATH] ;
WCHAR szMAKFileSpec[_MAX_PATH] ;
PPROPSET_INFO pPropSetList ;
} PROVIDER_INFO, *PPROVIDER_INFO ;
#endif
// Primary function prototypes
//============================
BOOL APIENTRY DllMain(HINSTANCE hInstance,
DWORD dwReasonForCall,
LPVOID lpReserved) ;
DllExport DWORD MOProviderOpen(LPCWSTR pszBaseName,
LPCWSTR pszDescription,
LPCWSTR pszOutputDirectory,
LPCWSTR pszTLBPath,
LPCWSTR pszLibraryUUID,
LPCWSTR pszProviderUUID) ;
DllExport DWORD MOProviderClose(DWORD dwProviderID,
BOOL bForceFlag) ;
DllExport void MOProviderCancel(DWORD dwProviderID) ;
DllExport DWORD MOPropSetOpen(DWORD dwProviderID,
LPCWSTR pszBaseName,
LPCWSTR pszDescription,
LPCWSTR pszPropSetName,
LPCWSTR pszPropSetUUID,
LPCWSTR pszClassName,
LPCWSTR pszParentClassName) ;
DllExport DWORD MOPropertyAdd(DWORD dwProviderID,
DWORD dwPropSetID,
LPCWSTR pszProperty,
LPCWSTR pszName,
LPCWSTR pszPutMethod,
LPCWSTR pszGetMethod,
DWORD dwType,
DWORD dwFlags) ;
DllExport DWORD MOPropertyAttribSet(DWORD dwProviderID,
DWORD dwPropSetID,
LPCWSTR pszProperty,
DWORD dwFlags) ;
DllExport DWORD MOGetLastError(void) ;
#ifdef MO_ENGINE_PROGRAM
// Utility function protos
//========================
DWORD MONewProviderID(void) ;
DWORD MONewPropSetID(PROVIDER_INFO *pProvider) ;
PROVIDER_INFO *GetProviderFromID(DWORD dwProviderID) ;
PROPSET_INFO *GetPropSetFromID(PROVIDER_INFO *pProvider, DWORD dwPropSetID) ;
DWORD MOProviderDestroy(DWORD dwProviderID) ;
WCHAR *MOCreateUUID(void) ;
DWORD CreateProviderFile(PROVIDER_INFO *pProvider,
PROPSET_INFO *pPropSet,
LPCWSTR pszFileSpec,
DWORD dwTemplateID) ;
DWORD CreateProviderMOF(PROVIDER_INFO *pProvider) ;
void DoubleBackslash(CHString &sTarget) ;
CHString GetPropNameDefs(PROPSET_INFO *pPropSet) ;
CHString GetPropNameExterns(PROPSET_INFO *pPropSet) ;
CHString GetPropPuts(PROPSET_INFO *pPropSet) ;
#endif