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.
 
 
 
 
 
 

111 lines
3.7 KiB

#ifndef _WRAPMB_
#define _WRAPMB_
/*++
Notes: I made some changes to this library to build both a UNICODE and ANSI version
RonaldM
--*/
#include "iadmw.h"
//--------------------------------------------------------
// startup & closeing utilities
BOOL FInitMetabaseWrapper( OLECHAR* pocMachineName );
BOOL FCloseMetabaseWrapper();
//
// As above, privately maintaining the interface
//
BOOL FInitMetabaseWrapperEx( OLECHAR* pocMachineName, IMSAdminBase ** ppiab );
BOOL FCloseMetabaseWrapperEx(IMSAdminBase ** ppiab);
//--------------------------------------------------------
class CWrapMetaBase
{
public:
WORD m_count;
// construct - destruct
CWrapMetaBase();
~CWrapMetaBase();
// second stage initialization
BOOL FInit( PVOID pMBCom = NULL);
// 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 cbNameBuf, 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 cchValue,
DWORD dwFlags = METADATA_INHERIT );
BOOL GetMultiSZString( LPCTSTR pszPath, DWORD dwPropID, DWORD dwUserType, LPTSTR pszValue, DWORD cchValue,
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_