2011-10-12 2 views
0

J'essaye d'écrire un pilote de noyau de Windows qui exige la communication de tcp/ip en utilisant NDIS 5/6. Comme il va utiliser NDIS, si je comprends bien, il a besoin de sa propre implémentation de la pile tcp/ip.Pilote NDIS 5/6 avec pile tcp/ip, y a-t-il du code?

Quelqu'un pourrait-il me diriger vers une implémentation de ceci, ou quelque chose de proche?

Toute aide serait grandement appréciée!

Amitiés

Répondre

1

Vous n'avez pas besoin d'implémenter votre propre pile TCP/IP! D'abord, êtes-vous sûr que cela doit être fait dans un pilote? Tout votre code complexe et votre logique métier doivent généralement se trouver dans une application ou un service usermode. Les pilotes sont principalement destinés à être des wrappers très simples autour du matériel. Cette règle n'est pas seulement un principe abstrait, il est beaucoup plus facile d'écrire du code usermode, où vous pouvez utiliser un débogueur familier et l'ensemble beaucoup plus large d'API Win32. Vous pourrez résoudre votre problème plus tôt si vous pouvez déplacer la majeure partie de votre code à usermode.

Si vous devez vraiment faire des E/S de socket TCP en mode noyau, vous devez utiliser Winsock Kernel (WSK). WSK vous permet d'ouvrir une socket, similaire à Winsock en usermode. (Bien que l'API Winsock usermode ait plus d'options et de fonctionnalités, WSK est bare-bones). WSK est disponible sur Windows Vista et versions ultérieures. Si vous devez prendre en charge Windows XP, vous devez utiliser TDI. TDI est beaucoup plus difficile à obtenir correctement; Je ne recommande pas de l'utiliser si vous pouvez l'éviter.

Questions connexes