阅读:2426回复:6
如何查询mtu?
我想查询一下mtu.
在passthru的mpqueryinformation中, pAdapt->Request.RequestType = NdisRequestQueryInformation; pAdapt->Request.DATA.QUERY_INFORMATION.Oid = Oid; pAdapt->Request.DATA.QUERY_INFORMATION.InformationBuffer = InformationBuffer; pAdapt->Request.DATA.QUERY_INFORMATION.InformationBufferLength = InformationBufferLength; pAdapt->BytesNeeded = BytesNeeded; pAdapt->BytesReadOrWritten = BytesWritten; pAdapt->OutstandingRequests = TRUE; 后加了下列代码: if (Oid == OID_GEN_MAXIMUM_FRAME_SIZE) DbgPrint(\"MTU=%d\\n\",*(ULONG *)InformationBuffer); 结果打印出来的是 mtu=-146572696 并不是1500, 不知道是怎么回时,哪里错了? |
|
沙发#
发布于:2002-08-04 14:51
ntddndis.h中有这样的定义
#define OID_GEN_MAXIMUM_FRAME_SIZE 0x00010106 也就是说MTU最大可到64K多,这同RFC规范定义相吻合的 至于你Debug出来的信息不正确是不是你的程序中不是这样的 比如是 if (Oid == OID_GEN_MAXIMUM_FRAME_SIZE) DbgPrint(\"MTU=%d\\n\",(ULONG *)InformationBuffer); |
|
|
板凳#
发布于:2002-08-04 16:19
ntddndis.h中有这样的定义 #define OID_GEN_MAXIMUM_FRAME_SIZE 0x00010106 定义的是查询mtu的oid号,与值的大小无关。 所以,不是着的问题。 |
|
地板#
发布于:2002-08-05 09:57
我想查询一下mtu. 老大,你的代码没有问题,只是位置不对,应该把你的if/DbgPrint放在NdisRequest之后,等它查到了之后你才能知道阿! |
|
|
地下室#
发布于:2002-08-05 10:19
[quote]我想查询一下mtu. 老大,你的代码没有问题,只是位置不对,应该把你的if/DbgPrint放在NdisRequest之后,等它查到了之后你才能知道阿! [/quote] 其实,在nidsrequest之前,之后我都加了。 结果都是这样,都不对的。 ???? |
|
5楼#
发布于:2002-08-05 11:11
那查了status了么?
pending时,到ptrequestcomplete查! 呵呵! |
|
|
6楼#
发布于:2002-08-05 14:41
fenger_li老兄说的完全正确!~
|
|
|