Source code of Windows XP (NT5)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

85 lines
2.6 KiB

//=======================================================================
//
// Copyright (c) 1998-1999 Microsoft Corporation. All Rights Reserved.
//
// File: DrvInfo.h
//
// Owner: YanL
//
// Description:
//
// Interface to device enumeration
//
// Note:
// wustl.h required
//
//=======================================================================
#ifndef _DRVINFO_H
// auto handle to HDEVINFO`
struct auto_hdevinfo_traits {
static HDEVINFO invalid() { return INVALID_HANDLE_VALUE; }
static void release(HDEVINFO hDevInfo) { SetupDiDestroyDeviceInfoList(hDevInfo); }
};
typedef auto_resource< HDEVINFO, auto_hdevinfo_traits > auto_hdevinfo;
// auto handle to HINF
struct auto_hinf_traits {
static HINF invalid() { return INVALID_HANDLE_VALUE; }
static void release(HINF hinf) { SetupCloseInfFile(hinf); }
};
typedef auto_resource< HINF, auto_hinf_traits > auto_hinf;
// auto handle to HSPFILEQ
struct auto_hspfileq_traits {
static HSPFILEQ invalid() { return INVALID_HANDLE_VALUE; }
static void release(HSPFILEQ hspfileq) { SetupCloseFileQueue(hspfileq); }
};
typedef auto_resource< HINF, auto_hspfileq_traits > auto_hspfileq;
// Main working interface
// We are using an interface - not an object to hide the fact that
// we can return both real and fake devices
// It will let as query properties at the run time
struct IDrvInfo
{
virtual bool GetDeviceInstanceID(tchar_buffer& bufDeviceInstanceID) = 0;
virtual bool HasDriver() = 0;
virtual bool IsPrinter() = 0;
virtual bool GetAllHardwareIDs(tchar_buffer& bufHardwareIDs) = 0;
virtual bool GetHardwareIDs(tchar_buffer& bufHardwareIDs) = 0;
virtual bool GetCompatIDs(tchar_buffer& bufHardwareIDs) = 0;
virtual bool GetMatchingDeviceId(tchar_buffer& bufMatchingDeviceId) = 0;
virtual bool GetManufacturer(tchar_buffer& bufMfg) = 0;
virtual bool GetProvider(tchar_buffer& bufProvider) = 0;
virtual bool GetDescription(tchar_buffer& bufDescription) = 0;
virtual bool GetDriverDate(FILETIME& ftDriverDate) = 0;
virtual ~IDrvInfo() {}
protected:
// to be used interally
friend class CDrvInfoEnum;
virtual bool Init(LPCTSTR szDevInstID) = 0;
};
// Device enumerator will return IDrvInfo ofr real or fake device
class CDrvInfoEnum
{
public:
// to be used by CDM.DLL with wszDevInstID set from DOWNLOADINFO struct
static bool GetDrvInfo(LPCWSTR wszDevInstID, IDrvInfo** ppDrvInfo);
public:
// to be used by WUV3IS.DLL and Win98 part of CDM.DLL
CDrvInfoEnum();
bool GetNextDrvInfo(IDrvInfo** ppDrvInfo);
protected:
auto_hdevinfo m_hDevInfoSet;
DWORD m_dwDeviceIndex;
};
#define _DRVINFO_H
#endif