|
我调试一个矩阵键盘的驱动程序的时候,该驱动程序的基本功能代码都测试过了,在将应用层和驱动程序联合调试的时候,串口出现以下错误:出错后可以继续运行,下一次从应用层读这个设备还是一样的错误输出。
=========================================================
---------------s1----
---------------s2----
---------------s3----
Data Abort: Thread=8f8797fc Proc=8e026160 'device.exe'
AKY=00000405 PC=03f62e4c(devmgr.dll+0x00002e4c) RA=03f62e4c(devmgr.dll+0x00002e4
c) BVA=06000000 FSR=00000007
RaiseException: Thread=8f8797fc Proc=8e026160 'device.exe'
AKY=00000405 PC=03f8dfec(coredll.dll+0x0001dfec) RA=8c22a9fc(NK.EXE+0x0002a9fc)
BVA=00000003 FSR=00000003
=====================
我的应用层代码:(出错的时候应用层软件提示:“HGP1 read error”)
int k=-12345;
LPVOID KP=&k;
BOOL rfs=ReadFile(kbf,KP,sizeof(int),NULL,NULL);
if(rfs)
{
CString str,ss;
ss="%d";
str.Format(ss,k);
CEdit* we=(CEdit*)GetDlgItem(IDC_EDIT1);
we->SetWindowText(str);
}
else
{
MessageBox(L"HGP1 read error");
}
我的驱动程序代码:
DWORD HGP_Read(DWORD hOpenContext, LPVOID pBuffer, DWORD Count)
{
printf("\n\n---------------s1----\n");
int key=read_buffer(); //读键盘缓冲区,如果缓冲区是空的,返回-1 //2010-1-19 8:58
printf("\n\n---------------s2----\n");
//pBuffer=&key;
memcpy(pBuffer,&key,sizeof(int));
printf("\n\n---------------s3----\n");
DWORD ret;
if(key==-1)
ret=-1;
else
ret=1;
return ret;
}
驱动层出错的输出信息在上面。。。。
我这个问题,怎么解决呀?
好象是程序的最后返回阶段出错了。。。
|
|