DeviceIoControl在驱动的响应函数中,I.Information()是此次消息响应的返回值,我现在弄不清他是控制此次返回的数据的长度,还是说就是一个标志,提供给上层应用程序来声明此次返回数据的多少呢?
回复(11) 2003-08-01 13:58 来自版块 - USB驱动开发
表情
Always!978 原来如此,非常感谢(2003-08-08 11:06)
swf2003 我又有点蒙了 :o 我其实想问,这个I.Information()是控制我返回数据长度的吗?就是说我本来向缓冲区中添了40个char型数据,但是我I.Information() = 10,那么它到底是返回10个char还是40个char呢? 不好意思,懒得去试,所...(2003-08-01 16:40)
jinghuiren这个I.Information是需要你来填充的,当每一次读或写数据完成后,驱动需要向应用程序返回,返回之前需要填充I.IoStatus.Information以及I.IoStatus.Status,前一个是你这次读写的数据量,如你前面所说就是10不是40,后一个是本次的状态(2003-08-01 16:40)
Always!978 我又有点蒙了 :o 我其实想问,这个I.Information()是控制我返回数据长度的吗?就是说我本来向缓冲区中添了40个char型数据,但是我I.Information() = 10,那么它到底是返回10个char还是40个char呢? 不好意思,懒得去试,所...(2003-08-01 16:31)
jinghuiren呵呵,看来我这个半道出家做驱动的还有很多东西要学呀 :P 我说起来也做驱动不短时间了,可是连一本写驱动的书都没有认认真真的读完过!(2003-08-01 16:05)
swf2003确实是返回的长度 问一下楼上的,这个值应该是被驱动拷贝到了deviceiocontrol()函数的倒数第二个参数nBytes里吧? 不是,给用户态返回的值应该是 I/O 管理器拷贝的! (2003-08-01 15:48)
jinghuiren确实是返回的长度 问一下楼上的,这个值应该是被驱动拷贝到了deviceiocontrol()函数的倒数第二个参数nBytes里吧?(2003-08-01 14:25)
swf2003typedef struct _IO_STATUS_BLOCK { NTSTATUS Status; ULONG Information; } IO_STATUS_BLOCK, *PIO_STATUS_BLOCK; DeviceIoControl 处理的返...(2003-08-01 14:16)
swf2003它的值是此次返回的数据的长度! (2003-08-01 14:13)
Always!978 哦,那和我想的一样了。(2003-08-01 14:07)

返回顶部