CONTROLLER_OBJECT-Struktur (ntddk.h)
Ein Controllerobjekt stellt einen Hardwareadapter oder Controller mit homogenen Geräten dar, die die eigentlichen Ziele für E/A-Anforderungen sind. Ein Controllerobjekt kann verwendet werden, um die E/A eines Gerätetreibers mit den Zielgeräten über seinen Hardwareadapter/Controller zu synchronisieren.
Ein Controllerobjekt ist teilweise undurchsichtig. Treiberautoren müssen über ein bestimmtes Feld bescheid wissen, das dem Controllerobjektobjekt zugeordnet ist, da ihre Treiber über den von IoCreateController zurückgegebenen Controllerobjektzeiger auf dieses Feld zugreifen. Auf das folgende Feld in einem Controllerobjekt kann der erstellende Treiber zugreifen.
Syntax
typedef struct _CONTROLLER_OBJECT {
CSHORT Type;
CSHORT Size;
PVOID ControllerExtension;
KDEVICE_QUEUE DeviceWaitQueue;
ULONG Spare1;
LARGE_INTEGER Spare2;
} CONTROLLER_OBJECT, *PCONTROLLER_OBJECT;
Member
Type
Size
ControllerExtension
Zeiger auf die Controllererweiterung. Die Struktur und der Inhalt der Controllererweiterung sind treiberdefiniert. Die Größe wird vom Treiber bestimmt, die im Aufruf von IoCreateController des Treibers angegeben wird. In der Regel behalten Treiber den allgemeinen Zustand über E/A-Vorgänge in der Controllererweiterung und den gerätespezifischen Zustand über E/A für ein Zielgerät in der entsprechenden Geräteerweiterung bei.
DeviceWaitQueue
Spare1
Spare2
Hinweise
Die meisten Treiberroutinen, die IRPs verarbeiten, erhalten einen Zeiger auf das Zielgerätobjekt. Daher speichern Gerätetreiber, die Controllerobjekte verwenden, häufig den von IoCreateController zurückgegebenen Controllerobjektzeiger in jeder Geräteerweiterung.
Beachten Sie, dass ein Controllerobjekt keinen Namen hat, sodass es nicht das Ziel einer E/A-Anforderung sein kann, und dass treiber auf höherer Ebene keine Verbindung herstellen oder ihre Geräteobjekte an das Controllerobjekt eines Gerätetreibers anfügen können.
Nicht dokumentierte Felder in einem Controllerobjekt sollten als nicht zugänglich betrachtet werden. Treiber mit Abhängigkeiten von Objektfeldstandorten oder Zugriff auf nicht dokumentierte Felder bleiben möglicherweise nicht portabel und interoperabel mit anderen Treibern im Laufe der Zeit.
Anforderungen
Anforderung | Wert |
---|---|
Header | ntddk.h (include Ntddk.h) |