首页
社区
课程
招聘
DeviceIoControl输入缓冲区长度问题
发表于: 2011-4-9 17:14 4836

DeviceIoControl输入缓冲区长度问题

2011-4-9 17:14
4836
result=
		DeviceIoControl(
		hMyHandle  ,       // handle to volume
		IOCTL_KSBINSWORD_SCSI_WRITE,               // dwIoControlCode
		(void*)Param,           // MOVE_FILE_DATA structure
		sizeof(ULONG) + sizeof(ULONG) + Param->m_filesize,         // size of input buffer
		NULL,                          // lpOutBuffer
		NULL,      // nOutBufferSize
		&DeviceRet,                // number of bytes returned
		0); // OVERLAPPED structure

当这个输入长度超过12000的时候
sizeof(ULONG) + sizeof(ULONG) + Param->m_filesize
就会报998错误
实际上数据长度有1w6了 难道DeviceIoControl 不支持大数据缓冲输入吗?

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (3)
雪    币: 199
活跃值: (40)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
求教各位大牛
2011-4-9 17:40
0
雪    币: 202
活跃值: (69)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
3
可以的,没有任何问题,你再检查检查,或者再多贴点代码
你给Param有分配那么大的空间吗?
为什么输入缓冲区是一个动态的size?
不懂为什么需要传递那么多数据给内核呢?
2011-4-10 07:08
0
雪    币: 199
活跃值: (40)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
谢谢楼上的兄弟
我后来发现问题了 应该传递的长度是 sizeof(Param)
2011-4-11 22:03
0
游客
登录 | 注册 方可回帖
返回
//