- 1、本文档共10页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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++){
您可能关注的文档
- 用全站仪进行工程施工放样.pdf
- 用心培育静待花开.pdf
- 用认知策略记忆知识点.pdf
- 用联系与发展的观点看问题.pdf
- 田家炳中学九年级第三次月考政史试题(卷).pdf
- 甲乙两方的责任书怎么写范文 (16页).pdf
- 由韩剧引发的韩国思想政治教育方法探析.pdf
- 申报材料范文精选0.pdf
- 甲醇水溶液的密度.pdf
- 甲醇安全告知牌.pdf
- 装配式建筑预制构件生产中信息化管理系统的设计与实现教学研究课题报告.docx
- 初中音乐学科中分级作业设计的实践与评价教学研究课题报告.docx
- 《美术馆公共教育活动的艺术教育普及策略研究》教学研究课题报告.docx
- 2025年北京国际交换系统有限公司校园招聘模拟试题附带答案详解1套.docx
- 2025年北京国际交换系统有限公司校园招聘85人公开引进高层次人才和急需紧缺人才笔试参考题库答案详解.docx
- 校园环保演讲稿800字 校园绿色环保演讲稿(十四篇) .pdf
- 2025年北京国际交换系统有限公司校园招聘85人公开引进高层次人才和急需紧缺人才笔试参考题库答案详解.docx
- 基于职业指导的高中生职业生涯规划课程改革研究教学研究课题报告.docx
- 2025年北京国际交换系统有限公司校园招聘85人公开引进高层次人才和急需紧缺人才笔试参考题库答案详解.docx
- 初中美术教育中创意设计思维的激发与培养教学研究课题报告.docx
文档评论(0)