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

162 lines
4.4 KiB
C++

// Copyright (c) 1999-2001 Microsoft Corporation, All Rights Reserved
#ifndef __CFGMGRDEVICE_H__
#define __CFGMGRDEVICE_H__
#include "configmgr32.h"
class CConfigMgrDevice
{
public:
CConfigMgrDevice( HMACHINE hMachine = NULL, DEVNODE dn = 0 );
~CConfigMgrDevice();
// New functions that use config manager APIs directly
// String Values
BOOL GetDeviceDesc( CString& strVal );
BOOL GetService( CString& strVal );
BOOL GetClass( CString& strVal );
BOOL GetClassGUID( CString& strVal );
BOOL GetDriver( CString& strVal );
BOOL GetMfg( CString& strVal );
BOOL GetFriendlyName( CString& strVal );
BOOL GetLocationInformation( CString& strVal );
BOOL GetPhysicalDeviceObjectName( CString& strVal );
BOOL GetEnumeratorName( CString& strVal );
// DWORD Values
BOOL GetConfigFlags( DWORD& dwVal );
BOOL GetCapabilities( DWORD& dwVal );
BOOL GetUINumber( DWORD& dwVal );
// MULTI_SZ Values
BOOL GetHardwareID( CStringArray& strArray );
BOOL GetCompatibleIDS( CStringArray& strArray );
BOOL GetUpperFilters( CStringArray& strArray );
BOOL GetLowerFilters( CStringArray& strArray );
BOOL GetDeviceID( CString& strID );
BOOL GetStatus( LPDWORD pdwStatus, LPDWORD pdwProblem );
// Use Config Manager APIs directly
BOOL GetStringProperty( ULONG ulProperty, CString& strValue );
BOOL GetDWORDProperty( ULONG ulProperty, DWORD* pdwVal );
BOOL GetMULTISZProperty( ULONG ulProperty, CStringArray& strArray );
// Device Relationship functions
BOOL GetParent( CConfigMgrDevice** pParentDevice );
BOOL GetChild( CConfigMgrDevice** pChildDevice );
BOOL GetSibling( CConfigMgrDevice** pSiblingDevice );
BOOL GetIRQ( LPDWORD pdwIRQ );
BOOL GetBusInfo( LPDWORD pdwBusType, LPDWORD pdwBusNumber );
LONG GetRegistryStringValue( LPCTSTR pszValueName, CString& strValue );
LONG GetRegistryValue( LPCTSTR pszValueName, LPBYTE pBuffer, LPDWORD pdwBufferSize, LPDWORD pdwType = NULL );
private:
CString m_strKey;
CString m_strDeviceDesc;
CString m_strClass;
CString m_strDriver;
CString m_strService;
DEVNODE m_dn;
};
// REG_SZ Properties
inline BOOL CConfigMgrDevice::GetDeviceDesc( CString& strVal )
{
return GetStringProperty( CM_DRP_DEVICEDESC, strVal );
}
inline BOOL CConfigMgrDevice::GetService( CString& strVal )
{
return GetStringProperty( CM_DRP_SERVICE, strVal );
}
inline BOOL CConfigMgrDevice::GetClass( CString& strVal )
{
return GetStringProperty( CM_DRP_CLASS, strVal );
}
inline BOOL CConfigMgrDevice::GetClassGUID( CString& strVal )
{
return GetStringProperty( CM_DRP_CLASSGUID, strVal );
}
inline BOOL CConfigMgrDevice::GetDriver( CString& strVal )
{
return GetStringProperty( CM_DRP_DRIVER, strVal );
}
inline BOOL CConfigMgrDevice::GetMfg( CString& strVal )
{
return GetStringProperty( CM_DRP_MFG, strVal );
}
inline BOOL CConfigMgrDevice::GetFriendlyName( CString& strVal )
{
return GetStringProperty( CM_DRP_FRIENDLYNAME, strVal );
}
inline BOOL CConfigMgrDevice::GetLocationInformation( CString& strVal )
{
return GetStringProperty( CM_DRP_LOCATION_INFORMATION, strVal );
}
inline BOOL CConfigMgrDevice::GetPhysicalDeviceObjectName( CString& strVal )
{
return GetStringProperty( CM_DRP_PHYSICAL_DEVICE_OBJECT_NAME, strVal );
}
inline BOOL CConfigMgrDevice::GetEnumeratorName( CString& strVal )
{
return GetStringProperty( CM_DRP_ENUMERATOR_NAME, strVal );
}
// DWORD functions
inline BOOL CConfigMgrDevice::GetConfigFlags( DWORD& dwVal )
{
return GetDWORDProperty( CM_DRP_CONFIGFLAGS, &dwVal );
}
inline BOOL CConfigMgrDevice::GetCapabilities( DWORD& dwVal )
{
return GetDWORDProperty( CM_DRP_CAPABILITIES, &dwVal );
}
inline BOOL CConfigMgrDevice::GetUINumber( DWORD& dwVal )
{
return GetDWORDProperty( CM_DRP_UI_NUMBER, &dwVal );
}
// MULTI_SZ properties
inline BOOL CConfigMgrDevice::GetHardwareID( CStringArray& strArray )
{
return GetMULTISZProperty( CM_DRP_HARDWAREID, strArray );
}
inline BOOL CConfigMgrDevice::GetCompatibleIDS( CStringArray& strArray )
{
return GetMULTISZProperty( CM_DRP_COMPATIBLEIDS, strArray );
}
inline BOOL CConfigMgrDevice::GetUpperFilters( CStringArray& strArray )
{
return GetMULTISZProperty( CM_DRP_UPPERFILTERS, strArray );
}
inline BOOL CConfigMgrDevice::GetLowerFilters( CStringArray& strArray )
{
return GetMULTISZProperty( CM_DRP_LOWERFILTERS, strArray );
}
#endif //__CFGMGRCOMPUTER_H__