490 lines
11 KiB
C++
490 lines
11 KiB
C++
/*
|
|
******************************************************************************
|
|
******************************************************************************
|
|
*
|
|
*
|
|
* INTEL CORPORATION PROPRIETARY INFORMATION
|
|
* This software is supplied under the terms of a license agreement or
|
|
* nondisclosure agreement with Intel Corporation and may not be copied or
|
|
* disclosed except in accordance with the terms of that agreement.
|
|
*
|
|
* Copyright (c) 1997, 1998 Intel Corporation All Rights Reserved
|
|
******************************************************************************
|
|
******************************************************************************
|
|
*
|
|
*
|
|
*
|
|
*
|
|
*
|
|
*/
|
|
|
|
|
|
#if !defined(__DMIDATA_H__)
|
|
#define __DMIDATA_H__
|
|
|
|
#include "Dual.h"
|
|
|
|
class CObjectPath;
|
|
|
|
///////////////////////////////////////////////////////////
|
|
class CEnumElement
|
|
{
|
|
CString m_cszString;
|
|
LONG m_lValue;
|
|
|
|
public:
|
|
CEnumElement() { m_lValue = 0; m_pNext = NULL;}
|
|
|
|
CEnumElement* m_pNext;
|
|
|
|
void Read( IDualEnumeration* );
|
|
|
|
CString& GetString() {return m_cszString;}
|
|
LONG GetValue() {return m_lValue;}
|
|
};
|
|
|
|
|
|
class CEnum
|
|
{
|
|
CString m_cszNWA;
|
|
LONG m_lComponent;
|
|
LONG m_lGroup;
|
|
LONG m_lAttribute;
|
|
|
|
public:
|
|
|
|
CEnumElement* m_pFirst;
|
|
CEnumElement* m_pCurrent;
|
|
|
|
CEnum() { m_pFirst = m_pCurrent = NULL;}
|
|
~CEnum();
|
|
|
|
void Read ( IDualColEnumerations* );
|
|
|
|
|
|
void Add( CEnumElement* );
|
|
void MoveToHead() {m_pCurrent = m_pFirst;}
|
|
LONG GetCount();
|
|
|
|
CEnumElement* Next();
|
|
|
|
void SetNWA ( LPWSTR p ) { m_cszNWA.Set ( p ); }
|
|
void SetComponent ( LONG l ) { m_lComponent = l ; }
|
|
void SetGroup ( LONG l ) { m_lGroup = l; }
|
|
void SetAttrib ( LONG l ) { m_lAttribute = l ; }
|
|
|
|
void Get ( CString& , LONG , LONG , LONG );
|
|
|
|
};
|
|
|
|
///////////////////////////////////////////////////////////
|
|
class CAttribute
|
|
{
|
|
private:
|
|
|
|
VARIANT_BOOL m_vbIsKey;
|
|
VARIANT_BOOL m_vbIsEnum;
|
|
LONG m_lId;
|
|
CVariant m_cvValue;
|
|
LONG m_lAccess;
|
|
CBstr m_cbDescription;
|
|
CBstr m_cbName;
|
|
LONG m_lType;
|
|
LONG m_lStorage;
|
|
LONG m_lMaxSize;
|
|
|
|
public:
|
|
CAttribute() {m_pNext = NULL;m_vbIsKey=VARIANT_FALSE;m_vbIsEnum=VARIANT_FALSE;}
|
|
~CAttribute() {;}
|
|
|
|
CAttribute* m_pNext;
|
|
|
|
LONG Id() { return m_lId; }
|
|
void SetId( LONG l ) { m_lId = l; }
|
|
LPWSTR Description() { return m_cbDescription; }
|
|
LONG Access() { return m_lAccess; }
|
|
LONG Storage() { return m_lStorage; }
|
|
LONG Type() { return m_lType; }
|
|
|
|
LONG MaxSize() { return m_lMaxSize; }
|
|
CVariant& Value() { return m_cvValue; }
|
|
void SetValue(LPVARIANT va) { m_cvValue.Set(va); }
|
|
BOOL IsKey() { return (m_vbIsKey == VARIANT_FALSE) ? FALSE : TRUE; } // type VARIANT_BOOL shaningans
|
|
BOOL IsEnum() { return (m_vbIsEnum == VARIANT_FALSE) ? FALSE : TRUE; } // type VARIANT_BOOL shaningans
|
|
void MakeKey() { m_vbIsKey = VARIANT_TRUE; }
|
|
LPWSTR Name() { return m_cbName; }
|
|
void SetName(LPWSTR p) { m_cbName.Set(p); }
|
|
BOOL Read(IDualAttribute* , BOOL );
|
|
BOOL IsWritable() { return ( m_lAccess == 2 || m_lAccess == 3 ) ? TRUE : FALSE;}
|
|
|
|
void Copy ( CAttribute* );
|
|
|
|
BOOL Equal ( CAttribute* );
|
|
};
|
|
|
|
|
|
///////////////////////////////////////////////////////////
|
|
class CAttributes
|
|
{
|
|
private:
|
|
CAttribute* m_pFirst;
|
|
CAttribute* m_pCurrent;
|
|
|
|
|
|
public:
|
|
CAttributes() {m_pFirst = NULL;m_pCurrent = NULL;}
|
|
~CAttributes();
|
|
|
|
void MoveToHead() {m_pCurrent = m_pFirst;}
|
|
|
|
CAttribute* Next();
|
|
CAttribute* Get(BSTR);
|
|
void Read(IDualColAttributes*, BOOL );
|
|
void Copy ( CAttributes& );
|
|
void Add(CAttribute*);
|
|
LONG GetCount() {LONG l = 0; MoveToHead(); while (Next()) l++; return l;}
|
|
void GetMOTPath ( CString& );
|
|
|
|
void ReadCimPath ( CObjectPath& );
|
|
BOOL Equal ( CAttributes& );
|
|
|
|
BOOL Empty ( ) { return ( m_pFirst ) ? FALSE : TRUE ;}
|
|
|
|
|
|
};
|
|
|
|
///////////////////////////////////////////////////////////
|
|
class CRow
|
|
{
|
|
private:
|
|
CString m_cszNWA;
|
|
LONG m_lComponent;
|
|
LONG m_lGroup;
|
|
CString m_csNode;
|
|
|
|
BOOL m_bFoundOneWritable;
|
|
|
|
public:
|
|
CAttributes m_Keys;
|
|
CAttributes m_Attributes;
|
|
|
|
CRow* m_pNext;
|
|
|
|
CRow();
|
|
~CRow();
|
|
void SetData ( LPWSTR , LONG , LONG );
|
|
|
|
void Get ( CString& , LONG , LONG , CAttributes& , BOOL* );
|
|
void UpdateAttribute( CVariant& , CVariant& );
|
|
|
|
BOOL ReadOnly() {return !m_bFoundOneWritable;}
|
|
|
|
void Delete ( );
|
|
|
|
LONG Component() {return m_lComponent;}
|
|
CString& Node ( ) { return m_csNode; }
|
|
LPWSTR NWA() { return m_cszNWA;}
|
|
LONG Group ( ) { return m_lGroup; }
|
|
|
|
void CommitChanges ( );
|
|
|
|
void Read ( IDualRow* );
|
|
|
|
void Copy ( CRow& );
|
|
|
|
BOOL Empty ( ) {return m_Attributes.Empty() ;}
|
|
|
|
};
|
|
|
|
///////////////////////////////////////////////////////////
|
|
class CRows
|
|
{
|
|
private:
|
|
CRow* m_pFirst;
|
|
CRow* m_pCurrent;
|
|
LONG m_lComponent;
|
|
LONG m_lGroup;
|
|
CString m_cszNWA;
|
|
|
|
BOOL m_bFilled;
|
|
public:
|
|
CRows();
|
|
~CRows();
|
|
|
|
void SetData ( LPWSTR , LONG , LONG);
|
|
|
|
void Read ( IDualColRows* );
|
|
|
|
void Get( LPWSTR , LONG , LONG );
|
|
|
|
void MoveToHead() {m_pCurrent = m_pFirst;}
|
|
void Add(CRow*);
|
|
CRow* Next();
|
|
CRow* GetFirst() {return m_pFirst;}
|
|
};
|
|
|
|
///////////////////////////////////////////////////////////
|
|
class CGroup
|
|
{
|
|
private:
|
|
CString m_cszNWA;
|
|
LONG m_lComponent;
|
|
BOOL m_bRead;
|
|
|
|
LONG m_lId;
|
|
CBstr m_cbName;
|
|
CBstr m_cbPragma;
|
|
CBstr m_cbDescription;
|
|
CBstr m_cbClassString;
|
|
VARIANT_BOOL m_vbIsTable;
|
|
BOOL m_bFilled;
|
|
|
|
public:
|
|
CRows m_Rows;
|
|
CAttributes m_Attributes;
|
|
CGroup* m_pNext;
|
|
|
|
CGroup();
|
|
~CGroup() { ;}
|
|
|
|
void Read( IDualGroup*, BOOL , BOOL*);
|
|
void Get ( CString& , LONG , LONG );
|
|
|
|
BSTR Name() { return m_cbName;}
|
|
BSTR ClassString() { return m_cbClassString;}
|
|
LONG Id() { return m_lId;}
|
|
LPWSTR NWA ( ) { return m_cszNWA ; }
|
|
LONG Component () { return m_lComponent ; }
|
|
BSTR Pragma() { return m_cbPragma;}
|
|
BSTR Description() { return m_cbDescription;}
|
|
void GetValue(BSTR, CVariant&); // returns value of Attribute in bstr
|
|
VARIANT_BOOL IsTable() { return m_vbIsTable;}
|
|
|
|
void Delete ( );
|
|
|
|
void AddRow ( CRow& );
|
|
|
|
void SetNWA ( LPWSTR p) {m_cszNWA.Set ( p ); }
|
|
void SetComponent ( LONG l) {m_lComponent = l; }
|
|
|
|
BOOL IsEmpty() { return !m_bRead;}
|
|
|
|
void Copy ( CGroup& );
|
|
};
|
|
|
|
///////////////////////////////////////////////////////////
|
|
class CGroups
|
|
{
|
|
private:
|
|
CString m_cszNWA;
|
|
LONG m_lComponent;
|
|
|
|
CGroup* m_pCurrent;
|
|
BOOL m_bFilled;
|
|
|
|
|
|
void Add(CGroup*);
|
|
public:
|
|
CGroups();
|
|
~CGroups();
|
|
|
|
CGroup* m_pFirst;
|
|
|
|
|
|
void MoveToHead() {m_pCurrent = m_pFirst;}
|
|
|
|
void Get ( LPWSTR , LONG );
|
|
|
|
|
|
CGroup* Next();
|
|
|
|
void Read ( IDualColGroups* );
|
|
|
|
void SetNWA ( LPWSTR );
|
|
void SetComponent ( LONG );
|
|
};
|
|
|
|
class CLanguage
|
|
{
|
|
CString m_cszLanguage;
|
|
public:
|
|
CLanguage() {m_pNext = NULL;}
|
|
|
|
|
|
LPWSTR Language() {return m_cszLanguage;}
|
|
void Set(BSTR b) {m_cszLanguage.Set(b);}
|
|
|
|
CLanguage* m_pNext;
|
|
};
|
|
|
|
|
|
class CLanguages
|
|
{
|
|
CString m_cszNWA;
|
|
LONG m_lComponent;
|
|
|
|
void Add(CLanguage*);
|
|
BOOL m_bFilled;
|
|
|
|
|
|
public:
|
|
~CLanguages();
|
|
CLanguages()
|
|
{m_pFirst = NULL;m_pCurrent = NULL; m_bFilled = FALSE;}
|
|
|
|
|
|
CLanguage* Next();
|
|
void MoveToHead() {m_pCurrent = m_pFirst;}
|
|
void Get( LPWSTR pNWA , LONG lComponent );
|
|
|
|
void Read ( IDualColLanguages* );
|
|
|
|
CLanguage* m_pFirst;
|
|
CLanguage* m_pCurrent;
|
|
};
|
|
|
|
///////////////////////////////////////////////////////////
|
|
class CComponent
|
|
{
|
|
private:
|
|
CString m_cszNWA;
|
|
LONG m_lComponent;
|
|
CBstr m_cbName;
|
|
CBstr m_cbPragma;
|
|
CBstr m_cbDescription;
|
|
|
|
CBstr m_cbLanguages;
|
|
|
|
public:
|
|
void Read(IDualComponent*);
|
|
|
|
void Get( LPWSTR );
|
|
void Get ( CString& , LONG );
|
|
|
|
CComponent() {m_pNext = NULL;}
|
|
~CComponent() {;}
|
|
|
|
BSTR Name() { return m_cbName;}
|
|
LONG Id() { return m_lComponent;}
|
|
BSTR Pragma() { return m_cbPragma;}
|
|
BSTR Description() { return m_cbDescription;}
|
|
LPWSTR NWA ( ) { return m_cszNWA; }
|
|
|
|
|
|
void GetComponentIDGroup( CRow* );
|
|
|
|
void Delete ( );
|
|
void AddGroup ( CVariant& );
|
|
void AddLanguage ( CVariant& );
|
|
void DeleteLanguage ( CVariant& );
|
|
|
|
CGroups m_Groups;
|
|
CLanguages m_Languages;
|
|
CComponent* m_pNext;
|
|
|
|
void SetNWA ( LPWSTR p );
|
|
|
|
void Copy ( CComponent& );
|
|
};
|
|
|
|
///////////////////////////////////////////////////////////
|
|
class CComponents
|
|
{
|
|
private:
|
|
CString m_cszNWA;
|
|
CComponent* m_pCurrent;
|
|
|
|
|
|
public:
|
|
BOOL m_bFilled;
|
|
|
|
CComponent* m_pFirst;
|
|
|
|
void Add(CComponent*);
|
|
CComponents();
|
|
~CComponents();
|
|
|
|
void MoveToHead() { m_pCurrent = m_pFirst;}
|
|
void GetFromID(UINT, CComponent**);
|
|
CComponent* Next( );
|
|
void Get( LPWSTR );
|
|
|
|
void Empty();
|
|
LONG GetCount();
|
|
|
|
void SetNWA ( LPWSTR );
|
|
|
|
};
|
|
|
|
///////////////////////////////////////////////////////////
|
|
class CNode
|
|
{
|
|
CString m_cszNWA;
|
|
CString cszVersion;
|
|
CString cszLanguage;
|
|
CString cszDescription;
|
|
|
|
public:
|
|
|
|
|
|
LPWSTR Version() { return ( LPWSTR ) cszVersion; }
|
|
LPWSTR Language() { return ( LPWSTR ) cszLanguage; }
|
|
LPWSTR Description () { return ( LPWSTR ) cszDescription; }
|
|
|
|
void Get ( CString& );
|
|
void SetDefaultLanguage ( CVariant& );
|
|
void AddComponent ( CVariant& );
|
|
|
|
void SetNWA ( LPWSTR p) {m_cszNWA.Set ( p ); }
|
|
|
|
|
|
void Read ( IDualMgmtNode* );
|
|
};
|
|
|
|
/////////////////////////////////////////////////////////////
|
|
|
|
class CEvents
|
|
{
|
|
CString m_cszNWA;
|
|
|
|
public:
|
|
|
|
void Enable ( LPWSTR pNWA , IWbemObjectSink* pIClientSink );
|
|
|
|
};
|
|
|
|
|
|
|
|
class CEvent
|
|
{
|
|
LONG m_lComponent;
|
|
LONG m_lGroup;
|
|
CString m_cszTime;
|
|
CString m_cszLanguage;
|
|
CString m_cszNWA;
|
|
|
|
public:
|
|
CRow m_Row;
|
|
|
|
CEvent ( ) { m_lGroup = m_lComponent = 0; }
|
|
|
|
void SetGroup ( LONG l) { m_lGroup = l;}
|
|
void SetComponent ( LONG l ) { m_lComponent = l;}
|
|
void SetTime ( LPWSTR p ) { m_cszTime.Set ( p );}
|
|
void SetLanguage ( LPWSTR p ){ m_cszLanguage.Set ( p );}
|
|
void SetNWA ( LPWSTR p) {m_cszNWA.Set ( p );}
|
|
|
|
void Copy ( CEvent& );
|
|
|
|
BOOL IsEmpty ( ) { return ( m_lComponent == 0 ) ? TRUE : FALSE ; }
|
|
|
|
LONG Group ( ) { return m_lGroup; }
|
|
LONG Component ( ) { return m_lComponent;}
|
|
LPWSTR Time () { return m_cszTime;}
|
|
LPWSTR Language () { return m_cszLanguage;}
|
|
LPWSTR NWA () { return m_cszNWA; }
|
|
|
|
};
|
|
|
|
#endif // __DMIDATA_H__
|