共用方式為


裝置物件簡介

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

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

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

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

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

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

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

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

裝置物件是由物件管理員所管理 DEVICE_OBJECT 結構表示。 物件管理員為裝置物件提供與其他系統物件相同的功能。 特別是,裝置物件可以被命名,而且具名的裝置物件可以被開啟操作的控制柄。 如需具名裝置對象的詳細資訊,請參閱 具名裝置物件

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

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

說明裝置物件的圖表。

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