网站大量收购独家精品文档,联系QQ:2885784924

用VC++实现USB接口读写数据的程序.pdf

  1. 1、本文档共10页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

用VC++实现USB接口读写数据的程序

用VC++实现USB接口读写数据的程序

使用一个GUIDguidHID_1查找并打开一个USB设备

externCintPASCALSearchUSBDevice()

{

HANDLEhUsb;

intnCount,i,j;//标记同一设备个数

HDEVINFOhDevInfoSet;

BOOLbResult;

PSP_DEVICE_INTERFACE_DETAIL_DATApDetail=NULL;

memset(m_sysversion,0,20);

GetSysVersion(m_sysversion);

//检索相关GUID的USB设备总设备个数

if(!GetUSBList())

{

return0;

}

//取得一个该GUID相关的设备信息集句柄

hDevInfoSet=::SetupDiGetClassDevs((LPGUID)guidHID_1,//GUID_CLASS_USB_DEVICE,//

classGUID

NULL,//无关键字

NULL,//不指定父窗口句柄

DIGCF_PRESENT|DIGCF_DEVICEINTERFACE);//目前存在的设备

//失败...

if(hDevInfoSet==INVALID_HANDLE_VALUE)

{

returnNULL;

}

//申请设备接口数据空间

nCount=0;

bResult=TRUE;

for(i=0;i34;i++)

{

bDeviceOpen=FALSE;

memset(m_DeviceDesc,0,256);

}

SP_DEVICE_INTERFACE_DATAifdata;

//设备序号=0,1,2...逐一测试设备接口,到失败为

while(bResult)

{

ifdata.cbSize=sizeof(ifdata);

//枚举符合该GUID的设备接口

bResult=::SetupDiEnumDeviceInterfaces(

hDevInfoSet,//设备信息集句柄

NULL,//不需额外的设备描述

(LPGUID)guidHID_1,//GUID_CLASS_USB_DEVICE,//GUID

(ULONG)nCount,//设备信息集里的设备序号

ifdata);//设备接口信息

if(bResult)

{

ULONGpredictedLength=0;

ULONGrequiredLength=0;

//取得该设备接口的细节(设备路径)

bResult=SetupDiGetInterfaceDeviceDetail(

hDevInfoSet,//设备信息集句柄

ifdata,//设备接口信息

NULL,//设备接口细节(设备路径)

0,//输出缓冲区大小

requiredLength,//不需计算输出缓冲区大小(直接用设定值)

NULL);//不需额外的设备描述

//取得该设备接口的细节(设备路径)

predictedLength=requiredLength;

//if(pDetail)

//{

//pDetail=NULL;

//}

pDetail=(PSP_INTERFACE_DEVICE_DETAIL_DATA)::GlobalAlloc(LMEM_ZEROINIT,

predictedLength);

pDetail-cbSize=sizeof(SP_DEVICE_INTERFACE_DETAIL_DATA);

bResult=SetupDiGetInterfaceDeviceDetail(

hDevInfoSet,//设备信息集句柄

ifdata,//设备接口信息

pDetail,//设备接口细节(设备路径)

predictedLength,//输出缓冲区大小

requiredLength,//不需计算输出缓冲区大小(直接用设定值)

NULL);//不需额外的设备描述

if(bResult)

{

//复制设备路径到输出缓冲区

//::strcpy(pszDevicePath[nCount],pDetail-DevicePath);

if(strcmp(m_sysversion,winnt)==0)

{

charch[18];

for(i=0;i17;i++){

文档评论(0)

霞光满天 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档