阅读:1780回复:8
还是在passthru中写文件的问题
我用NdisAllocateMemory或者NdisAllocateMemoryWithTag申请内存,存放workitem的context,用IoAllocateWorkItem,IoQueueWorkItem,在MpSendPackets里创建并插入workitem,在写文件的函数里用NdisFreeMemory释放内存,但是这样可能会导致死机。不知道错在哪了。请求高人指点。
|
|
沙发#
发布于:2004-03-17 09:22
忘了说了,我在执行完IoQueueWorkItem后,立刻执行oFreeWorkItem释放workitem,因为只有MPSendPackets知道IOWorkItem的指针。而context是在写文件后释放的。
|
|
板凳#
发布于:2004-03-18 17:35
关注
|
|
|
地板#
发布于:2004-03-19 09:00
对iqrl判断了吗?
这里前几天有一个帖子讲过这个,里边的代码试过了,没问题。 |
|
地下室#
发布于:2004-03-19 10:16
我就是要在DISPATCH_LEVEL写文件,所以才用IoQueueWorkItem。那个例子用的是ExQueueWorkItem,但是MSDN说这个函数已经过时了。这两个函数用法不太一样。
|
|
5楼#
发布于:2004-03-19 13:00
你用哪个函数写文件的。
|
|
6楼#
发布于:2004-03-19 15:42
我用的是ZwWriteFile,在PASSIVE_LEVEL写的很正常
|
|
7楼#
发布于:2004-03-22 12:44
DDK说:
“Callers of ZwWriteFile must be running at IRQL PASSIVE_LEVEL. ” |
|
8楼#
发布于:2004-03-22 16:47
我知道,只能在PASSIVE_LEVEL调用ZwWriteFile,但IoQueueWorkItem可以实现在DISPATCH_LEVEL间接调用只有PASSIVE_LEVEL才能调用的函数。
我已经解决这个问题了,只要在Context里面把IOWorkItem的指针传给回调函数,让回调函数来释放就行了。 |
|