createfile追加写入_deviceiocontrol函数_createfile

电脑杂谈  发布时间:2017-02-23 14:03:14  来源:网络整理
createfilecreatefile

HDEVINFO hDevInfo = SetupDiGetClassDevs((LPGUID)&ClassGuid, NULL, 0, DIGCF_PRESENT);

if (hDevInfo == INVALID_HANDLE_VALUE)

{

SetupDiDestroyDeviceInfoList(hDevInfo);

}

TCHAR szBuf[MAX_PATH];

SP_DEVINFO_DATA spDevInfoData = {sizeof(SP_DEVINFO_DATA)};

CString sTmp, sTotal;

//开始列举设备

for (DWORD i = 0; SetupDiEnumDeviceInfo(hDevInfo, i, &spDevInfoData); i++)

{

//得到设备类描述

if (SetupDiGetClassDescription(&spDevInfoData.ClassGuid, szBuf, MAX_PATH, NULL))

{

sTmp.Format(_T("\n%03d : ClassDescription = %s\n"), i, szBuf);

sTotal += sTmp;

}

//得到设备实例的唯一标识ID(由注册表路径组成)

if (SetupDiGetDeviceInstanceId(hDevInfo, &spDevInfoData, szBuf, MAX_PATH, NULL))

{

sTmp.Format(_T("%03d : InstanceId = %s\n"), i, szBuf);

sTotal += sTmp;

}

//得到设备名称

if (SetupDiGetDeviceRegistryProperty(

hDevInfo, &spDevInfoData, SPDRP_DEVICEDESC, NULL, (PBYTE)szBuf, MAX_PATH, NULL))

{

sTmp.Format(_T("%03d : DeviceDesc = %s\n"), i, szBuf);

sTotal += sTmp;

}

//得到设备型号

if (SetupDiGetDeviceRegistryProperty(

hDevInfo, &spDevInfoData, SPDRP_FRIENDLYNAME, NULL, (PBYTE)szBuf, MAX_PATH, NULL))

{

sTmp.Format(_T("%03d : FriendName = %s\n"), i, szBuf);

sTotal += sTmp;

}

//得到设备在注册表中的子路径

if (SetupDiGetDeviceRegistryProperty(

hDevInfo, &spDevInfoData, SPDRP_DRIVER, NULL, (PBYTE)szBuf, MAX_PATH, NULL))

{

sTmp.Format(_T("%03d : Regedit Path = %s\n"), i, szBuf);

sTotal += sTmp;

}

AfxMessageBox(sTotal);

hDevice=CreateFile(szBuf,GENERIC_WRITE|GENERIC_READ,FILE_SHARE_READ|FILE_SHARE_WRITE,NULL,OPEN_EXISTING,0,NULL);

if(hDevice==INVALID_HANDLE_VALUE)

{

AfxMessageBox("erro");

}

请高手指点下,为什么我打开设备老实失败啊~~~

前提是,我能获得设备的信息,设备在注册表的子路径都可以获得就是打开失败


本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/jisuanjixue/article-34046-1.html

    相关阅读
      发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

      • 立花慎之介
        立花慎之介

        卧槽新歌

      • 刘亚琦
        刘亚琦

        也应该鼓励三两大龄剩女合嫁一夫

      • 陶晓艳
        陶晓艳

        还是蒋委员长说的对

      热点图片
      拼命载入中...