win c++ 枚举设备驱动状态
来源:互联网 发布:云计算的就业前景 编辑:程序博客网 时间:2024/06/04 14:56
#include <cfgmgr32.h> #include <SetupAPI.h>#pragma comment(lib,"Setupapi.lib")
bool IsDeviceDisabled(DWORD dwDevID, HDEVINFO hDevInfo, DWORD &dwStatus){ SP_DEVINFO_DATA DevInfoData = {sizeof(SP_DEVINFO_DATA)}; DWORD dwDevStatus,dwProblem; if(!SetupDiEnumDeviceInfo(hDevInfo,dwDevID,&DevInfoData)) { return FALSE; } //查询设备状态 if(CM_Get_DevNode_Status(&dwDevStatus,&dwProblem,DevInfoData.DevInst,0)!=CR_SUCCESS) { return FALSE; } dwStatus = dwProblem;// return ( (dwProblem == CM_PROB_FAILED_INSTALL)); return true;}int IsInstallDriver(){ HDEVINFO hDevInfo; SP_DEVINFO_DATA DeviceInfoData; DWORD i; bool bRet = false; bool bOk = false; //step1. Create a HDEVINFO with all present devices. hDevInfo = SetupDiGetClassDevs(NULL, 0, // Enumerator 0, DIGCF_PRESENT | DIGCF_ALLCLASSES ); if (hDevInfo == INVALID_HANDLE_VALUE) { // Insert error handling here. return bRet; } DWORD dwStatuts = -1; //step2. Enumerate through all devices in Set. DeviceInfoData.cbSize = sizeof(SP_DEVINFO_DATA); for (i=0; SetupDiEnumDeviceInfo(hDevInfo, i, &DeviceInfoData); i++) { DWORD DataT; LPTSTR buffer = NULL; DWORD buffersize = 0; // Call function with null to begin with, // then use the returned buffer size // to Alloc the buffer. Keep calling until // success or an unknown failure. // while (!SetupDiGetDeviceRegistryProperty( hDevInfo, &DeviceInfoData, SPDRP_HARDWAREID, &DataT, (PBYTE)buffer, buffersize, &buffersize)) { if (GetLastError() == ERROR_INSUFFICIENT_BUFFER) { // Change the buffer size. if (buffer) LocalFree(buffer); buffer = (LPTSTR)LocalAlloc(LPTR,buffersize); } else { // Insert error handling here. break; } } printf("%S\n", buffer); //step3. find devices status if (buffer && (!wcscmp(buffer,L"USB\\Vid_0955&Pid_7103") || !wcscmp(buffer,L"USB\\Vid_0955&Pid_7102")) ) { if (IsDeviceDisabled(i, hDevInfo, dwStatuts) && dwStatuts == 0) { } //printf( "SPDRP_DEVICEDESC:[%S] %d\n ",buffer, dwStatuts); if (buffer) LocalFree(buffer); break; } if (buffer) LocalFree(buffer); } // step4. Cleanup SetupDiDestroyDeviceInfoList(hDevInfo); return dwStatuts;}
阅读全文
0 0
- win c++ 枚举设备驱动状态
- win 设备驱动inf
- Pci设备驱动:设备枚举
- Pci设备驱动0:设备枚举
- USB设备的驱动状态
- win编程实践(3)【c++】-枚举值
- USB设备驱动之设备初始化(设备枚举)
- USB设备驱动之设备初始化(设备枚举)
- C#:USB设备枚举(二)设备枚举API
- C#:USB设备枚举(二)设备枚举API
- Linux设备驱动之pci设备的枚举
- Linux设备驱动之pci设备的枚举
- 通过驱动名称枚举驱动下设备和挂载设备的信息
- 【驱动开发】Windows系统下枚举设备的几个函数
- Linux设备驱动之pci设备的枚举(linux初始化时PCI设备识别)
- 设备枚举
- 设备枚举
- 标准字符设备驱动解析 globalmem.c
- 02 WebGL 着色器编程语言GLSL ES的数据值类型、变量
- linux酷炫屏保cmatrix安装教程
- Django Template
- Redis在线用户设计(解决分页问题)
- JMX客户端访问代码
- win c++ 枚举设备驱动状态
- 安卓动态壁纸开发
- oracle查询,where =对null字段无效 。慎重使用。
- Xcode8 支持 iOS7及以下版本
- 分析Redis架构设计
- 问题记录
- 爬行的蚂蚁-Java-2017百度秋招
- Android自定义View的入门
- ES6学习之路~~let和const申明