<repo_name>KaminskayaLyuba/iipu_lr5<file_sep>/Device.h
#pragma once
#define BUFFERL_SIZE 2048
#define REG_PATH "SYSTEM\\CurrentControlSet\\Services\\\0"
#define REG_IMAGE "ImagePath"
#define DISC_DISABLE 2
#define DISC_ENABLE 1
#define PROBLEM_CODE 22
#include <string>
#include <Windows.h>
#include <SetupApi.h>
#include <Cfgmgr32.h>
using namespace std;

#pragma comment(lib, "setupapi.lib")
#pragma comment(lib, "Advapi32.lib") 

class Device
{
public:
	Device();
	static string getDeviceClassDescription(SP_DEVINFO_DATA spDevInfoData);						//получить описани класса
	static string getDeviceName(HDEVINFO hDevInfo, SP_DEVINFO_DATA spDevInfoData);				//получить имя устройства
	static string getGUID(HDEVINFO hDevInfo, SP_DEVINFO_DATA spDevInfoData);					//получить GUID
	static void getDriverInfo(GUID guid, DWORD index, string *hardwareID, string *manufacturer, string *provider, string *driverDescription);		//получить информацию из драйвера (hardwareID, производитель, провайдер, описаниедрайвера)
	static string getDevicePath(HDEVINFO hDevInfo, SP_DEVINFO_DATA spDevInfoData);				//почить путь к устроству
	static string getDriverFullName(HDEVINFO hDevInfo, SP_DEVINFO_DATA spDevInfoData);			//получить полный путь к драйверу
	static bool deviceChangeStatus(HDEVINFO hDevInfo, SP_DEVINFO_DATA spDevInfoData, bool status);		//изменить состояние устройства 
	static bool isEnabled(SP_DEVINFO_DATA spDevInfoData);												//получить состояние устройства
	~Device();
};

<file_sep>/DeviceEnumerator.h
#pragma once
#include <vector>
#include <string>
#include <set>
#include <Windows.h>
#include <setupapi.h>
#include "Device.h"
using namespace std;

#pragma comment(lib, "setupapi.lib")

typedef struct DEVICE_INFO
{
	HDEVINFO hDevInfo;						//хендл семейства 
	SP_DEVINFO_DATA spDevInfoData;			//хендл устройства
	string classDescription;				//описание класса
	string deviceName;						//имя устройства
	string guid_string;						//GUID стокой
	GUID guid;								//GUID
	string hardwareID;						//hardwareID
	string manufacturer;					//производитель
	string provider;						//провайдер
	string driverDescription;				//описание драйвера
	string devicePath;						//путь к устройству
	string driverFullName;					//полнй путь к драйверу
	bool isEnabled;							//состояне устройства
}DEV_INFO;

class DeviceEnumerator
{
private:
	static vector<DEVICE_INFO> vectorDeviceInfo;
public:
	static vector<DEVICE_INFO> getDevices();
	static set<string> getDeviceTypes();
	DeviceEnumerator();
	~DeviceEnumerator();
};

