能力值:
( LV11,RANK:190 )
2 楼
(HDriver,CTLCode1,buffer,4*sizeof(int),NULL,NULL,(LPDWORD)&length,NULL);
能力值:
( LV4,RANK:50 )
3 楼
很明显,第四个参数,输入缓冲区大小不匹配
而应该是sizeof(buffer)
或楼上的4*sizeof(int)
能力值:
(RANK:50 )
4 楼
我想说我试过
int p = 0;
(HDriver,CTLCode1,p,sizeof(p),NULL,NULL,(LPDWORD)&length,NULL)
之类的,还是这个错误
能力值:
(RANK:50 )
5 楼
之前试过
int p =0;
HDriver,CTLCode1,p,sizeof(p),NULL,NULL,(LPDWORD)&length,NULL)
不行。。
现在换成
DeviceIoControl(HDriver,CTLCode1,&buffer,sizeof(buffer),NULL,NULL,&length,NULL);
也不行
第四个参数出错应该只会溢出吧,不会出现往0x00000000写入的情况……
能力值:
( LV4,RANK:50 )
6 楼
DeviceIoControl(HDriver,CTLCode1,&buffer,sizeof(buffer),NULL,NULL,NULL,NULL);
能力值:
(RANK:50 )
7 楼
问题依旧,前面试过这个参数了。。
顺便补充HANDLE部分
HANDLE HDriver = CreateFile(L"\\\\.\\MyDevice00",GENERIC_READ|GENERIC_WRITE,FILE_SHARE_READ,0,OPEN_EXISTING,FILE_ATTRIBUTE_SYSTEM,0);
HANDLE是正常的
能力值:
( LV4,RANK:50 )
8 楼
如果提示内存0x00000000不能写入,应该是输出缓冲区为空
要不用OD单步一下相关地址,或许很快就能找到原因
能力值:
( LV11,RANK:190 )
9 楼
FILE_SHARE_READ | FILE_SHARE_WRITE
能力值:
(RANK:50 )
10 楼
驱动里irp都木有收到,输出缓冲为空的话应该是驱动返回的时候才出错。。。
另外驱动里木有用到输出缓冲。。。
能力值:
(RANK:50 )
11 楼
这两种标志有啥区别么。。回去试试
能力值:
(RANK:50 )
12 楼
额,没看仔细,漏了一个标志。。
前面为了省事ring3部分copy了一下次还是自己好好查msdn,再也不抄代码了。。
下午回去测试结贴
能力值:
(RANK:50 )
13 楼
改了共享标志还是老样子
能力值:
(RANK:50 )
14 楼
找到问题了。。。上一个DeviceIoControl的参数问题,没指定lpBytesReturn
都是偷懒没查MSDN惹得祸
分数两位各一半吧,谢谢两位耐心解答