閱讀英文

共用方式為


驅動程式的上邊緣和下邊緣

在本文中,您將瞭解 上邊緣下邊緣 等詞彙,因為它們適用於驅動程式堆疊中的驅動程式。

注意

閱讀本主題之前,您應該先瞭解 裝置節點和裝置堆疊中所呈現的概念,驅動程式堆疊

驅動程式層

參與 I/O 要求的驅動程式序列稱為該要求的 驅動程式堆疊。 I/O 要求會先由驅動程式堆疊中的最上層驅動程序處理,再由下一個較低的驅動程序處理,依此等方式處理,直到要求完全處理為止。

當驅動程式實作一組較高驅動程式可以呼叫的函式時,該組函式稱為驅動程式 上邊緣 或驅動程式 上邊緣介面

當驅動程式實作一組較低驅動程式可以呼叫的函式時,該組函式稱為驅動程式的 下邊緣 或驅動程式 低邊緣介面

驅動程式可以呼叫堆疊中較低驅動程式的上邊緣。 驅動程式還可以進入堆疊中較高層驅動程式的下緣進行呼叫。

上邊緣和下邊緣的音訊範例

您可以考慮位於驅動程式堆疊中音訊埠驅動程式下方的音訊迷你埠驅動程式。 埠驅動程式會呼叫迷你埠驅動程式的上層介面。 小型埠驅動程式會呼叫端口驅動程式的下層。

迷你埠驅動程式上方的音訊埠驅動程序圖表。

前面的圖表說明,有時候考慮將埠驅動程式放置於驅動程式堆疊中迷你埠驅動程式的上方是有益的。 由於 I/O 要求會先由埠驅動程式處理,然後由迷你埠驅動程序處理,所以將埠驅動程式視為在迷你埠驅動程式上方是合理的。 不過,請記住,(微型埠、埠)驅動程式組通常位於裝置堆疊中的單一層級,如下所示。

裝置堆疊與 (miniport/port) 配對的圖表。

注意

裝置堆疊驅動程式堆疊不同。 如需這些詞彙的定義,以及討論一組驅動程式如何形成在裝置堆疊中佔據一個層級的單一 WDM 驅動程式,請參閱 Minidrivers 和驅動程式組

以下是繪製相同裝置節點和裝置堆疊圖表的另一種方式:

迷你埠上方具有埠驅動程式的裝置堆疊圖表。

在上圖中,您會看到 (miniport, port) 配對會形成與裝置堆疊中單一裝置物件 (FDO) 相關聯的單一 WDM 驅動程式:也就是說,在裝置堆疊中,(迷你埠、埠)配對只佔用一個層級。 但我們也會看到迷你埠和埠驅動程式之間的垂直關聯性。 埠驅動程式會顯示在迷你埠驅動程式上方,以指出埠驅動程式會先處理 I/O 要求,然後呼叫迷你埠驅動程式以進行其他處理。

關鍵點是,當埠驅動程式呼叫迷你埠驅動程式的上層介面時,這與將 I/O 要求傳送至裝置堆疊並不相同。 在驅動程式堆疊(而非裝置堆疊)中,您可以選擇將埠驅動程式置於迷你埠驅動程式之上,但這並不表示在裝置堆疊中埠驅動程式位於迷你埠驅動程式之上。

NDIS 的上邊緣和下邊緣範例

有時,一個驅動程式會間接呼叫屬於較低層級驅動程式的上層功能。 例如,假設 TCP/IP 通訊協定驅動程式 位於驅動程式堆疊中的 NDIS 迷你埠驅動程式上方。 迷你埠驅動程式會實作一組 MiniportXxx 函式,以形成迷你埠驅動程式的上邊緣。 我們說 TCP/IP 協定驅動程式 系結到 NDIS 迷你埠驅動程式的上層。 但是 TCP/IP 驅動程式不會直接呼叫 MiniportXxx 函式。 相反地,它會呼叫 NDIS 庫中的函式,然後呼叫 MiniportXxx 函式。

tcp/ip 和 ndis 迷你埠堆疊的圖表。

上圖顯示驅動程式堆疊。 這是同一個驅動程式的另一個視角。

網路卡裝置堆疊的圖表。

上圖顯示網路適配器 (NIC) 的裝置節點。 裝置節點在隨插即用 (PnP) 裝置樹狀目錄中有一個位置。 NIC 裝置節點具有具有三個裝置物件的裝置堆疊。 請注意,NDIS 迷你埠驅動程式和 NDIS 連結庫會以配對方式運作。 配對 (MyMiniport.sys, Ndis.sys) 會形成由功能裝置物件 (FDO) 表示的單一 WDM 驅動程式。

另請注意,通訊協定驅動程式 Tcpip.sys 不是 NIC 裝置堆疊的一部分。 事實上,Tcpip.sys 根本不是 PnP 裝置樹狀結構的一部分。

總結

上邊緣下邊緣 詞彙用來描述堆疊中驅動程式用來彼此通訊的介面。 驅動程式堆疊裝置堆疊不同。 在驅動程式堆疊中垂直顯示的兩個驅動程式可能會形成位於裝置堆疊中單一層級的驅動程式組。 某些驅動程式不屬於 PnP 裝置樹狀結構。