迷你埠驅動程式
NDIS 迷你埠驅動程式有兩個基本功能:
管理網路介面卡 (NIC) ,包括透過 NIC 傳送和接收資料。
與較高層級的驅動程式互動,例如篩選驅動程式、中繼驅動程式和通訊協定驅動程式。
迷你埠驅動程式會透過 NDIS 程式庫與其 NIC 和較高層級的驅動程式通訊。 NDIS 程式庫會匯出一組完整的函式, (NdisMXxx和其他 NdisXxx函式) 封裝迷你埠驅動程式必須呼叫的所有作業系統函式。 接著,迷你埠驅動程式必須匯出一組進入點, (MiniportXxx 函式) NDIS 針對自己的用途或代表較高層級的驅動程式呼叫,才能存取迷你埠驅動程式。
注意
如需 NDIS 驅動程式堆疊的詳細資訊,以及顯示這四個 NDIS 驅動程式類型之間關聯性的圖表,請參閱 NDIS 驅動程式堆疊。
下列傳送和接收作業說明迷你埠驅動程式與 NDIS 和較高層級驅動程式的互動:
當傳輸驅動程式有要傳輸的封包時,它會呼叫 NDIS 程式庫匯出的NdisXxx函式。 接著,NDIS 會呼叫迷你埠驅動程式匯出的適當 MiniportXxx 函式,將封包傳遞至迷你埠驅動程式。 迷你埠驅動程式接著會呼叫適當的NdisXxx函式,將封包轉送至 NIC 以進行傳輸。
當 NIC 收到定址為本身的封包時,它可以張貼由 NDIS 或 NIC 迷你埠驅動程式處理的硬體中斷。 NDIS 會呼叫適當的 MiniportXxx 函式,以通知 NIC 的迷你埠驅動程式。 迷你埠驅動程式會設定從 NIC 傳輸資料,然後藉由呼叫適當的NdisXxx函式,指出接收的封包是否存在到系結較高層級的驅動程式。
無連線和 Connection-Oriented Miniport 驅動程式
NDIS 支援無連線環境和連線導向環境的迷你埠驅動程式。
無連線迷你埠驅動程式 可控制無連線網路媒體的 NIC,例如乙太網路。 無連線迷你埠驅動程式會進一步分割成還原序列化和序列化的驅動程式:
注意 所有 NDIS 6.0 和更新版本的驅動程式都會還原序列化。
還原序列化驅動程式 會序列化自己的 MiniportXxx 函式作業,並在內部排入所有傳入傳送封包的佇列。 這可大幅提升全雙工效能,前提是驅動程式的重要區段 (一次只能執行單一線程的程式碼,) 保持小。
序列化驅動程式 依賴 NDIS 來序列化其 MiniportXxx 函式的呼叫,以及管理其傳送佇列。
連線導向迷你埠驅動程式 可控制連線導向網路媒體的 NIC,例如 ISDN。 連線導向迷你埠驅動程式一律會還原序列化-- 它們一律會序列化自己的 MiniportXxx 函式作業,並在內部排入所有傳入傳送封包的佇列。
NDIS 迷你埠驅動程式可以有非 NDIS 下邊緣 (請參閱下圖) 。
透過其非 NDIS 下邊緣,迷你埠驅動程式會使用匯流排的類別介面,例如通用序列匯流排 (USB) 來控制匯流排上的裝置。 迷你埠驅動程式會傳送 I/O 要求封包, (IRP) 至匯流排,或直接傳送至連接至匯流排的遠端裝置,來與裝置通訊。 在上邊緣,迷你埠驅動程式會公開標準 NDIS 迷你埠驅動程式介面,讓迷你埠驅動程式能夠與過度使用 NDIS 驅動程式通訊。