16,471
社区成员
发帖
与我相关
我的任务
分享
CMyDlg * p = (CMyDlg *)pParam; //获取主窗口的指针,用来调用主窗口的变量和函数
int ret1 = 0,ret2 = 0,ret3 = 0;
PVOID buf = malloc(100);
char * buf1 = (char *)malloc(100);
PVOID buf2 = malloc(100);
char * buf3 = (char *)malloc(100);
PVOID buf4 = malloc(100);
char * buf5 = (char *)malloc(100);
int num = 0;
int num1 = 0;
int num2 = 0;
PHIDD_ATTRIBUTES a;
int Count = 0; //Total number of devices found
DWORD strSize=0,requiredSize=0;
BOOL result1,result2;
//定义一些变量,以后会用到
SP_DEVINFO_DATA DeviceInfoData;
SP_DEVICE_INTERFACE_DATA DeviceInterfaceData;
PSP_DEVICE_INTERFACE_DETAIL_DATA DeviceInterfaceDetailData;
//第一步:获取deviceID
GUID deviceId;
HidD_GetHidGuid(&deviceId);
//第二步:获取设备信息
HDEVINFO handle;
handle = SetupDiGetClassDevs(&deviceId, NULL, NULL, (DIGCF_DEVICEINTERFACE | DIGCF_PRESENT)); //Get only HID devices
//第三步:对所有的设备进行枚举
result1=false; //定义一些变量
result2=false;
//CString temp11="";
while(1)
{
DeviceInterfaceData.cbSize = sizeof(SP_DEVICE_INTERFACE_DATA);
result1 = SetupDiEnumDeviceInterfaces(
handle,
NULL, // IN PSP_DEVINFO_DATA DeviceInfoData, OPTIONAL
&deviceId,
Count,
&DeviceInterfaceData
);
if(result1 == FALSE)
{
break;
}
//获得设备详细数据(初步)
result1 = SetupDiGetDeviceInterfaceDetail(handle,
&DeviceInterfaceData,
NULL,
0,
&strSize,
NULL);
requiredSize=strSize;
DeviceInterfaceDetailData=(PSP_DEVICE_INTERFACE_DETAIL_DATA)malloc(requiredSize);
DeviceInterfaceDetailData->cbSize=sizeof(SP_DEVICE_INTERFACE_DETAIL_DATA);
DeviceInfoData.cbSize=sizeof(SP_DEVINFO_DATA);
//再次获得详细数据
SetupDiGetDeviceInterfaceDetail(handle,
&DeviceInterfaceData,
DeviceInterfaceDetailData,
strSize,
&requiredSize,
&DeviceInfoData);
//获得设备路径(最重要的部分)
//m_zf1=DeviceInterfaceDetailData->DevicePath;
Count++;
}
if(Count != 0)
{
//AfxMessageBox("进来了");
a = (PHIDD_ATTRIBUTES)malloc(100);
a->Size = sizeof(struct _HIDD_ATTRIBUTES);
HANDLE hCom = CreateFile(DeviceInterfaceDetailData->DevicePath,
NULL,//GENERIC_READ | GENERIC_WRITE,
FILE_SHARE_READ | FILE_SHARE_WRITE,
NULL,
OPEN_EXISTING,
FILE_FLAG_OVERLAPPED,
NULL);
HidD_GetAttributes(hCom,a);
pid = a->ProductID;
vid = a->VendorID;