|
wince 6.0 iocontrol 传值的问题
[复制链接]
这几天在wince 6.0下调试一个驱动
大概情况是这样
一个应用程序,调用一个驱动的ioctl,传了两个buffer过去。
然后再那个驱动里面我遇到两个问题:
1. 在驱动里访问buffer,发现应用程序里的值只能访问到第一个
比如,应用程序里定义
UINT16 dwInBuffer[4] = {1,2,3,4};
UINT16 dwOutBuffer[4] = {7,8,9,0};
DeviceIoControl(hINNO,
IIC_READ_BYTE,
dwInBuffer,2,
dwOutBuffer,2,
&dwReturn,NULL))
驱动的IOCONTROL里试图打印出buffer里的值
RETAILMSG(1, (TEXT("\r\n#####################INO_IOControl:dump bufin values %d,%d\r\n"),pBufIn[0],pBufIn[1]));
RETAILMSG(1, (TEXT("\r\n#####################INO_IOControl:dump bufout values %d,%d\r\n"),pBufOut[0],pBufOut[1]));
发现只能打印出第一个
“
RETAILMSG(1, (TEXT("\r\n#####################INO_IOControl:dump bufin values %d,%d\r\n"),pBufIn[0],pBufIn[1]));
RETAILMSG(1, (TEXT("\r\n#####################INO_IOControl:dump bufout values %d,%d\r\n"),pBufOut[0],pBufOut[1]));
”
2.还出现了data abort
"
NO_IOControl:the reg address is 0x1
Exception 'Data Abort' (4): Thread-Id=00f60006(pth=8072d954), Proc-Id=00400002(pprc=80608308) 'NK.EXE', VM-active=059e0002(pprc=812eddac) 'explorer.exe'
PC=c0ac1870(i2c.dll+0x00001870) RA=c0ac176c(i2c.dll+0x0000176c) SP=d26ffe58, BVA=0003f694
!!! I2C_IST EXCEPTION: 0xC0000005 !!!
INNO_I2C_Read ERROR: 3221225477
Read IIC addr 0x1 val 0x7 dwReturn = 1
"
这个驱动还会调用另外一个驱动(i2c)。我对wince不熟悉。看了一些文档。尝试了一些方法,比如使用CeOpenCallerBuffer去做映射,结果还是出现第一个问题,第二个问题倒是不会出现。
不知道大家有没有遇到类似的问题。请指点一下。谢了
|
|