阅读:1218回复:0
读5933寄存器????
我用的是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,是一个很大的数。 还是就是打开句柄没有问题,请各位帮忙。 |
|