VIDEO_PORT_CONFIG_INFO Struktur (video.h)
Die VIDEO_PORT_CONFIG_INFO-Struktur enthält busspezifische Adapterkonfigurationsinformationen. Diese Struktur wird verwendet, um die Videohardware einzurichten und den Videoporttreiber mit Konfigurationsinformationen zu versorgen. Der Videoporttreiber kann dann die erforderlichen Systemressourcen für den Miniporttreiber und dessen Adapter zuordnen.
Syntax
typedef struct _VIDEO_PORT_CONFIG_INFO {
ULONG Length;
ULONG SystemIoBusNumber;
INTERFACE_TYPE AdapterInterfaceType;
ULONG BusInterruptLevel;
ULONG BusInterruptVector;
KINTERRUPT_MODE InterruptMode;
ULONG NumEmulatorAccessEntries;
PEMULATOR_ACCESS_ENTRY EmulatorAccessEntries;
ULONG_PTR EmulatorAccessEntriesContext;
PHYSICAL_ADDRESS VdmPhysicalVideoMemoryAddress;
ULONG VdmPhysicalVideoMemoryLength;
ULONG HardwareStateSize;
ULONG DmaChannel;
ULONG DmaPort;
UCHAR DmaShareable;
UCHAR InterruptShareable;
BOOLEAN Master;
DMA_WIDTH DmaWidth;
DMA_SPEED DmaSpeed;
BOOLEAN bMapBuffers;
BOOLEAN NeedPhysicalAddresses;
BOOLEAN DemandMode;
ULONG MaximumTransferLength;
ULONG NumberOfPhysicalBreaks;
BOOLEAN ScatterGather;
ULONG MaximumScatterGatherChunkSize;
PVIDEO_PORT_GET_PROC_ADDRESS VideoPortGetProcAddress;
PWSTR DriverRegistryPath;
ULONGLONG SystemMemorySize;
} VIDEO_PORT_CONFIG_INFO, *PVIDEO_PORT_CONFIG_INFO;
Member
Length
Die Größe dieser Struktur in Bytes. Der Videoporttreiber initialisiert immer das Length-Element . Tatsächlich gibt sein Wert die Version von VIDEO_PORT_CONFIG_INFO an, die vom System verwendet wird. Da diese Struktur möglicherweise von einer Version des Systems zur nächsten anwächst, sollte ein Miniporttreiber diesen Member überprüfen, um festzustellen, ob es sich um mindestens sizeof(VIDEO_PORT_CONFIG_INFO) handelt, die der Miniporttreiber zum Konfigurieren des Adapters verwendet.
SystemIoBusNumber
Gibt die systemseitig zugewiesene Nummer des E/A-Busses an, an den der Adapter des Miniporttreibers angeschlossen sein könnte. Der Videoporttreiber initialisiert dieses Element immer.
AdapterInterfaceType
Gibt den Typ der Busschnittstelle an. Der Videoporttreiber legt diesen Member immer basierend auf dem Bus fest, auf dem der PnP-Manager das Gerät erkannt hat.
BusInterruptLevel
Dieser Member ist irrelevant, wenn die Videohardware keine Interrupts generiert, die durch Festlegen des HwInterrupt-Elements in der VIDEO_HW_INITIALIZATION_DATA-Struktur auf NULL angegeben werden. Andernfalls wird der busrelative IRQL angegeben, der der Interruptanforderung für Busse vom Typ Isa oder MicroChannel entspricht. Der voreingestellte Standardwert für dieses Element ist 0. Ein Miniporttreiber muss den richtigen Wert angeben, wenn er Interrupts für eine Grafikkarte auf einem Bus des Typs Isa oder MicroChannel oder für eine Grafikkarte verarbeitet, die für levelsensitive Interrupts auf einem Bus vom Typ Eisa konfiguriert ist.
Wenn die HwVidFindAdapter-Funktion eines Miniporttreibers feststellt, dass der Grafikkarte keine Interrupts generiert oder keinen gültigen Interruptvektor/-level für den Adapter ermitteln kann, sollte HwVidFindAdapter sowohl BusInterruptLevel als auch BusInterruptVector auf Null festlegen.
BusInterruptVector
Dieser Member ist irrelevant, wenn die Videohardware keine Interrupts generiert, die durch Festlegen des HwInterrupt-Members in der VIDEO_HW_INITIALIZATION_DATA-Struktur auf NULL angegeben werden. Andernfalls wird der busrelative Vektor angegeben, der von der Videohardware auf E/A-Bussen verwendet wird, die Interruptvektoren verwenden, z. B. PCI-Busse. Der voreingestellte Standardwert für dieses Element ist 0.
Wenn die HwVidFindAdapter-Funktion eines Miniporttreibers feststellt, dass der Grafikkarte keine Interrupts generiert oder keinen gültigen Interruptvektor/-level für den Adapter bestimmen kann, sollte HwVidFindAdapter sowohl BusInterruptVector als auch BusInterruptLevel auf Null festlegen.
InterruptMode
Gibt an, ob die Videohardware Latched - oder LevelSensitive-Interrupts verwendet. Der Videoporttreiber initialisiert diesen Member, wenn es relevant ist, aber ein Miniporttreiber mit einem ISR sollte überprüfen, ob er den richtigen Wert enthält, und ihn bei Bedarf zurücksetzen.
NumEmulatorAccessEntries
Dieses Member und alle nachfolgenden Member über HardwareStateSize sind irrelevant für Miniporttreiber, die sich nicht als VGA-kompatible Miniporttreiber auf x86-basierten NT-basierten Betriebssystemplattformen deklarieren. Für Miniporttreiber, die keine VGA-kompatiblen SVGA-Adapter auf x86-basierten Computern unterstützen, sollte dieser Member 0 sein. Andernfalls gibt es die Anzahl der EMULATOR_ACCESS_RANGE-Typ-Elemente im folgenden Array an.
EmulatorAccessEntries
Zeiger auf ein Array von Emulatorzugriffsbereichen, die vom VGA-kompatiblen Miniporttreiber eingerichtet werden. Jeder Emulatorzugriffsbereich muss eine ordnungsgemäße Teilmenge des VIDEO_ACCESS_RANGE-Typarrays des Miniporttreibers sein. Jedes Element gibt einen Bereich von E/A-Ports an, die vom V86-Emulator eingebunden und möglicherweise von einer vom Treiber bereitgestellten SvgaHwIoPortXxx-Funktion überwacht werden sollen, wenn eine MS-DOS-Anwendung mit Vollbild versucht, direkt in das Videoadapterregister zu schreiben. In der Regel beschreibt dieses Array alle E/A-Portbereiche im entsprechenden Zugriffsbereichsarray. Wenn der Miniporttreiber sein Array von Emulatorzugriffseinträgen statisch im Treiber selbst definiert, initialisiert der Porttreiber diesen Zeiger auf dieses Array. Wenn NumEmulatorAccessEntries null ist, ist dieser Member NULL.
EmulatorAccessEntriesContext
Gibt einen Wert an, der mit jedem Aufruf einer SvgaHwIoPortXxx-Funktion übergeben wird, die im Array EmulatorAccessEntries beschrieben wird. In der Regel legt ein VGA-kompatibler Miniporttreiber den Wert dieses Members auf den HwDeviceExtension-Zeiger oder auf einen Offset innerhalb der Geräteerweiterung fest, damit der Miniporttreiber den Zustand in seinen SvgaHwIoPortXxx-Funktionen beibehalten kann, z. B. Batchanweisungen der Anwendung.
VdmPhysicalVideoMemoryAddress
Gibt die logische Basisadresse (zugeordnet) eines Bereichs von Videospeicher an, der dem Adressraum eines VDM für x86 BIOS INT10-Unterstützung zugeordnet werden soll. Für Miniporttreiber, die keine VGA-kompatiblen Adapter auf x86-basierten Computern unterstützen, sollte dieser Member NULL sein.
VdmPhysicalVideoMemoryLength
Gibt die Größe des Bereichs in Bytes an, der dem Adressraum eines VDM für die x86-BIOS-Unterstützung zugeordnet werden soll. Für Miniporttreiber, die keine VGA-kompatiblen Adapter auf x86-basierten Computern unterstützen, sollte dieser Member 0 sein.
HardwareStateSize
Gibt die Mindestgröße in Bytes an, die zum Speichern von Hardwarestatusinformationen als Reaktion auf eine IOCTL_VIDEO_SAVE_HARDWARE_STATE Anforderung erforderlich ist, die nur von VGA-kompatiblen Miniporttreibern auf x86-basierten Computern unterstützt werden darf. Der initialisierte Wert für dieses Element ist 0. Ein VGA-kompatibler Miniporttreiber muss diesen Member auf die Anzahl von Bytes festlegen, die zum Speichern des Adapterzustands erforderlich ist.
DmaChannel
Ist für das System reserviert.
DmaPort
Ist für das System reserviert.
DmaShareable
Ist für das System reserviert.
InterruptShareable
Wenn das Gerät des Miniporttreibers unterbricht, sollte dieser Member auf Null festgelegt werden, wenn der Interrupt nicht für ein anderes Gerät freigegeben werden kann, oder auf eins festgelegt werden, wenn der Interrupt freigegeben werden kann. Andernfalls kann ein Miniporttreiber diesen Member ignorieren.
Master
Ist für das System reserviert.
DmaWidth
Ist für das System reserviert.
DmaSpeed
Ist für das System reserviert.
bMapBuffers
Ist für das System reserviert.
NeedPhysicalAddresses
Ist für das System reserviert.
DemandMode
Ist für das System reserviert.
MaximumTransferLength
Ist für das System reserviert.
NumberOfPhysicalBreaks
Ist für das System reserviert.
ScatterGather
Ist für das System reserviert.
MaximumScatterGatherChunkSize
Ist für das System reserviert.
VideoPortGetProcAddress
Zeiger auf die VideoPortGetProcAddress-Rückrufroutine . Dieses Element wird verwendet, um die Adresse einer Videoporttreiberfunktion zu finden, die der Video-Miniporttreiber verwenden kann, ohne direkt zu verknüpfen. Dadurch kann eine Treiberbinärdatei unter einer früheren Version von Windows ausgeführt werden. Ausführliche Informationen finden Sie unter Verwenden von VideoPortGetProcAddress.
DriverRegistryPath
Zeiger auf den Registrierungspfad, der den Dienst des Geräts enthält. Der Anzeigetreiber kann diese Informationen in beliebiger Weise verwenden, die er als nützlich erachtet.
SystemMemorySize
Gibt für einen Treiber die Menge des physischen Arbeitsspeichers im System in Bytes an.
Anforderungen
Anforderung | Wert |
---|---|
Header | video.h (einschließen von Video.h) |