struttura CONTROLLER_OBJECT (ntddk.h)
Un oggetto controller rappresenta un adattatore hardware o un controller con dispositivi omogenei che rappresentano le destinazioni effettive per le richieste di I/O. Un oggetto controller può essere usato per sincronizzare l'I/O di un driver di dispositivo con i dispositivi di destinazione tramite la relativa scheda hardware/controller.
Un oggetto controller è parzialmente opaco. I writer di driver devono conoscere un determinato campo associato all'oggetto controller perché i driver accedono a questo campo tramite il puntatore a oggetti controller restituito da IoCreateController. Il campo seguente in un oggetto controller è accessibile al driver di creazione.
Sintassi
typedef struct _CONTROLLER_OBJECT {
CSHORT Type;
CSHORT Size;
PVOID ControllerExtension;
KDEVICE_QUEUE DeviceWaitQueue;
ULONG Spare1;
LARGE_INTEGER Spare2;
} CONTROLLER_OBJECT, *PCONTROLLER_OBJECT;
Membri
Type
Size
ControllerExtension
Puntatore all'estensione del controller. La struttura e il contenuto dell'estensione del controller sono definiti dal driver. Le dimensioni sono determinate dal driver, specificate nella chiamata del driver a IoCreateController. In genere, i driver mantengono lo stato comune sulle operazioni di I/O nell'estensione del controller e sullo stato specifico del dispositivo per un dispositivo di destinazione nell'estensione del dispositivo corrispondente.
DeviceWaitQueue
Spare1
Spare2
Osservazioni
La maggior parte delle routine del driver che elaborano i runtime di integrazione viene assegnato un puntatore all'oggetto dispositivo di destinazione. Di conseguenza, i driver di dispositivo che usano oggetti controller archiviano spesso il puntatore a oggetti controller restituito da IoCreateController in ogni estensione del dispositivo.
Si noti che un oggetto controller non ha un nome, pertanto non può essere la destinazione di una richiesta di I/O e i driver di livello superiore non possono connettersi o collegare i relativi oggetti dispositivo all'oggetto controller di un driver di dispositivo.
I campi non documentati all'interno di un oggetto controller devono essere considerati inaccessibili. I driver con dipendenze dalle posizioni dei campi oggetto o l'accesso a campi non documentati potrebbero non rimanere portabili e interoperabili con altri driver nel tempo.
Fabbisogno
Requisito | Valore |
---|---|
intestazione | ntddk.h (include Ntddk.h) |