Partager via


CONTROLLER_OBJECT structure (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 pour les demandes 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 son adaptateur/contrôleur matériel.

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 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 de 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 l’état commun des opérations d’E/S dans l’extension du contrôleur et l’état spécifique au périphérique concernant les E/S d’un appareil cible dans l’extension de périphérique correspondante.

DeviceWaitQueue

Spare1

Spare2

Remarques

La plupart des routines de pilotes qui traitent les IRP 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 contrôleur stockent fréquemment le pointeur d’objet contrôleur retourné par IoCreateController dans chaque extension d’appareil.

Notez qu’un objet de contrôleur n’a pas de nom et qu’il ne peut pas être la cible d’une demande 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 dans 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 à des champs non documentés peuvent ne pas rester portables et interopérables avec d’autres pilotes au fil du temps.

Configuration requise

Condition requise Valeur
En-tête ntddk.h (incluez Ntddk.h)

Voir aussi

IoCreateController