Начнём с того, что TDI-фильтр значительно проще в реализации. Далее, задачу о резервировании портов можно решить двумя способами:
- Занять требуемые порты самому.
- Блокировать открытие "занятых" портов на лету.
Первый способ предпочтительнее, т.к. в этом случае мы явно даём понять системе что порт занят и другим клиентам следует использовать следующий свободный. Во втором же случае поведение системы (компонента AFD, в частности) может быть непредсказуемо. Вероятно, это может зависеть от возвращённого кода ошибки (статуса), но я не уверен, нужно реверсить afd.sys, чего делать сейчас просто лень. Что касается технической стороны вопроса, то в моём блоге есть
информация об этом.