Можно ли добраться до URL, не просматривая весь пакет? Реально ли оптимизировать код так, чтобы без тормозов блокировать около 500 тыс. сайтов?!

Может нужно блокировать только по ip в таком случае?
IMHO, оптимальнее всего переводить URL в IP-адреса (в юзермоде), и отдавать в драйвер список IP. А там уже фильтрация элементарная, TCP| IP имеют фиксированный формат заголовка... но в любом случае, у NDIS-IM-драйвера есть существенный недостаток - избыточное копирование пакета - от минипорта к протоколу и обратно. Фундаментальный, диктуемый самой парадигмой NDIS. Обходится только NDIS-hooking'ом, но это, имхо, не самое прямое решение.