Brifan_qudong
驱动牛犊
驱动牛犊
  • 注册日期2003-03-25
  • 最后登录2004-11-26
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望1点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
阅读:1836回复:4

api获取guid?

楼主#
更多 发布于:2003-11-06 11:16
大家好!
    我又一个问题想请教大家:应用程序和驱动程序之间可以通过获取guid的方式进行通信,在应用程序中可以通过如下三个函数获取设备的路径:setupdigetclassdev();
setupdienumdeviceinterfacedetail();
setupdigetdeviceinterfacedetail();
但我不太明白这三个函数是如何查找到设备路径的?
我们都是朋友。
yux008007
驱动牛犊
驱动牛犊
  • 注册日期2003-10-12
  • 最后登录2004-12-17
  • 粉丝0
  • 关注0
  • 积分1分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2003-11-06 12:01
给你个例子看看
附件名称/大小 下载次数 最后更新
2003-11-06_USBPort.zip (32KB)  34
Brifan_qudong
驱动牛犊
驱动牛犊
  • 注册日期2003-03-25
  • 最后登录2004-11-26
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望1点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2003-11-06 13:54
非常感谢楼上的兄弟提供的资料,恕兄愚昧,我现在就是不明白这个函数到底是怎样查找设备的?SetupDiEnumDeviceInterfaces()?
谢谢大家!
我们都是朋友。
yux008007
驱动牛犊
驱动牛犊
  • 注册日期2003-10-12
  • 最后登录2004-12-17
  • 粉丝0
  • 关注0
  • 积分1分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2003-11-06 15:45
这个函数找到pnp设备的路径给creatfile用
gaohtao
驱动牛犊
驱动牛犊
  • 注册日期2003-10-20
  • 最后登录2004-01-02
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2003-11-11 11:46
一个函数是不能识别路径的,前前后后一大队函数来互相配合才完成识别设备工作。我简单点从头来说:
GUID HidGuid;      //HID类别的识别符。
        HANDLE hDevInfo;     //含有HID信息的结构数组。
HIDD_ATTRIBUTES                   Attributes;
  PSP_DEVICE_INTERFACE_DETAIL_DATA  detailData;
  SP_DEVICE_INTERFACE_DATA          devInfoData;
int         MemberIndex = 0;
  LONG        Result;
ULONG Length;            //各种数据结构大小的标记量。
HidD_GetHidGuid( &HidGuid );  //取得HID类别的GUID。
//取得HID信息的结构数组。
hDevInfo=SetupDiGetClassDevs \\
(&HidGuid, \\
NULL, \\
NULL, \\
DIGCF_PRESENT|DIGCF_INTERFACEDEVICE);
devInfoData.cbSize = sizeof(devInfoData);
MemberIndex = 0; //HID信息的结构数组的索引
//识别HID接口;执行函数SetupDiGetClassDevs(...)
Result=SetupDiEnumDeviceInterfaces \\
(hDevInfo, \\
0, \\
&HidGuid, \\
MemberIndex, \\
&devInfoData);
//取得设备的路径信息。第一次执行传回DeviceInterfaceDataSize
Result = SetupDiGetDeviceInterfaceDetail \\
(hDevInfo, \\
&devInfoData, \\
NULL, \\
0, \\
&Length, \\
NULL);

detailData = (PSP_DEVICE_INTERFACE_DETAIL_DATA)malloc(Length);
                   detailData -> cbSize = sizeof(SP_DEVICE_INTERFACE_DETAIL_DATA);
//取得设备的路径信息。第二次执行传回detailData->DevicePath
                   Result = SetupDiGetDeviceInterfaceDetail \\
(hDevInfo, \\
&devInfoData, \\
detailData, \\
Length, \\
&Required, \\
NULL);
//开启一个HID设备,取得设备的代号
DeviceHandle=CreateFile \\
(detailData->DevicePath, \\
GENERIC_READ|GENERIC_WRITE, \\
FILE_SHARE_READ|FILE_SHARE_WRITE, \\
NULL, \\
OPEN_EXISTING, \\
0, \\
NULL);

以后就可以检测VID和PID进一步识别指定的设备。
游客

返回顶部