Partager via


structure CONTROLLER_OBJECT (ntddk.h)

Un objet contrôleur représente une carte matérielle ou un contrôleur avec des appareils homogènes qui sont les cibles réelles des requêtes d’E/S. Un objet contrôleur peut être utilisé pour synchroniser les E/S d’un pilote de périphérique avec les appareils cibles via sa carte matérielle/contrôleur.

Un objet contrôleur est partiellement opaque. Les enregistreurs de pilotes doivent connaître un certain champ associé à l’objet contrôleur, car leurs pilotes accèdent à ce champ via le pointeur d’objet du contrôleur retourné par IoCreateController. Le champ suivant dans un objet contrôleur est accessible au pilote de création.

Syntaxe

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

Membres

Type

Size

ControllerExtension

Pointeur vers l’extension du contrôleur. La structure et le contenu de l’extension du contrôleur sont définis par le pilote. La taille est déterminée par le pilote, spécifiée dans l’appel du pilote à IoCreateController. En règle générale, les pilotes conservent un état courant sur les opérations d’E/S dans l’extension du contrôleur et l’état spécifique à l’appareil sur les E/S d’un appareil cible dans l’extension d’appareil correspondante.

DeviceWaitQueue

Spare1

Spare2

Remarques

La plupart des routines de pilote qui traitent les IRPs reçoivent un pointeur vers l’objet de périphérique cible. Par conséquent, les pilotes de périphérique qui utilisent des objets de contrôleur stockent fréquemment le pointeur d’objet du contrôleur retourné par IoCreateController dans chaque extension d’appareil.

Notez qu’un objet de contrôleur n’a pas de nom afin qu’il ne puisse pas être la cible d’une requête d’E/S, et que les pilotes de niveau supérieur ne peuvent pas connecter ou attacher leurs objets de périphérique à l’objet contrôleur d’un pilote de périphérique.

Les champs non documentés au sein d’un objet contrôleur doivent être considérés comme inaccessibles. Les pilotes ayant des dépendances sur les emplacements des champs d’objet ou l’accès aux champs non documentés peuvent ne pas rester portables et interopérables avec d’autres pilotes au fil du temps.

Exigences

Exigence Valeur
d’en-tête ntddk.h (include Ntddk.h)

Voir aussi

IoCreateController