阅读:1364回复:2
一运行测试程序就自动关机,为什么?大侠路过进来帮个忙。
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()的区别和各自的用法,谢谢啦。 |
|
|
沙发#
发布于:2005-04-18 14:23
buff=\'a\'+j; ---总感觉这句不顺眼
你用的是ds吧,,很遗憾我没用过,,,不过总感觉是内存操作上有问题!! |
|
板凳#
发布于:2005-04-18 14:49
我是用ds做的。
buff=\'a\'+j;这个没有问题。 就是我修改的地方有问题。 我就想知道 Mem.MapToSystemSpace() 和 I.BufferedReadDest() 的区别和各自的用法。 还有为什么我用了I.BufferedReadDest()会自动关机。 |
|
|