现在简单做了一个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都读不出来呢? |