英語で読む

次の方法で共有


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