2025-04-27 07:49:33 -04:00

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__