lczhi511
驱动牛犊
驱动牛犊
  • 注册日期2002-05-19
  • 最后登录2007-12-24
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1217回复:0

读5933寄存器????

楼主#
更多 发布于:2002-08-24 15:52
我用的是osr的那个s5933驱动例子,我加了一点自己的代码,如下:
case IOCTL_OSR_READREGISTER:
      if( OutputLength<sizeof(ULONG))
      code = STATUS_INVALID_PARAMETER;
       else
        {   temp=
READ_PORT_ULONG(devExt->AmccBaseRegisterAddress+MCSR_OFF);
RtlCopyMemory(Irp->AssociatedIrp.SystemBuffer,&temp,sizeof(ULONG));}break;
  在vc6.0中,我的代码是这样的:
HANDLE S5933=CreateFile(\"\\\\\\\\.\\\\OSRPCI\",
GNRIC_READ | GENERIC_WRITE,
FILE_SHARE_READ | FILE_SHARE_WRITE,
NULL, CREATE_NEW,FILE_FLAG_OVERLAPPED, NULL);  
if( S5933==INVALID_HANDLE_VALUE)
{AfxMessageBox(\"!!!!!!!\");
}
     ULONG temp;
DWORD BytesReturned;
if( !DeviceIoControl(S5933,IOCTL_OSR_READREGISTER,
NULL, 0, // Input
&temp, sizeof(ULONG),// Output
&BytesReturned, NULL))
AfxMessageBox(\"READ fail!!!\");
else AfxMessageBox(\"READ ok!!!\");
其实我也知道是很简单的一点东西,可就是读不到想要的数。即使在驱动中把temp赋于立即数,也读不回数据,读的则是BytesReturned的值,而且不是4,是一个很大的数。
还是就是打开句柄没有问题,请各位帮忙。
游客

返回顶部