现在简单做了一个VC上位机程序访问驱动,获取数据。 
      因为交到我这里的时候就是用的EZUSB,所以我也是用的EZUSB.SYS。不过我想应该没什么问题的。完全仿造EZMR这个工程看了一遍,写出的来得程序只能写数据而不能读数据,怪哉啊!怪哉! 
    bResult = DeviceIoControl (hDevice, 
       IOCTL_EZUSB_BULK_WRITE,       
       &bulkControl, 
       sizeof (BULK_TRANSFER_CONTROL), 
       buffer, 
       length, 
       (unsigned long *)&nBytes, 
       NULL); 
       ——————这是写的调用,完全参照control panel里的程序。 
但是为什么完全仿照这个的读数据却返回不了值呢? 
bResult = DeviceIoControl (hDevice, 
       IOCTL_EZUSB_BULK_READ,  
      &bulkControl, 
       sizeof (BULK_TRANSFER_CONTROL), 
       buffer, 
       length, 
       (unsigned long *)&nBytes, 
       NULL);——————我用VC调试,看到所有的参数都与control panel一样,但是传进去都一样,为什么传出来的就是false呢? 
      读与写有什么配置上的差异呢?头都快想破了都没想出来。 
      另: 
      因为control panel里的create File里的申明是这样的: 
CreateFile(   completeDeviceName, 
                               GENERIC_WRITE, 
                               FILE_SHARE_WRITE, 
                               NULL, 
                               OPEN_EXISTING, 
                               0, 
                               NULL); 
我看到没有GENERIC_READ, 
我自己的申明如下: 
WhDevice = CreateFile("[url=]\\\\.\\ezusb-0[/url]",  
               GENERIC_READ|GENERIC_WRITE, 
                FILE_SHARE_READ|FILE_SHARE_WRITE, 
               NULL, 
               OPEN_EXISTING, 
               0,//FILE_ATTRIBUTE_NORMAL, 
               NULL); 
也读不出来啊。为什么他没有read能读出来,而我有没有read都读不出来呢? |