阅读:1866回复:17
关于应用程序向驱动程序发送数据的一个问题
应用程序向驱动程序发送数据时,必须发出字符串类型吗?
比如说我现在想发一连串的数据(从1到500),我是否要把这些整型数先转换成 二进制数并赋予字符串类型,之后再利用DeviceIoControl来将数据发送出去? 谢谢了先 |
|
沙发#
发布于:2004-06-03 19:13
不太对吧:)
|
|
|
板凳#
发布于:2004-06-03 19:32
那应该怎么做?
不太对吧:) |
|
地板#
发布于:2004-06-03 19:43
应该相应的填入input buffer中呀,不对吗?
|
|
|
地下室#
发布于:2004-06-03 19:44
这个我知道,是填入buffer中的。
但就是填入buffer中的应该是什么样的数据呢? 应该相应的填入input buffer中呀,不对吗? |
|
5楼#
发布于:2004-06-03 19:47
你看msdn里面:
hDevice = CreateFile(\"\\\\\\\\.\\\\PhysicalDrive0\", // drive to open 0, // no access to the drive FILE_SHARE_READ | // share mode FILE_SHARE_WRITE, NULL, // default security attributes OPEN_EXISTING, // disposition 0, // file attributes NULL); // do not copy file attributes if (hDevice == INVALID_HANDLE_VALUE) // cannot open the drive { return (FALSE); } bResult = DeviceIoControl(hDevice, // device to be queried IOCTL_DISK_GET_DRIVE_GEOMETRY, // operation to perform NULL, 0, // no input buffer pdg, sizeof(*pdg), // output buffer &junk, // # bytes returned (LPOVERLAPPED) NULL); // synchronous I/O CloseHandle(hDevice); pdg为DISK_GEOMETRY结构体指针,这里是获得信息而已 |
|
|
6楼#
发布于:2004-06-03 20:02
bResult = DeviceIoControl(hDevice, // device to be queried
IOCTL_DISK_GET_DRIVE_GEOMETRY, // operation to perform NULL, 0, // no input buffer pdg, sizeof(*pdg), // output buffer &junk, // # bytes returned (LPOVERLAPPED) NULL); // synchronous I/O CloseHandle(hDevice); pdg为DISK_GEOMETRY结构体指针,这里是获得信息而已 pdg是一个指针,但他所指向的应该是一个普通的十进制数呢,还是一串比特流(即二进制数)? |
|
7楼#
发布于:2004-06-03 20:06
你要我怎么说呢???
他指向的是一个结构体,结构体里面的数据当然是以byte存放的数据咯。 pdg是一个指针,但他所指向的应该是一个普通的十进制数呢,还是一串比特流(即二进制数)? |
|
|
8楼#
发布于:2004-06-03 20:16
老大,帮帮忙,说到关键点了。
就是这个结构体的问题。 如果我要发一串从1到500的数,我应该把这一串数放到这个结构体中。那这500个数是否应该转换成二进制的数?也就是说,这个结构体中的数应该是一种什么样的数据格式? 可能问题比较菜,谢谢了 你要我怎么说呢???[/quote] |
|
9楼#
发布于:2004-06-04 08:39
侠客,难道你存储的数据不是以二进制存放的吗?你获得的哪个数据不是0和1组成的?
|
|
|
10楼#
发布于:2004-06-04 10:40
这要看你下位机是怎么读的了,如果下位机是16位数据线,
上位机也应该是两个字节为一个单位.至于中间怎么传,你不用管他. |
|
11楼#
发布于:2004-06-04 11:50
那我在应用程序中,是否需要将人为地将数据进行二进制转换呢?
侠客,难道你存储的数据不是以二进制存放的吗?你获得的哪个数据不是0和1组成的? |
|
12楼#
发布于:2004-06-04 12:43
我被问倒了!:D
碰到牛人了!!! 我该怎么说…… 无语…… |
|
|
13楼#
发布于:2004-06-04 13:39
你不要这样子嘛!
我是因为不懂,所以才问的,也许你觉得得问题很可笑,但对我来说是困惑的。我知道VB中用套接字通信时,需要自己将数据转换成二进制后传送的。所以对VC与驱动程序通信接口上的具体操作很疑惑,又找不到相关的资料。 你一定是认为我不懂硬件有关信息传送的机制,呵呵,这个我当然明白。 也许是我自己没说清楚问题。 我被问倒了!:D |
|
14楼#
发布于:2004-06-04 14:36
哈哈,是有一点低级,不过没关系,让我来试试
比如 char data[]={1,2,3,4}; 你是要把data送到接口上,不需要转换,数组在内存里就是以二进制存放的1,2,3等数值,直接传递就好。除非你写成了 char data[]={\'1\',\'2\',\'3\',\'4\'}; 呵呵 |
|
|
15楼#
发布于:2004-06-04 15:50
sorry!
因为偶实在不知道该怎样回答你才好。 谢谢cc_file的解答;) 你不要这样子嘛![/quote] |
|
|
16楼#
发布于:2004-06-04 16:50
哈哈,有问题就问,勇气可嘉,支持你,不懂继续来
|
|
|
17楼#
发布于:2004-06-04 17:24
可惜偶有问题都不知道问谁:( 看来朋友太少了
哈哈,有问题就问,勇气可嘉,支持你,不懂继续来 [编辑 - 6/4/04 by flyhye] |
|
|