Я хотел бы сделать следующее:
Мои требования:
Я попытался исследовать это, особенно на Stack Overflow, но не смог найти ничего полезного для моего случая:
Кто-нибудь знает способ реализации моих конкретных требований регулирования пропускной способности для регулирования приложений на уровне домена приложения?
Я думаю, что нашел решение. С QOS API, вам нужно получить дескриптор вашего целевого интерфейса, используя TcOpenInterface (вы можете выяснить, на какой интерфейс вы хотите настроить таргетинг, TcEnumerateInterfaces). С вашим дескриптором интерфейса, вам нужно позвонить TcAddFlow вместе с указателем на TC_GEN_FLOW структура, которая позволяет указать как SendingFlowspec
(FLOWSPEC структура) и ReceivingFlowspec
(FLOWSPEC структура), которая содержит PeakBandwidth
член. Затем, чтобы ваш интерфейс использовал этот поток, который вы только что добавили в него, вам нужно добавить фильтр в интерфейс, используя вызов TcAddFilter, как говорится в MSDN функция TcAddFilter связывает новый фильтр с существующим потоком, который позволяет направлять пакеты, соответствующие фильтру, в связанный поток. Я думаю, что, чтобы сделать это конкретное приложение, позвонив TcRegisterClient может сделать трюк, который вам нужно будет в любом случае вызвать для того, чтобы получить дескриптор клиента для использования с TcEnumerateInterfaces и TcAddFlow из его внешнего вида (но это еще предстоит проверить). я нашел этот полезный пример а также (еще не проверял).
Взято из MSDN, PeakBandwidth
участник верхний предел разрешения передачи на основе времени для данного потока, в байтах в секунду. Элемент PeakBandwidth ограничивает потоки, которые могли накопить значительное количество кредитов передачи или маркеров из-за перегрузки ресурсов сети одноразовыми или циклическими пакетами данных, путем применения предельного уровня передачи данных в секунду. Некоторые промежуточные системы могут использовать эту информацию, что приводит к более эффективному распределению ресурсов.