遠端 NDIS 概念和定義
本節概述通道上的遠端 NDIS 需求,以及用來在主機與遠端 NDIS 裝置之間進行通訊的較低層驅動程式。 本節也會說明裝置狀態轉換和主要作業,例如初始化、停止和重設。
控制通道
控制通道必須可靠,並確保循序傳遞。 除了網路資料封包的傳輸之外,它會用於所有通訊。 除了 REMOTE_NDIS_HALT_MSG 和 REMOTE_NDIS_INDICATE_STATUS_MSG之外,所有必要的控制訊息都是主機起始的要求和回應交換。 裝置必須在每個匯流排指定的逾時期間內回應。
資料通道
資料通道專用於網路資料封包的傳輸。 它可能包含多個子通道 (,例如,針對適當匯流排所定義的不同服務品質) 。
初始化和終止
控制項和資料通道會初始化並設定為適當的匯流排所指定。 主機會將 REMOTE_NDIS_INITIALIZE_MSG 訊息傳送至遠端 NDIS 裝置。 遠端 NDIS 裝置提供其類型的相關資訊, (無連線或連線導向的) 、支援的中型和版本,以及回應訊息 REMOTE_NDIS_INITIALIZE_CMPLT的版本。
主機或遠端 NDIS 裝置可以透過 REMOTE_NDIS_HALT_MSG 訊息卸載通道。 所有未處理的要求和封包都會在收到此訊息時捨棄。
裝置狀態定義
在匯流排層級初始化之後,裝置會處於 RNDIS 未初始化的狀態。 收到 REMOTE_NDIS_INITIALIZE_MSG ,並以狀態為 RNDIS_STATUS_SUCCESS 的REMOTE_NDIS_INITIALIZE_CMPLT回應時,裝置會進入 RNDIS 初始化狀態。
收到REMOTE_NDIS_SET_MSG指定OID_GEN_CURRENT_PACKET_FILTER的非零篩選值時,裝置會進入 RNDIS-data-initialized 狀態。
當處於 RNDIS-data-initialized 狀態時,接收REMOTE_NDIS_SET_MSG指定零個篩選值,OID_GEN_CURRENT_PACKET_FILTER會將裝置強制回到 RNDIS 初始化狀態。
隨時接收REMOTE_NDIS_HALT_MSG或匯流排層級中斷連線或硬重設,會強制裝置進入 RNDIS 未初始化的狀態。
Halt
每當裝置處於 RNDIS 初始化或 RNDIS-data-initialized 狀態時,主機電腦可能會藉由將REMOTE_NDIS_HALT_MSG傳送至裝置來終止裝置的遠端 NDIS 功能。
重設通道
發生錯誤時,會重設通道,例如訊息逾時。 當裝置處於 RNDIS 初始化狀態時,主機可以隨時起始重設,方法是將訊息 REMOTE_NDIS_RESET_MSG 傳送至裝置,而裝置必須在完成重設時傳送回應訊息。 例如,當發生錯誤時,主機可能會起始重設,例如訊息逾時。
請注意,這是一種軟重設,例如,任何處理 (的 VM,) 重設之後仍可繼續有效。 遠端 NDIS 裝置會在重設程式中捨棄所有未處理的要求和封包。 遠端裝置可能會重設其中一些硬體元件,但讓通道保持不變。
如果遠端 NDIS 裝置執行重新開機,則此事件相當於 「移除」,後面接著「新增」隨插即用事件。 主機 NDIS 迷你埠驅動程式將會停止並移除,並新增並啟動新的實例。 所有匯流排層級和遠端 NDIS 初始化都會重新執行。 遠端 NDIS 裝置可能會在發生重大裝置失敗時自行重新開機。
流程式控制制
遠端 NDIS 裝置可能需要執行流程式控制制,以防止主機以封包溢位其資料緩衝區。 任何流量控制布建或需求都是特定的匯流排。
數值位元組排序
Remote NDIS 訊息中的所有數值都必須以小到尾格式編碼, (最不重要的位元組第一個) 。
NDIS 訊息封裝
在原生匯流排訊息或基本類型中封裝 NDIS 訊息的方式,沒有遠端 NDIS 規格。