2011-10-12 22 views
0

我想寫一個Windows內核驅動程序,它需要使用NDIS 5/6的TCP/IP通信。因爲它會使用NDIS,據我所知,它需要它自己的tcp/ip堆棧實現。帶有tcp/ip堆棧的NDIS 5/6驅動程序,有代碼嗎?

任何人都可以指出我的實施方向,或接近它的東西?

任何幫助將不勝感激!

親切的問候

回答

1

你不需要實現你自己的TCP/IP協議棧!

首先,你確定這需要在驅動程序中完成嗎?您所有複雜的代碼和業務邏輯通常應該位於用戶模式應用程序或服務中。驅動程序大多是硬件上非常簡單的包裝。這條規則不僅僅是一些抽象原理,或者是—編寫用戶模式代碼要容易得多,您可以使用熟悉的調試器和更廣泛的Win32 API集。如果可以將大部分代碼移至用戶模式,則可以儘早解決問題。

如果您確實必須在內核模式下執行TCP套接字I/O,那麼您應該使用Winsock Kernel (WSK)。 WSK允許您打開一個套接字,類似於usermode中的Winsock。 (儘管用戶模式Winsock API有更多的選項和功能; WSK是最基本的)。

WSK在Windows Vista和更高版本上可用。如果您必須支持Windows XP,那麼您需要使用TDI。 TDI很難得到正確的結果;如果可以避免,我不建議使用它。