2016年5月16日 星期一

NDIS Protocol Drivers - I

 NDIS6.0 以後NDIS 支援了 NDIS 協議驅動。下面的章程介紹了 NDIS 協議驅動以及描述如何撰寫以及安裝 NDIS 協議驅動:


Introduction to NDIS Protocol Drivers

NDIS 協議驅動會在他的下界釋出一組 ProtocolXxx 函式。這類的協議驅動會與 NDIS 合作來達到發送與接收網路數據的目的。協議驅動會綁定(Bind)一個下層的 miniport driver (通常為網卡驅動)或是intermediate driver(中間層驅動: 對上釋出 MiniportXxx 介面給上層,對下則釋出 ProtocolXxx 函式,透過偽裝達到過濾的功能,通常可作為網路防火牆之用)

Note  中間層驅動的上界(虛擬miniport)並不會管控實體裝置。實際上是由下層的miniport驅動來管理。
協議驅動總是使用 NDIS 所提供的函式與下層的 NDIS 驅動合作來完成網路數據的收發。舉例一個協議驅動擁有非連線型(connectionless)的下界(下層驅動為非連線型的媒體,如Ethernet)必須呼叫 NdisSendNetBufferLists 來對下層的 NDIS 驅動發送網路數據。協議驅動也可以呼叫NdisOidRequest 詢或是設定下層無連線驅動所支援的OIDs。當協議驅動擁有連線導向(connection-oriented)的下界(下層為連線導向的媒體,如ISDN)必須呼叫 NdisCoSendNetBufferLists 來對下層的 NDIS 驅動發送網路數據。協議驅動也可以呼叫 NdisCoOidRequest 詢或是設定下層連線導向驅動所支援的 OIDs

NDIS 還提供了一組隱藏了底層操作系統細節的 NdisXxx 函式。舉例,一個協議驅動可以呼叫 NdisInitializeEvent 來創造一個同步事件以及呼叫 NdisInitializeListHead 來創造一個鏈結串列。無論如何,協議去動也可以呼叫 kernel-mode 的例程(routine),例如 IoCreateDevice。更多訊息請看Summary of Kernel-Mode Support Routines協議驅動開發者應該比照其他的NDIS驅動使用相同的programming considerations來開發。


Writing to NDIS Protocol Drivers

本文檔提供協議驅動操作的概述(搭配 NDIS6.0 以及之後的版本)NDIS 協議驅動提供ProtocolXxx函式,NDIS 呼叫這類的函式進行初始操作。NDIS 提供 NdisXxx 函式,協議驅動呼叫這類的函式進行操作。下列的章程描述綁定狀態與操作,以及包含一些協議驅動操作的概述。

沒有留言:

張貼留言