我已知一个USB设备在设备管理中的名称(在设备管理器中能看到设备名称和com口),如何编程得到它的com口?

解决方案 »

  1.   

    在设备管理器中看到的只是设备的友好显示名称,可以用SetupDIxxx系列API来枚举所有的串口名(不是友好名,也不是COMx),直接用这个名称就可以打开设备,不需要知道它是哪个COM口。
      

  2.   

    串口名(不是友好名,也不是COMx)?串口名是什么?
      

  3.   

    通过设备枚举得到友好名字,然后用IMoniker绑定就可以得到接口,如果要使用具体的,可以再query.
      

  4.   

    WINSETUPAPI BOOL WINAPI
      SetupDiGetDeviceRegistryProperty(
        IN HDEVINFO  DeviceInfoSet,
        IN PSP_DEVINFO_DATA  DeviceInfoData,
        IN DWORD  Property,
        OUT PDWORD  PropertyRegDataType,  OPTIONAL
        OUT PBYTE  PropertyBuffer,
        IN DWORD  PropertyBufferSize,
        OUT PDWORD  RequiredSize  OPTIONAL
        );
    其中Property你仔细参看一下MSDN,应该会有收获 
      

  5.   

    我现在可以穷举设备
    通过函数SetupDiGetDeviceRegistryProperty得到一个设备名称“\Device\0000006a”,可以直接CreateFile这个设备吗?
    SetupDiGetDeviceRegistryProperty(
      hDevInfo,
      &DeviceInfoData,
      SPDRP_PHYSICAL_DEVICE_OBJECT_NAME,
      &DataT,
      (PBYTE)buffer,
      buffersize,
      &buffersize);
      

  6.   

    呵呵,你自己试一下不就什么都清楚了吗??你通过CreateFile调用看看是否成功就知道了。
      

  7.   

    对普通usb设备通讯应该都是要到固定的端点吧。
    2看你的驱动程序是否有对固定端点的转化程序。
    3ddk下有一个usbview的例子可以参考以下。
    个人的理解。