阅读:1728回复:6
求助:MPQueryInformation的缓冲区长度为负数
小弟我前几天问了一个VPN客户端和Enternet共存的问题,结果无人应答。我的VPN客户端的IM Driver可以绑定到Enternet暴露出来的虚拟网卡上,可是每次拨号成功后,总是弹出“svchost.exe出错”的对话框,显示某内存不能读/写。偶百思不得其解,前几天终于找到原因:每次ADSL拨号完成后,我的IM Driver都会收到OID_803_2_PERMANENT_ADDRESS的查询,可是其InformationBufferLength为负数,-122,虽然其为ULONG类型,不过我想InformationBufferLength作为ULONG也太大了吧(0xFFFFFF86)。结果总是造成缓冲区溢出,导致svchost出错。你们碰到过类似问题吗?
问题: 1. 这个OID_803_2_PERMANENT_ADDRESS是谁查询的?是svchost进程还是Enternet? 2. 碰到这种情况怎么处理?缓冲区长度为负,这是我控制不了的。 多谢多谢,//bow |
|
沙发#
发布于:2003-07-18 17:52
问题: 1. 这个OID_803_2_PERMANENT_ADDRESS是谁查询的?是svchost进程还是Enternet? 应该是系统问的。 2. 碰到这种情况怎么处理?缓冲区长度为负,这是我控制不了的。 你只需copy 6 byte, *BytesWritten = 6 |
|
板凳#
发布于:2003-07-18 18:09
ULONG怎么会有复数????
|
|
|
地板#
发布于:2003-07-18 18:36
输.区的类型不对
|
|
|
地下室#
发布于:2003-07-19 21:02
你在哪儿看到是负数?
SOFTICE? |
|
|
5楼#
发布于:2003-07-21 17:00
1。我觉得应该是Enternet发送的这个查询OID。因为我的IM Driver可以绑定真实网卡、拨号网络,都没有问题,偏偏绑在Enternet虚拟网卡上就出这个问题。
2。我试过强行设置为6,*BytesWritten=6,也不行。 3。InformationBufferLength的值很容易就看到呀,可以在MPQueryInformation一开始就DbgPrint出来,用dbgview可以看;或者用softice调试也可以看到。 4。当然ULONG是非负的,可是总不能是0xFFFFFF86吧,也太大了些吧 几位弟兄,你们没有碰到这种问题吗?你们的VPN客户端和Enternet在2K下面没有问题吗? |
|
6楼#
发布于:2003-07-22 18:27
1。我觉得应该是Enternet发送的这个查询OID。因为我的IM Driver可以绑定真实网卡、拨号网络,都没有问题,偏偏绑在Enternet虚拟网卡上就出这个问题。 为什么不可能? 呵呵。你看看长度本身的类型.别把UCHAR 直接用ULONG print出来了.很 容易出问题的. |
|
|