大数据是否需要封装在多个MDL中发送

前段时间,我们已经解决如何发送自定义的网络数据。那么接下来要做的是,要是要发送的数据很大, 是否需要把数据拆分,然后封装在多个MDL中发送呢?由于NdisAllocateMDL函数只能分配一个MDL,所以倘若需要多个MDL的话,那么就要解决如何串联多个MDL的问题。现在所掌握的资料,如果通过预分配调用NdisALlocateNetBufferAndNetbufferList的方式构建NBL的话,那么串连两个MDL的可查资料为:

NDIS_MDL_LINKAGE(FirstMdl) = SecondMdl;

 需要其他的比如设置dataLength这些应该不要设置了吧。但如果是后来增加新的一个MDL,就需要设置哪些数据参数了。

 

话又说回来了,如果我统统把所有的数据都放在一个MDL中,会如何呢?据我所知,如果在发送网络数据的时候,过大的数据也自动会被切成多个小包发送。这个网络上的一问一答(http://www.eggheadcafe.com/software/aspnet/33553113/ndisallocatemdl.aspx):

问题:

写道
Does NdisAllocate Mdl return a single MDL or a chain of MDL's based on the
size of the data buffer being described and physical page size? I looked at
MSDN but it does not say anything about this.

I am guessing that if say I have a 15K buffer on a system with 4k page size
then I will need 4 MDLs to describe the buffer and these MDLs will be chained
and the chain is what is returned from the call to NdisAllocateMdl. Is this
statement correct?

Thanks.

 回答是:

写道
As long as the buffer is "virtually contiguous" (i.e. one virtual address
describes the entire 15K buffer) then you only need one MDL to describe it.
You don't need multiple MDLs just because the buffer may be "physically
fragmentedâ€.


The fact that the memory might span 5 pages is reflected in the pfn array at
the bottom of the MDL (after the header).

 所以我想,不妨先试试看~当然分两个MDL发,肯定也是可以的。只不过我还没有想到如何串联它们俩。https://www.osronline.com/cf.cfm?PageURL=showThread.CFM?link=134437

 

二:还有一个问题,如何区分多个Filter实例。我们知道每个Filter instance都绑定在对应的网卡上,包含虚拟网卡。那么如何区分哪个filter实例是对应的某个网卡呢?因为倘若要指定某张网卡执行操作,那么必须知道其对应的那个filter实例。目前可以利用的资源就是pFilter中的一个参数:

BaseMiniportInstanceName
A pointer to a an NDIS_STRING type value that contains a counted Unicode string. This string specifies the friendly name of the interface for the base miniport adapter. For Windows 2000 and later versions, NDIS defines the NDIS_STRING type as a UNICODE_STRING type.
BaseMiniportName
The name of the base miniport adapter.
FilterModuleGuidName
The GUID name of the filter module that NDIS is attaching.
至于哪个可以用,还需测试~
【无人机】基于改进粒子群算法的无人机路径规划研究[和遗传算法、粒子群算法进行比较](Matlab代码实现)内容概要:本文围绕基于改进粒子群算法的无人机路径规划展开研究,重点探讨了在复杂环境中利用改进粒子群算法(PSO)实现无人机三维路径规划的方法,并将其与遗传算法(GA)、标准粒子群算法等传统优化算法进行对比分析。研究内容涵盖路径规划的多目标优化、避障策略、航路点约束以及算法收敛性和寻优能力的评估,所有实验均通过Matlab代码实现,提供了完整的仿真验证流程。文章还提到了多种智能优化算法在无人机路径规划中的应用比较,突出了改进PSO在收敛速度和全局寻优方面的优势。; 适合人群:具备一定Matlab编程基础和优化算法知识的研究生、科研人员及从事无人机路径规划、智能优化算法研究的相关技术人员。; 使用场景及目标:①用于无人机在复杂地形或动态环境下的三维路径规划仿真研究;②比较不同智能优化算法(如PSO、GA、蚁群算法、RRT等)在路径规划中的性能差异;③为多目标优化问题提供算法选型和改进思路。; 阅读建议:建议读者结合文中提供的Matlab代码进行实践操作,重点关注算法的参数设置、适应度函数设计及路径约束处理方式,同时可参考文中提到的多种算法对比思路,拓展到其他智能优化算法的研究与改进中。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值