cvwjy
驱动牛犊
驱动牛犊
  • 注册日期2003-04-01
  • 最后登录2003-08-13
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1116回复:4

救命啊!UMP蓝屏啦!

楼主#
更多 发布于:2003-05-28 09:48
我按DS写了个验证的WDM
驱动里为:
const char *FIRMWAR_GET=\"SYS OK\";
NTSTATUS NAFPCIDevice::NAFPCI4223_IOCTL_800_Handler(KIrp I)
{
        ULONG fwLength=0;
NTSTATUS status = STATUS_SUCCESS;
        fwLength=strlen(FIRMWAR_GET)+1;
t << \"Entering NAFPCIDevice::NAFPCI4223_IOCTL_800_Handler, \" << I << EOL;
 if(I.IoctlOutputBufferSize()>=fwLength)
 {
 strcpy((PCHAR)I.IoctlBuffer(),FIRMWAR_GET);
 return I.Complete(STATUS_SUCCESS);
 }
 else{
 I.Information()=0;
 return
 I.Complete(STATUS_BUFFER_TOO_SMALL);
 }
  return status;
}
程序中为:
HANDLE hDevice;
BOOLEAN b;
CHAR FirmwareRev[60];
ULONG FirmwareRevSize;
 hDevice=CreateFile(
  \"\\\\\\\\.\\\\mydevice\",
  GENERIC_READ|GENERIC_WRITE,
  FILE_SHARE_READ,
  NULL,
  OPEN_EXISTING,
  FILE_ATTRIBUTE_NORMAL,
  NULL
  );
if(hDevice==INVALID_HANDLE_VALUE)
MessageBox(\"can\'t open the device\",NULL,MB_OK);
MessageBox(\"port open\", MB_OK) ;
b=DeviceIoControl(
 hDevice,
 NAFPCI4223_IOCTL_800,
 NULL,
 0,
 FirmwareRev,
 sizeof(FirmwareRev),
 &FirmwareRevSize,
 NULL
 );
CloseHandle(hDevice);
}
设备打开都没有问题,到IOCTROL后就蓝屏了!SOFTICE报告说是:MULTIPLE_IRQ_COMPLETE_REQUEST,哪儿不对呢?我实在找不出来!不过对DS的框架,我就只改了IOcontrol的操作,其他没有加。谢谢
cvwjy
驱动牛犊
驱动牛犊
  • 注册日期2003-04-01
  • 最后登录2003-08-13
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2003-05-28 10:36
同样问下,用inb()获得的是数据怎么传给应用程序?
用什么函数,和什么参数,我在DS上都没有看到!:(
glqgglq
驱动小牛
驱动小牛
  • 注册日期2001-04-16
  • 最后登录2008-10-28
  • 粉丝0
  • 关注0
  • 积分2分
  • 威望4点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2003-05-28 11:47
return
I.Complete(STATUS_BUFFER_TOO_SMALL);
这句不要用,要不会多重返回的,只返回状态status值就可以了
cvwjy
驱动牛犊
驱动牛犊
  • 注册日期2003-04-01
  • 最后登录2003-08-13
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2003-05-28 13:32
厉害!一语中的,都怪我没认真分析!死机N次后终于得到结果!
但是我用下列语句访问我的板上IO资源,怎么老是死循环呢?
0xc是IO口偏移地址,对基地址而言的。
*(UCHAR*)I.IoctlBuffer()=m_IoPortRange0.inb(0xc);
I.Information()=1;  
return status;
cvwjy
驱动牛犊
驱动牛犊
  • 注册日期2003-04-01
  • 最后登录2003-08-13
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2003-05-29 19:14
???怎么没人回答?
游客

返回顶部