SERCX2_SYSTEM_DMA_TRANSMIT_CONFIG Struktur (sercx.h)
Die SERCX2_SYSTEM_DMA_TRANSMIT_CONFIG-Struktur enthält Informationen, die Version 2 der seriellen Framework-Erweiterung (SerCx2) zum Konfigurieren eines neuen System-DMA-Übertragungsobjekts verwendet.
Syntax
typedef struct _SERCX2_SYSTEM_DMA_TRANSMIT_CONFIG {
ULONG Size;
size_t MaximumTransferLength;
size_t MinimumTransactionLength;
ULONG DmaAlignment;
ULONG MaximumScatterGatherFragments;
DMA_WIDTH DmaWidth;
PHYSICAL_ADDRESS DeviceAddress;
PCM_PARTIAL_RESOURCE_DESCRIPTOR DmaDescriptor;
ULONG MinimumTransferUnitOverride;
BOOLEAN Exclusive;
PFN_SERCX2_SYSTEM_DMA_TRANSMIT_INITIALIZE_TRANSACTION EvtSerCx2SystemDmaTransmitInitializeTransaction;
PFN_SERCX2_SYSTEM_DMA_TRANSMIT_CLEANUP_TRANSACTION EvtSerCx2SystemDmaTransmitCleanupTransaction;
PFN_SERCX2_SYSTEM_DMA_TRANSMIT_CONFIGURE_DMA_CHANNEL EvtSerCx2SystemDmaTransmitConfigureDmaChannel;
PFN_SERCX2_SYSTEM_DMA_TRANSMIT_DRAIN_FIFO EvtSerCx2SystemDmaTransmitDrainFifo;
PFN_SERCX2_SYSTEM_DMA_TRANSMIT_CANCEL_DRAIN_FIFO EvtSerCx2SystemDmaTransmitCancelDrainFifo;
PFN_SERCX2_SYSTEM_DMA_TRANSMIT_PURGE_FIFO EvtSerCx2SystemDmaTransmitPurgeFifo;
} SERCX2_SYSTEM_DMA_TRANSMIT_CONFIG, *PSERCX2_SYSTEM_DMA_TRANSMIT_CONFIG;
Angehörige
Size
Die Größe dieser Struktur in Byte. Die SerCx2SystemDmaTransmitCreate Methode verwendet dieses Element, um zu bestimmen, welche Struktur der Aufrufer verwendet. Die Größe dieser Struktur kann sich in zukünftigen Versionen der Headerdatei Sercx.h ändern.
MaximumTransferLength
Die standardmäßige maximale Größe in Byte, die der serielle Controller in einer einzigen System-DMA-Übertragung verarbeiten kann. Wenn die Größe des Puffers in der Schreibanforderung (IRP_MJ_WRITE) größer als diese maximale Größe ist, verwendet SerCx2 mehrere DMA-Übertragungen, um die Anforderung zu verarbeiten, und begrenzt jede Übertragung auf die maximale Länge.
MinimumTransactionLength
Die Mindestlänge einer System-DMA-Übertragungstransaktion in Bytes. Wenn die Länge des Puffers in einer Schreibanforderung kleiner als diese Mindestlänge ist, verwendet SerCx2 für die Transaktion programmierte E/A (PIO).
DmaAlignment
DMA-Ausrichtungsanforderung. Gibt an, wie die Startadresse einer Übertragung in einer System-DMA-Übertragungstransaktion im Arbeitsspeicher ausgerichtet werden muss. Legen Sie dieses Element auf die entsprechende FILE_XXX-_ALIGNMENT Konstante in der Wdm.h-Headerdatei fest. Beispielsweise gibt FILE_WORD_ALIGNMENT an, dass die Start-DMA-Adresse an einer Zwei-Byte-Grenze im Arbeitsspeicher ausgerichtet werden muss, FILE_LONG_ALIGNMENT gibt an, dass die Adresse an einer Grenze von vier Byte ausgerichtet werden muss usw. SerCx2 unterstützt keine FILE_BYTE_ALIGNMENT. Die Mindestübertragungseinheit (MTU) des System-DMA-Adapters sollte größer oder gleich der erforderlichen Ausrichtung sein. Wenn die MTU beispielsweise vier Byte ist, muss DmaAlignment- mindestens FILE_LONG_ALIGNMENT sein.
MaximumScatterGatherFragments
Die maximale Anzahl von Pufferfragmenten, die in der Punkt/Gather-Liste für eine DMA-Übertragung in einer System-DMA-Übertragungstransaktion angegeben werden können.
DmaWidth
Die Breite des Datenregisters an der adresse, die durch DeviceAddressangegeben wird. Mögliche Werte sind Width8Bits, Width16Bits, Width32Bitsund Width64Bits.
DeviceAddress
Die übersetzte Geräteadresse, an die der DMA-Verantwortliche Daten überträgt, um übertragen zu werden. Weitere Informationen finden Sie in der Beschreibung des DeviceAddress- Mitglieds in WDF_DMA_SYSTEM_PROFILE_CONFIG.
DmaDescriptor
Ein Zeiger auf die CM_PARTIAL_RESOURCE_DESCRIPTOR-Struktur, die die System-DMA-Ressource beschreibt, die für die Übertragung von Transaktionen verwendet werden soll. Der serielle Controllertreiber ruft diese Struktur aus der Rohressourcenliste ab, die er in der EvtDevicePreparePrepareHardware Rückruf empfängt, der den seriellen Controller startet.
MinimumTransferUnitOverride
Ein Außerkraftsetzungswert, der anstelle der standardmäßigen Mindestübertragungseinheit verwendet werden soll. Die Anzahl der Byte, die durch ein Element in einer Punkt/Gather-Liste angegeben werden, muss eine ganze Zahl von mehreren der mindesten Übertragungseinheit sein. Ein Wert von Null gibt an, dass die standardmäßige Mindestübertragungseinheit verwendet werden soll. Weitere Informationen zur standardmäßigen Mindestübertragungseinheit finden Sie unter DMA_ADAPTER_INFO_V1.
Exclusive
Gibt an, ob System-DMA-Transmissionstransaktionen ausschließlich zum Verarbeiten von Schreibanforderungen (IRP_MJ_WRITE) verwendet werden sollen. Legen Sie auf TRUE- fest, um anzugeben, dass Schreibanforderungen ausschließlich System-DMA-Übertragungstransaktionen verwenden sollten. Legen Sie auf FALSE- fest, um anzugeben, dass Schreibanforderungen eine Kombination aus System-DMA-Übertragungstransaktionen und PIO-Übertragungstransaktionen verwenden können.
Legen Sie dieses Element auf TRUE fest, nur, wenn die minimale Übertragungseinheit für System-DMA-Übertragungstransaktionen ein Byte ist, die mindeste Transaktionslänge ein Byte ist und der Schreibpuffer für die Transaktion für jede Bytegrenze im Arbeitsspeicher gestartet werden kann.
Wenn ExclusiveTRUEist, müssen die Elemente MinimumTransferUnitOverride, Alignmentund MinimumTransactionLength Member null sein.
EvtSerCx2SystemDmaTransmitInitializeTransaction
Ein Zeiger auf die vom Treiber implementierte EvtSerCx2SystemDmaTransmitInitializeTransaction Ereignisrückruffunktion. Dieses Element ist optional und kann auf NULL- festgelegt werden, um anzugeben, dass der Treiber die Funktion nicht implementiert.
EvtSerCx2SystemDmaTransmitCleanupTransaction
Ein Zeiger auf die vom Treiber implementierte EvtSerCx2SystemDmaTransmitCleanupTransaction Ereignisrückruffunktion. Dieses Element ist optional und kann auf NULL- festgelegt werden, um anzugeben, dass der Treiber die Funktion nicht implementiert.
EvtSerCx2SystemDmaTransmitConfigureDmaChannel
Ein Zeiger auf die vom Treiber implementierte EvtSerCx2SystemDmaTransmitConfigureDmaChannel Ereignisrückruffunktion. Dieses Element ist optional und kann auf NULL- festgelegt werden, um anzugeben, dass der Treiber die Funktion nicht implementiert.
EvtSerCx2SystemDmaTransmitDrainFifo
Ein Zeiger auf die vom Treiber implementierte EvtSerCx2SystemDmaTransmitDrainFifo Ereignisrückruffunktion. Dieses Element ist optional und kann auf NULL- festgelegt werden, um anzugeben, dass der Treiber die Funktion nicht implementiert. Ein Treiber, der diese Funktion implementiert, muss jedoch auch EvtSerCx2SystemDmaTransmitCancelDrainFifo und EvtSerCx2SystemDmaTransmitPurgeFifo Funktionen implementieren.
EvtSerCx2SystemDmaTransmitCancelDrainFifo
Ein Zeiger auf die vom Treiber implementierte EvtSerCx2SystemDmaTransmitCancelDrainFifo Ereignisrückruffunktion. Dieses Element ist optional und kann auf NULL- festgelegt werden, um anzugeben, dass der Treiber die Funktion nicht implementiert. Ein Treiber, der diese Funktion implementiert, muss jedoch auch EvtSerCx2SystemDmaTransmitDrainFifo und EvtSerCx2SystemDmaTransmitPurgeFifo Funktionen implementieren.
EvtSerCx2SystemDmaTransmitPurgeFifo
Ein Zeiger auf die vom Treiber implementierte EvtSerCx2SystemDmaTransmitPurgeFifo Ereignisrückruffunktion. Dieses Element ist optional und kann auf NULL- festgelegt werden, um anzugeben, dass der Treiber die Funktion nicht implementiert. Ein Treiber, der diese Funktion implementiert, muss jedoch auch EvtSerCx2SystemDmaTransmitDrainFifo und EvtSerCx2SystemDmaTransmitCancelDrainFifo Funktionen implementieren.
Bemerkungen
Die SerCx2SystemDmaTransmitCreate Methode akzeptiert einen Zeiger auf eine SERCX2_SYSTEM_DMA_TRANSMIT_CONFIG Struktur als Eingabeparameter. Rufen Sie vor dem Aufrufen SerCx2SystemDmaTransmitCreatedie SERCX2_SYSTEM_DMA_TRANSMIT_CONFIG_INIT-Funktion auf, um diese Struktur zu initialisieren.
Anforderungen
Anforderung | Wert |
---|---|
mindestens unterstützte Client- | Wird ab Windows 8.1 unterstützt. |
Header- | sercx.h |
Siehe auch
EvtSerCx2SystemDmaTransmitCancelDrainFifo
EvtSerCx2SystemDmaTransmitCleanupTransaction
EvtSerCx2SystemDmaTransmitConfigureDmaChannel
EvtSerCx2SystemDmaTransmitDrainFifo
EvtSerCx2SystemDmaTransmitInitializeTransaction
EvtSerCx2SystemDmaTransmitPurgeFifo