Object-Based

Microsoft Windows NT型作業系統是以物件為基礎。 主管中的各種元件會定義一或多個物件類型。 每個元件都會匯出核心模式支援處理其物件類型實例的常式。 沒有元件可以直接存取另一個元件的 物件。 若要使用另一個元件的 物件,元件必須呼叫匯出的支援常式。

此設計可讓作業系統同時具有可攜性和彈性。 例如,未來版本的作業系統可能會包含定義相同物件類型的重新編碼核心元件,但內部結構完全不同。 如果此假設重新編碼版本的核心會匯出一組與現有集合相同的名稱和參數的支援常式,內部變更不會影響現有系統中任何其他執行元件的可攜性。

同樣地,若要保持可攜式且可設定,驅動程式必須只使用 WDK 中所述的支援常式和其他介面,與作業系統彼此通訊。

如同作業系統,驅動程式也是以物件為基礎的。 例如:

  • 檔案物件 代表使用者模式應用程式與裝置的連線。

  • 裝置物件 代表每個驅動程式的邏輯、虛擬或實體裝置。

  • 驅動程式物件 代表每個驅動程式的載入映射。

I/O 管理員會定義檔案物件、裝置物件和驅動程式物件的結構和介面。

如同任何其他執行元件,驅動程式會呼叫 I/O 管理員和其他系統元件匯出的核心模式支援常式,來使用物件。 核心模式支援常式通常具有名稱,可識別每個常式所操作的特定物件,以及每個常式在該物件上執行的作業。 這些支援常式名稱的格式如下:

PrefixOperationObject

where

首碼 識別匯出支援常式的核心模式元件,通常是定義物件類型的元件。 大部分前置詞都有兩個字母。

操作 描述物件完成的工作。

物件 識別物件的類型。

例如,I/O 管理員的 IoCreateDevice 常式會建立裝置物件,以代表實體、邏輯或虛擬裝置作為 I/O 要求的目標。

一個系統元件可以匯出呼叫另一個元件支援常式的常式。 這可減少驅動程式必須進行的呼叫數目。 特別是 I/O 管理員會匯出某些常式,以便更輕鬆地開發驅動程式。 例如, IoConnectInterruptEx是最低層級驅動程式呼叫以註冊其 ISR,會呼叫 中斷物件的核心支援常式。

物件不透明度

某些系統定義的物件 不透明:只有定義系統元件知道這類物件的內部結構,而且可以直接存取物件包含的所有資料。 定義不透明物件的系統元件會匯出支援驅動程式和其他核心模式元件可以呼叫來操作該物件的常式。 驅動程式永遠不會直接存取不透明的物件結構。

注意 若要維護驅動程式可攜性,驅動程式必須使用系統提供的支援常式來作業系統定義的物件。 定義系統元件可以隨時變更其物件類型的內部結構。