阅读:2319回复:15
请问passthru在2000和xp中的区别
我能不能把passthru的2000版本直接在xp机器上使用,或者先把源代码在xp下编译。
|
|
|
沙发#
发布于:2003-11-03 11:11
应该没有问题,我没有直接拿那个例子试过,不过我用基于NTDDK中的Passthru做的东西,2000/XP都没有问题.
你试了有问题么? |
|
|
板凳#
发布于:2003-11-03 11:36
有问题啊,有时候会产生蓝屏现象。
|
|
|
地板#
发布于:2003-11-03 13:02
有问题啊,有时候会产生蓝屏现象。 那应该不是Passthru本身的问题,应该是你加的处理里有问题,跟系统没有什么关系. |
|
|
地下室#
发布于:2003-11-03 15:23
奇怪,我看调试信息好像和塞门铁客防火墙有关。
|
|
|
5楼#
发布于:2003-11-03 15:52
嗯,我用的时候偶尔也会蓝,也是说norton的防火墙的错。我在2k下的。
|
|
6楼#
发布于:2003-11-03 15:58
现在出现一个更奇怪的问题,有一次蓝屏,显示Kmixer.sys出错,我查了查发现Kmixer.sys是有关Audio的问题。
|
|
|
7楼#
发布于:2003-11-03 16:39
呵呵,我也碰见过,也是说是audio的问题,不过文件名好像不是kmixer.sys罢了。
肯定是你改的有问题。我找到错的地方后,就再也没有见到了。 你看看是不是free memory的时候的错误。我的错误好像是free的时候大小弄错了。 :D |
|
8楼#
发布于:2003-11-03 20:53
这问题估计要胡老大才知道
|
|
|
9楼#
发布于:2003-11-04 09:11
谢谢各位的指点,现在找到原因了,arthurtu老大说的对:我释放的时内存大小和分配的不一样,所以导致了蓝屏。 :)
|
|
|
10楼#
发布于:2003-11-04 09:25
谢谢各位的指点,现在找到原因了,arthurtu老大说的对:我释放的时内存大小和分配的不一样,所以导致了蓝屏。 :) 不明白.能不能具体描述一下,我觉得这个解释不很合理,释放内存只要地址不错就应该不会出错.释放时是不关心大小的. 分配内存我们一般用ExAllocatePool,释放内存用ExFreePool,这个函数只关心内存的起始地址.如果分配的是NDIS_BUFFER,假设你分配了100个字节,处理过程中将NDIS_BUFFER_LENGTH改为50,对释放内存是没有影响的,只要你没有改动MappedSystemVa域,调用NdisFreeBuffer是不会出错的. |
|
|
11楼#
发布于:2003-11-04 09:50
to SharpShooter:我用的是NdisAllocateMemory,NdisFreeMemory。
|
|
|
12楼#
发布于:2003-11-04 11:23
ndisfreememory第二和第三个参数也都可以设成0的吧?有什么区别吗?
|
|
13楼#
发布于:2003-11-04 13:06
ndisfreememory第二和第三个参数也都可以设成0的吧?有什么区别吗? 有区别的,另外如果ndisfreememory的地址超界,肯定会出兰屏错误的。 |
|
|
14楼#
发布于:2003-11-04 13:27
to SharpShooter:我用的是NdisAllocateMemory,NdisFreeMemory。 谢谢. 原来如此,我没有用过这两个函数,就我的经验,包括我有幸看到的一些国外商业软件的代码,经常会有这样的处理:比如要砍掉一个NdisBuffer的尾部一些字节,直接将其BufferLength调整就可以了,释放的时候也没有必要恢复,应该是没有问题的. 看来这两个函数是要关心释放长度的了.我觉得处理中涉及到Buffer的恢复的话,写起来就得更仔细点了. |
|
|
15楼#
发布于:2003-11-04 14:09
总之,你拿多少,就还多少,才是安全之道。 :D
释放时是不关心大小的. 不认同。 |
|