HANDLE hPipe = OpenMyDevPipe("MyPipe1"); //驱动程序里面的 Pipe 名, 对应访问某个端点的 I/O, 这里我乱写的, 需要与驱动一致
if(hPipe != INVALID_HANDLE_VALUE) //打开 Pipe 成功
 {
   ReadFile(hPipe, Buffer, BufSize, &nBytesRead, NULL); //从 hPipe 里读取数据到 Buffer 里
   //WriteFile(hPipe, Buffer, BytesToWrite, &nBytesWritten, NULL); //把 Buffer 里面的 BytesToWrite 字节写入 hPipe
   CloseHandle(hPipe);
 }
3.读写 USB 口的程序
 ①与驱动的接口
  a.利用驱动程序里面的 GUID 找出设备的文件名, 用 CreateFile 函数打开设备。我前面的程序里面的 OpenUsbDevice 就是这个作用
  b.通过 a.得到的设备文件名和驱动程序里面的 Pipe 名打开 Pipe, 访问这个 Pipe 对应的 USB 端点 (读写数据)
  c.使用 a.的 CreateFile 得到的句柄, 通过 DeviceIoControl 实现设备规定的动作
 ②有关需要的资料
  a.Vender ID, Product ID 和 GUID 一般在驱动程序的 .inf 文件里面能看到, 如果找不到就需要和厂家联系
  b.Pipe 的名字是驱动程序规定的, 需要有驱动程序的资料才能知道
  c.DeviceIoControl 的参数需要有驱动程序的资料或者硬件资料才能知道
问题:
上面函数中的MyPipe1这个在系统中怎么查找
我在系统中运行usbview.exe好象不能运行

解决方案 »

  1.   

    使用SetupDiEnumDeviceInterfaces列举设备,再用SetupDiGetInterfaceDeviceDetail取每个设备详细信息,根据详细信息取设备名称DevicePath.
      

  2.   

    http://blog.csdn.net/rageliu/archive/2006/05/18/743940.aspx
    http://blog.csdn.net/rageliu/archive/2006/05/18/743943.aspx
    http://blog.csdn.net/rageliu/archive/2006/05/18/743947.aspx
      

  3.   

    我确定是你的名字不对。
    windows对设备的命名很特殊,比如磁盘C:,如果打开设备的话,名字就应该是\GLOBAL??\C:这样的名字。
    查看系统的设备可以使用“DevView”这个小工具来看,或者使用windows驱动开发包中的“device tree”来查看。
    或者使用gdsdyl(gdsdyl 所说的方法枚举也可以。
      

  4.   

    USB Device一定需要 Driver的,看你的东西是用 BulkUsb的 Demo Driver吧,DDK里面同样目录下有 test AP,可以参考。