windows-nt/Source/XPSP1/NT/admin/wmi/wbem/common/wdmlib/wmimap.h
2020-09-26 16:20:57 +08:00

54 lines
1.8 KiB
C++

//***************************************************************************
//
// Copyright (c) 1997-2001 Microsoft Corporation, All Rights Reserved
//
//***************************************************************************
#ifndef _WMIMAP_HEADER
#define _WMIMAP_HEADER
#define WRITE_IT 0
#define READ_IT 1
///////////////////////////////////////////////////////////////////////
class CWMIDataTypeMap
{
public:
CWMIDataTypeMap()
{ m_pWMIBlockInfo = NULL; m_pdwAccumulativeSizeOfBlock = NULL; }
CWMIDataTypeMap(CWMIDataBlock * pBlock, DWORD * pdw)
{ m_pWMIBlockInfo = pBlock; m_pdwAccumulativeSizeOfBlock = pdw; }
~CWMIDataTypeMap(){}
int GetWMISize(long lType);
long GetVariantType(WCHAR * wcsType);
long ConvertType(long lType );
void GetSizeAndType( WCHAR * wcsType, IDOrder * p, long & lType, int & nWMISize );
DWORD ArraySize(long lType,CVARIANT & var);
HRESULT GetDataFromDataBlock(CVARIANT & v,long lType, int nSize );
HRESULT GetDataFromDataBlock(IWbemObjectAccess * p, long lHandle, long lType, int nSize);
HRESULT PutInArray(SAFEARRAY * & psa,long * pi, long & lType, VARIANT * var);
WCHAR * SetVariantType(long lType);
BOOL SetDataInDataBlock(CSAFEARRAY * pSafe,int i,CVARIANT & v, long lType, int nSize);
BOOL NaturallyAlignData( int nSize, BOOL fRead);
BOOL MissingQualifierValueMatches( CSAFEARRAY * pSafe, long index, CVARIANT & v, long lType, CVARIANT & vToCompare );
BOOL SetDefaultMissingQualifierValue( CVARIANT & v, long lType, CVARIANT & vToSet );
private:
BOOL ConvertDWORDToWMIDataTypeAndWriteItToBlock(DWORD dwLong,int nSize);
DWORD ConvertWMIDataTypeToDWORD(int nSize);
CWMIDataBlock * m_pWMIBlockInfo;
DWORD * m_pdwAccumulativeSizeOfBlock;
};
#endif