258 lines
6.2 KiB
C++
258 lines
6.2 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(__DMINTERFACE_H__)
|
|
#define __DMINTERFACE_H__
|
|
|
|
class CConnection
|
|
{
|
|
public:
|
|
CString m_cszNWA;
|
|
IDualMgmtNode* m_pINode;
|
|
|
|
CConnection* m_pNext;
|
|
|
|
CConnection ( );
|
|
~CConnection ( );
|
|
void Init ( LPWSTR );
|
|
void Disconnect( );
|
|
CString& NWA ( ) { return m_cszNWA ;}
|
|
};
|
|
|
|
|
|
class CConnections
|
|
{
|
|
void Add ( CConnection* , LPWSTR );
|
|
|
|
public:
|
|
CConnection* m_pFirst;
|
|
CConnection* m_pCurrent;
|
|
|
|
CConnections ();
|
|
~ CConnections ( );
|
|
|
|
|
|
void Remove ( LPWSTR );
|
|
|
|
BOOL CheckIfAlready ( LPWSTR );
|
|
|
|
void ClearAll ( );
|
|
|
|
CConnection* Next ( );
|
|
void MoveToHead ( );
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class CDmiError
|
|
{
|
|
private:
|
|
|
|
LONG lDmiError;
|
|
LONG lMotError;
|
|
LONG lWbemError;
|
|
LONG lReason;
|
|
LONG lDescription;
|
|
LONG lOperation;
|
|
|
|
CString cszCall;
|
|
CString cszExtraData;
|
|
|
|
public:
|
|
CDmiError() { lReason = lDescription = lWbemError = lDmiError = lMotError = 0 ;}
|
|
void SetDmiError ( LONG );
|
|
void SetMotError ( LONG );
|
|
|
|
void SetCallString ( LPWSTR );
|
|
void SetExtraData ( LPWSTR );
|
|
void SetWbemError ( long l ) { lWbemError = l ;}
|
|
|
|
void SetDescription ( LONG l) { lDescription = l;}
|
|
void SetReason ( LONG l ) { lReason = l ;}
|
|
void SetOperation ( LONG l ) { lOperation = l; }
|
|
|
|
LONG WbemError () { return lWbemError ; }
|
|
LONG Reason () { return lReason; }
|
|
LONG Description () { return lDescription; }
|
|
LONG MotError () { return lMotError ; }
|
|
|
|
BOOL HaveError () {if ( lWbemError || lDmiError || lMotError ) return TRUE ; return FALSE;}
|
|
};
|
|
|
|
|
|
void dmiReadNode ( LPWSTR , CNode* , CDmiError* );
|
|
|
|
void dmiReadComponents ( LPWSTR pNWA , CComponents* pNewComponents ,
|
|
CDmiError* );
|
|
|
|
void dmiReadComponent ( LPWSTR pNWA , LONG lComponent ,
|
|
CComponent* pNewComponent , CDmiError* );
|
|
|
|
void dmiReadGroups ( LPWSTR pNWA , LONG lComponent , CGroups* pNewGroups ,
|
|
CDmiError* );
|
|
|
|
void dmiReadGroup ( LPWSTR pNWA , LONG lComponent , LONG lGroup ,
|
|
CGroup* pNewGroup , CDmiError* );
|
|
|
|
void dmiReadRows ( LPWSTR wszNWA , LONG lComponent , LONG lGroup ,
|
|
CRows* pNewRows , CDmiError* );
|
|
|
|
void dmiReadRow ( LPWSTR wszNWA , LONG lComponent , LONG lGroup ,
|
|
CAttributes* pKeys , CRow* pNewRow , CDmiError* );
|
|
|
|
void dmiReadEnum ( LPWSTR pNWA , LONG lComponent , LONG lGroup ,
|
|
LONG lAttribute , CEnum* pNewEnum , CDmiError* );
|
|
|
|
void dmiReadLanguages ( LPWSTR pNWA , LONG lComponent ,
|
|
CLanguages* pNewLanguages , CDmiError* );
|
|
|
|
void dmiAddComponent ( LPWSTR wszNWA , LPWSTR pMifFile , CDmiError* );
|
|
|
|
void dmiDeleteComponent ( LPWSTR wszNWA , LONG , CDmiError* );
|
|
|
|
void dmiAddLanguage ( LPWSTR pNWA , LONG lComponent , CVariant* pcvMifFile ,
|
|
CDmiError* );
|
|
|
|
void dmiDeleteLanguage ( LPWSTR pNWA , LONG lComponent , CVariant* pcvMifFile ,
|
|
CDmiError* );
|
|
|
|
void dmiAddGroup ( LPWSTR wszNWA , LONG lComponent , LPWSTR pszMifFile ,
|
|
CDmiError* );
|
|
|
|
void dmiDeleteGroup ( LPWSTR , LONG , LONG , CDmiError* );
|
|
|
|
void dmiAddRow ( LPWSTR , LONG lComponent , LONG lGroup , CRow* , CDmiError* );
|
|
|
|
void dmiModifyRow ( LPWSTR , LONG lComponent , LONG lGroup , CAttributes* pKeys
|
|
, CRow* , CDmiError* );
|
|
|
|
void dmiDeleteRow ( LPWSTR , LONG lComponent , LONG lGroup , CAttributes* pKeys
|
|
, CDmiError* );
|
|
|
|
void dmiSetDefaultLanguage ( LPWSTR , LPWSTR , CDmiError* );
|
|
|
|
void dmiGetLanguages ( LPWSTR , LONG , CLanguages* , CDmiError* );
|
|
|
|
|
|
|
|
|
|
class CDmiInterfaceThreadContext
|
|
{
|
|
public:
|
|
CDmiInterfaceThreadContext();
|
|
~CDmiInterfaceThreadContext();
|
|
|
|
void KillThread ( );
|
|
|
|
void StartThread ();
|
|
|
|
BOOL m_bRunning;
|
|
|
|
HANDLE m_hStopThread;
|
|
HANDLE m_hComplete;
|
|
HANDLE m_Started;
|
|
|
|
DWORD m_dwThreadId;
|
|
|
|
|
|
private:
|
|
|
|
};
|
|
|
|
|
|
class CDmiInterface
|
|
{
|
|
private:
|
|
BOOL m_bInit;
|
|
|
|
CDmiInterfaceThreadContext m_TC;
|
|
|
|
/// for events /////////
|
|
|
|
|
|
////////////////////////
|
|
|
|
void SendThreadMessage ( UINT msg , WPARAM );
|
|
|
|
friend void ApartmentThread ( void *);
|
|
|
|
public:
|
|
CDmiInterface() ;
|
|
~CDmiInterface() ;
|
|
|
|
void ShutDown ();
|
|
|
|
void GetComponents ( LPWSTR pNWA , CComponents* pNewComponents );
|
|
|
|
void GetComponent ( LPWSTR pNWA , LONG , CComponent* pNewComponent );
|
|
|
|
void AddGroup ( LPWSTR pNWA , LONG , CVariant& );
|
|
|
|
void AddLanguage ( LPWSTR pNWA , LONG , CVariant& );
|
|
|
|
void DeleteLanguage ( LPWSTR pNWA, LONG , CVariant& );
|
|
|
|
void DeleteComponent ( LPWSTR pNWA, LONG );
|
|
|
|
void GetEnum ( LPWSTR pNWA, LONG lComponent , LONG lGroup ,
|
|
LONG lAttribute , CEnum* pNewEnum );
|
|
|
|
void DeleteRow ( LPWSTR pNWA , LONG lComponent , LONG lGroup ,
|
|
CAttributes& m_Keys );
|
|
|
|
void UpdateRow ( LPWSTR pNWA , LONG lComponent , LONG lGroup ,
|
|
CAttributes& Keys , CRow* pNewRowValues );
|
|
|
|
void GetRow ( LPWSTR pNWA , LONG lComponent , LONG lGroup ,
|
|
CAttributes& m_Keys , CRow* pNewRow );
|
|
|
|
void GetRows ( LPWSTR pNWA , LONG lComponent , LONG lGroup ,
|
|
CRows* pNewRows );
|
|
|
|
void DeleteGroup ( LPWSTR pNWA , LONG lComponent ,
|
|
LONG m_lGroup );
|
|
|
|
void AddRow ( LPWSTR pNWA , LONG lComponent , LONG lGroup ,
|
|
CRow& Row);
|
|
|
|
void GetGroup ( LPWSTR pNWA , LONG lComponent , LONG lGroup ,
|
|
CGroup* pNewGroup );
|
|
|
|
void GetGroups ( LPWSTR pNWA , LONG lComponent , CGroups* );
|
|
|
|
void GetNode ( LPWSTR pNWA , CNode* pNewNode );
|
|
|
|
void SetDefLanguage ( LPWSTR pNWA , CVariant& cvLanguage );
|
|
|
|
void AddComponent ( LPWSTR pNWA , CVariant& cvMifFile );
|
|
|
|
void GetLanguages ( LPWSTR pNWA , LONG lComponent , CLanguages* );
|
|
|
|
void EnableEvents ( LPWSTR , IWbemObjectSink* );
|
|
};
|
|
|
|
|
|
#endif //__DMINTERFACE_H__
|
|
|