CONTROLLER_OBJECT結構 (ntddk.h)

控制器物件代表具有同質裝置的硬體適配卡或控制器,這些裝置是 I/O 要求的實際目標。 控制器物件可用來透過其硬體適配卡/控制器,將設備驅動器的 I/O 同步處理至目標裝置。

控制器物件部分不透明。 驅動程式寫入器必須知道與控制器對象相關聯的特定欄位,因為驅動程式會透過 IoCreateController所傳回的控制器物件指標來存取此欄位。 建立驅動程式可存取控制器物件中的下列欄位。

語法

typedef struct _CONTROLLER_OBJECT {
  CSHORT        Type;
  CSHORT        Size;
  PVOID         ControllerExtension;
  KDEVICE_QUEUE DeviceWaitQueue;
  ULONG         Spare1;
  LARGE_INTEGER Spare2;
} CONTROLLER_OBJECT, *PCONTROLLER_OBJECT;

成員

Type

Size

ControllerExtension

控制器擴充功能的指標。 控制器延伸模組的結構和內容是驅動程式定義的。 大小是由驅動程序決定,在驅動程式對 IoCreateController的呼叫中指定。 通常,驅動程式會在控制器擴充功能中維護有關 I/O 作業的常見狀態,以及對應裝置擴充功能中目標裝置的 I/O 特定狀態。

DeviceWaitQueue

Spare1

Spare2

備註

處理 IRP 的大部分驅動程式例程都會獲得目標裝置物件的指標。 因此,使用控制器對象的設備驅動器通常會在每個裝置延伸模組中儲存 IoCreateController 所傳回的控制器對象指標。

請注意,控制器對象沒有名稱,因此它不能是I/O要求的目標,而較高層級的驅動程式無法連接或附加其裝置物件至設備驅動器的控制器物件。

控制器物件內的未記載欄位應該視為無法存取。 相依於物件欄位位置或未記載欄位存取權的驅動程式,可能無法在一段時間內保持可攜式且與其他驅動程式互通。

規格需求

需求
標頭 ntddk.h (包含 Ntddk.h)

另請參閱

IoCreateController