我想发生以下情况:
我的要求:
我试图对此进行研究,特别是在Stack Overflow上,但找不到对我的情况有用的东西:
有没有人知道实现我的特定带宽限制要求的方法,以便在应用程序域级别上限制应用程序?
答案 0 :(得分:1)
我想我找到了解决方案。使用QOS API,您需要使用TcOpenInterface获取目标接口的句柄(您可以通过调用TcEnumerateInterfaces找出要定位的接口)。使用界面句柄,您需要调用TcAddFlow以及指向TC_GEN_FLOW结构的指针,该结构允许您同时指定SendingFlowspec
(FLOWSPEC结构)和{ {1}}(FLOWSPEC结构),其中包含ReceivingFlowspec
成员。然后,为了使您的界面利用您刚添加的流程,您需要使用TcAddFilter调用向您的界面添加过滤器,因为MSDN说 TcAddFilter函数会关联一个新的过滤器使用现有流,允许匹配过滤器的数据包定向到关联的流。我认为,为了使它特定于应用程序,调用TcRegisterClient可能会做到这一点,你需要调用它才能获得一个客户端句柄来使用TcEnumerateInterfaces和TcAddFlow从它的外观(但这仍然是经过测试)。我也找到了this useful example(还没有测试过)。
从MSDN获取,PeakBandwidth
成员给定流的基于时间的传输权限的上限,以每秒字节数为单位。 PeakBandwidth成员通过强制执行每秒数据传输上限来限制可能产生大量传输信用的流,或通过一次性或周期性数据突发使网络资源负担过重的令牌。一些中间系统可以利用这些信息,从而实现更有效的资源分配。