98 lines
3.3 KiB
C++
98 lines
3.3 KiB
C++
#ifndef _WRAPMB_
|
|
#define _WRAPMB_
|
|
|
|
#include "iadmw.h"
|
|
|
|
//--------------------------------------------------------
|
|
// startup & closeing utilities
|
|
IMSAdminBase* FInitMetabaseWrapper( OLECHAR* pocMachineName );
|
|
BOOL FCloseMetabaseWrapper( IMSAdminBase* pMBCom );
|
|
|
|
|
|
//--------------------------------------------------------
|
|
class CWrapMetaBase
|
|
{
|
|
public:
|
|
WORD m_count;
|
|
// construct - destruct
|
|
CWrapMetaBase();
|
|
~CWrapMetaBase();
|
|
|
|
// second stage initialization
|
|
BOOL FInit( PVOID pMBCom );
|
|
|
|
// open, close and save the object and such
|
|
BOOL Open( LPCTSTR pszPath, DWORD dwFlags = METADATA_PERMISSION_READ );
|
|
BOOL Open( METADATA_HANDLE hOpenRoot, LPCTSTR pszPath,
|
|
DWORD dwFlags = METADATA_PERMISSION_READ );
|
|
BOOL Close( void );
|
|
BOOL Save( void );
|
|
|
|
// enumerate the objects
|
|
BOOL EnumObjects( LPCTSTR pszPath, LPTSTR Name, DWORD Index );
|
|
|
|
// Add and delete objects
|
|
BOOL AddObject( LPCTSTR pszPath );
|
|
BOOL DeleteObject( LPCTSTR pszPath );
|
|
|
|
// rename an object
|
|
BOOL RenameObject( LPCTSTR pszPathOld, LPCTSTR pszNewName );
|
|
|
|
// access the metahandle
|
|
METADATA_HANDLE QueryHandle();
|
|
|
|
// setting values
|
|
BOOL SetDword( LPCTSTR pszPath, DWORD dwPropID, DWORD dwUserType, DWORD dwValue, DWORD dwFlags = METADATA_INHERIT );
|
|
BOOL SetString( LPCTSTR pszPath, DWORD dwPropID, DWORD dwUserType, LPCTSTR dwValue, DWORD dwFlags = METADATA_INHERIT );
|
|
BOOL SetData( LPCTSTR pszPath, DWORD dwPropID, DWORD dwUserType, DWORD dwDataType,
|
|
PVOID pData, DWORD cbData, DWORD dwFlags = METADATA_INHERIT );
|
|
|
|
// getting values
|
|
BOOL GetDword( LPCTSTR pszPath, DWORD dwPropID, DWORD dwUserType, DWORD* dwValue, DWORD dwFlags = METADATA_INHERIT );
|
|
BOOL GetString( LPCTSTR pszPath, DWORD dwPropID, DWORD dwUserType, LPTSTR pszValue, DWORD* pcchValue,
|
|
DWORD dwFlags = METADATA_INHERIT );
|
|
BOOL GetMultiSZString( LPCTSTR pszPath, DWORD dwPropID, DWORD dwUserType, LPTSTR pszValue, DWORD* pcchValue,
|
|
DWORD dwFlags = METADATA_INHERIT );
|
|
BOOL GetData( LPCTSTR pszPath, DWORD dwPropID, DWORD dwUserType, DWORD dwDataType,
|
|
PVOID pData, DWORD* pcbData, DWORD dwFlags = METADATA_INHERIT );
|
|
PVOID GetData( LPCTSTR pszPath, DWORD dwPropID, DWORD dwUserType, DWORD dwDataType,
|
|
DWORD* pcbData, DWORD dwFlags = METADATA_INHERIT );
|
|
|
|
// deleting values
|
|
BOOL DeleteData( LPCTSTR pszPath, DWORD dwPropID, DWORD dwDataType );
|
|
|
|
// free memory returned by GetData
|
|
void FreeWrapData( PVOID pData );
|
|
|
|
protected:
|
|
// pointer to the real metabase object as defined in mb.hxx
|
|
// by casting it PVOID, those files including this will not have to include mb.hxx, which
|
|
// is the whole point of wrapping it like this.
|
|
// PVOID m_pvMB;
|
|
|
|
// pointer to the dcom interface it should use
|
|
IMSAdminBase* m_pMetabase;
|
|
|
|
// the open metabase handle
|
|
METADATA_HANDLE m_hMeta;
|
|
|
|
// size of the local buffer
|
|
#define BUFFER_SIZE 2000
|
|
|
|
// local buffer - allocated once, used many times
|
|
PVOID m_pBuffer;
|
|
DWORD m_cbBuffer;
|
|
|
|
|
|
// path conversion utilities
|
|
WCHAR* PrepPath( LPCTSTR psz );
|
|
void UnprepPath();
|
|
|
|
WCHAR* m_pPathBuffer;
|
|
DWORD m_cchPathBuffer;
|
|
};
|
|
|
|
|
|
#endif //_WRAPMB_
|
|
|