裝置物件簡介

作業系統會依 裝置物件代表裝置。 一或多個裝置物件會與每個裝置相關聯。 裝置物件可作為裝置上所有作業的目標。

核心模式驅動程式必須為每個裝置建立至少一個裝置物件,但有下列例外:

  • 具有相關聯類別或埠驅動程式的迷你驅動程式不需要建立自己的裝置物件。 類別或埠驅動程式會建立裝置物件,並將作業分派給 minidriver。

  • 屬於裝置類型特定子系統的驅動程式,例如 NDIS 迷你埠驅動程式,其裝置物件是由子系統所建立。

請參閱特定裝置類型的檔,以判斷驅動程式是否建立自己的裝置物件。

某些裝置物件不代表實體裝置。 僅軟體驅動程式會處理 I/O 要求,但不會將這些要求傳遞至硬體,仍必須建立裝置物件來代表其作業的目標。

如需驅動程式如何建立裝置物件的詳細資訊,請參閱 建立裝置物件

裝置通常以多個裝置物件表示,一個用於處理裝置 I/O 要求的驅動程式堆疊中的每個驅動程式。 裝置的裝置物件會組織成 裝置堆疊。 每當在裝置上執行作業時,系統會將 IRP 資料結構傳遞至裝置堆疊中最上層裝置物件的驅動程式。 每個驅動程式都會處理 IRP,或將它傳遞給與裝置堆疊中下一個較低裝置物件相關聯的驅動程式。 如需裝置堆疊的詳細資訊,請參閱 範例 WDM 裝置堆疊。 如需 IRP 的詳細資訊,請參閱 處理 IRP

裝置物件是由物件管理員所管理 DEVICE_OBJECT 結構來表示。 物件管理員會針對其他系統物件執行的裝置物件提供相同的功能。 特別是,可以命名裝置物件,而具名裝置物件可以開啟控制碼。 如需具名裝置物件的詳細資訊,請參閱 具名裝置物件

系統會為每個裝置物件提供專用儲存體,稱為裝置擴充功能,驅動程式可用於裝置特定儲存體。 系統會與裝置物件一起建立並釋放裝置擴充功能。 如需詳細資訊,請參閱 裝置延伸模組

下圖說明裝置物件與 I/O 管理員之間的關聯性。

說明裝置物件的圖表。

此圖顯示驅動程式寫入器感興趣的 DEVICE_OBJECT 結構成員。 如需這些成員的詳細資訊,請參閱 建立裝置物件初始化裝置物件,以及 裝置物件的屬性