以 Microsoft Windows NT 為基礎的作業系統是物件型。 執行環境中的各種元件會定義一或多個物件類型。 每個元件都會匯出核心模式支援常式,以操作其物件類型的實例。 任何元件都無法直接存取另一個元件的物件。 若要使用另一個元件的物件,元件必須呼叫匯出的支援常式。
這種設計使得作業系統既便攜又靈活。 例如,作業系統的未來版本可能會包含重新編碼的核心元件,該元件定義相同的物件類型,但具有完全不同的內部結構。 如果這個假設的重新編碼版本的核心匯出一組與現有集具有相同名稱和參數的支援常式,則內部變更不會影響現有系統中任何其他執行元件的可移植性。
同樣地,若要保持可攜式和可設定性,驅動程式必須只使用 WDK 中所述的支援常式和其他介面,與作業系統和彼此通訊。
與作業系統一樣,驅動程式也是物件型的。 例如:
檔案物件 代表使用者模式應用程式與裝置的連線。
裝置物件 代表每個驅動程式的邏輯、虛擬或實體裝置。
驅動程式物件 代表每個驅動程式的載入映像。
I/O 管理員會定義檔案物件、裝置物件和驅動程式物件的結構和介面。
如同任何其他執行組件,驅動程式透過呼叫由 I/O 管理員及其他系統元件匯出的核心模式支援常式來使用物件。 核心模式支援常式通常具有名稱,可識別每個常式所操作的特定物件,以及每個常式在該物件上執行的作業。 這些支援常式名稱具有下列格式:
前綴操作物件
哪裡
前綴 識別匯出支援常式的核心模式元件,通常也是定義物件類型的元件。 大多數前綴都有兩個字母。
手術 描述對物件執行的動作。
物體 識別物件的類型。
例如,I/O 管理員的 IoCreateDevice 常式會建立裝置物件,以將實體、邏輯或虛擬裝置表示為 I/O 要求的目標。
一個系統元件可以匯出常式,這些常式會呼叫另一個元件的支援常式。 這可以減少驅動程式必須撥打的呼叫數目。 特別是 I/O 管理員會匯出某些常式,讓開發驅動程式變得更容易。 例如,最低層級驅動程式會呼叫 IoConnectInterruptEx 來註冊其 ISR,並且呼叫與中斷物件相關的核心支援常式。
物件不透明度
某些系統定義的物件是 不透明的:只有定義的系統元件知道這類物件的內部結構,並且可以直接存取物件包含的所有資料。 定義不透明物件的系統元件匯出支援常式,讓驅動程式和其他核心模式元件可以呼叫並操作該物件。 驅動程式永遠不會直接存取不透明的物件結構。
注意 為了維持驅動程式的可攜性,驅動程式必須使用系統提供的支援常式來處理系統定義的物件。 定義系統元件可以隨時變更其物件類型的內部結構。