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) |