Raul_Shao
驱动牛犊
驱动牛犊
  • 注册日期2005-03-05
  • 最后登录2006-03-22
  • 粉丝0
  • 关注0
  • 积分99分
  • 威望14点
  • 贡献值0点
  • 好评度5点
  • 原创分0分
  • 专家分0分
阅读:1364回复:2

一运行测试程序就自动关机,为什么?大侠路过进来帮个忙。

楼主#
更多 发布于:2005-04-18 11:52
void wdm1Device::SerialRead(KIrp I)
{
T<<\"->SerialRead()\\n\";
NTSTATUS status = STATUS_SUCCESS;

        //KMemory Mem(I.Mdl());
        //PUCHAR pBuffer = (PUCHAR) Mem.MapToSystemSpace();
        //我看了东南大学杨全胜老师的例子,将上面两句改成如下一句
PUCHAR pBuffer = (PUCHAR) I.BufferedReadDest();

ULONG readSize = I.ReadSize();
char buff[512];
int n=512,j=0;
for(int i=0;i<n;i++,j=(j+1)%26)
{
buff=\'a\'+j;
}
buff[readSize]=\'\\0\';
strcpy((char*)pBuffer,buff);
ULONG bytesRead = strlen(buff);

T<<\"pBuffer:\"<<pBuffer<<\"\\n\";
T<<\"bytesRead:\"<<bytesRead<<\"\\n\";
T<<\"readSize:\"<<readSize<<\"\\n\";
T<<\"buff:\"<<buff<<\"\\n\";

I.Information() = bytesRead;
I.Status() = status;
ReadQueue.PnpNextIrp(I);

T<<\"<-SerialRead()\\n\";
}
请大侠说说为什么会死机。
还有一下Mem.MapToSystemSpace()和I.BufferedReadDest()的区别和各自的用法,谢谢啦。
我是一只小小牛
worldcup
驱动小牛
驱动小牛
  • 注册日期2004-08-19
  • 最后登录2006-10-19
  • 粉丝0
  • 关注0
  • 积分7分
  • 威望2点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2005-04-18 14:23
buff=\'a\'+j; ---总感觉这句不顺眼

你用的是ds吧,,很遗憾我没用过,,,不过总感觉是内存操作上有问题!!

Raul_Shao
驱动牛犊
驱动牛犊
  • 注册日期2005-03-05
  • 最后登录2006-03-22
  • 粉丝0
  • 关注0
  • 积分99分
  • 威望14点
  • 贡献值0点
  • 好评度5点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2005-04-18 14:49
我是用ds做的。
buff=\'a\'+j;这个没有问题。
就是我修改的地方有问题。

我就想知道
Mem.MapToSystemSpace()

I.BufferedReadDest()
的区别和各自的用法。

还有为什么我用了I.BufferedReadDest()会自动关机。


我是一只小小牛
游客

返回顶部