SERCX2_SYSTEM_DMA_RECEIVE_CONFIG Struktur (sercx.h)
Die SERCX2_SYSTEM_DMA_RECEIVE_CONFIG-Struktur enthält Informationen, die Version 2 der seriellen Framework-Erweiterung (SerCx2) zum Konfigurieren eines neuen System-DMA-Empfangsobjekts verwendet.
Syntax
typedef struct _SERCX2_SYSTEM_DMA_RECEIVE_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_RECEIVE_INITIALIZE_TRANSACTION EvtSerCx2SystemDmaReceiveInitializeTransaction;
PFN_SERCX2_SYSTEM_DMA_RECEIVE_CLEANUP_TRANSACTION EvtSerCx2SystemDmaReceiveCleanupTransaction;
PFN_SERCX2_SYSTEM_DMA_RECEIVE_CONFIGURE_DMA_CHANNEL EvtSerCx2SystemDmaReceiveConfigureDmaChannel;
PFN_SERCX2_SYSTEM_DMA_RECEIVE_ENABLE_NEW_DATA_NOTIFICATION EvtSerCx2SystemDmaReceiveEnableNewDataNotification;
PFN_SERCX2_SYSTEM_DMA_RECEIVE_CANCEL_NEW_DATA_NOTIFICATION EvtSerCx2SystemDmaReceiveCancelNewDataNotification;
} SERCX2_SYSTEM_DMA_RECEIVE_CONFIG, *PSERCX2_SYSTEM_DMA_RECEIVE_CONFIG;
Angehörige
Size
Die Größe dieser Struktur in Byte. Die SerCx2SystemDmaReceiveCreate 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 Leseanforderung (IRP_MJ_READ) 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-Empfangstransaktion in Bytes. Wenn die Länge des Puffers in einer Leseanforderung 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-Empfangstransaktion 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 der Grenze von zwei Byte im Speicher ausgerichtet werden muss, FILE_LONG_ALIGNMENT angibt, 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-Empfangstransaktion 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 Adresse, von der der DMA-Controller übertragen wird. 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 den Empfang 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 finden Sie in der Beschreibung des MinimumTransferUnit Members in DMA_ADAPTER_INFO_V1.
Exclusive
Gibt an, ob System-DMA-Receive-Transaktionen ausschließlich zum Verarbeiten von Schreibanforderungen (IRP_MJ_READ) verwendet werden sollen. Legen Sie auf TRUE- fest, um anzugeben, dass Leseanforderungen ausschließlich System-DMA-Empfangstransaktionen verwenden sollten. Legen Sie auf FALSE- fest, um anzugeben, dass Leseanforderungen eine Kombination aus System-DMA-Empfangstransaktionen und PIO-Empfangstransaktionen verwenden können.
Legen Sie dieses Element auf TRUE fest, nur, wenn die minimale Übertragungseinheit für System-DMA-Empfangen-Transaktionen ein Byte ist, die mindeste Transaktionslänge ein Byte ist und der Lesepuffer für die Transaktion für jede Bytegrenze im Arbeitsspeicher gestartet werden kann.
Wenn ExclusiveTRUEist, müssen die MinimumTransferUnitOverride, DmaAlignment-und MinimumTransactionLength Member null sein.
Unabhängig vom Wert dieses Mitglieds werden PIO-Empfangstransaktionen verwendet, um ungelesene Daten im Empfangs-FIFO zu speichern, bevor der serielle Controller den D0-Gerätestromzustand verlässt, um in einen Energiesparmodus zu gelangen.
EvtSerCx2SystemDmaReceiveInitializeTransaction
Ein Zeiger auf die vom Treiber implementierte EvtSerCx2SystemDmaReceiveInitializeTransaction Ereignisrückruffunktion. Dieses Element ist optional und kann auf NULL- festgelegt werden, um anzugeben, dass der Treiber die Funktion nicht implementiert.
EvtSerCx2SystemDmaReceiveCleanupTransaction
Ein Zeiger auf die vom Treiber implementierte EvtSerCx2SystemDmaReceiveCleanupTransaction Ereignisrückruffunktion. Dieses Element ist optional und kann auf NULL- festgelegt werden, um anzugeben, dass der Treiber die Funktion nicht implementiert.
EvtSerCx2SystemDmaReceiveConfigureDmaChannel
Ein Zeiger auf die vom Treiber implementierte EvtSerCx2SystemDmaReceiveConfigureDmaChannel Ereignisrückruffunktion. Dieses Element ist optional und kann auf NULL- festgelegt werden, um anzugeben, dass der Treiber die Funktion nicht implementiert.
EvtSerCx2SystemDmaReceiveEnableNewDataNotification
Ein Zeiger auf die vom Treiber implementierte EvtSerCx2SystemDmaReceiveEnableNewDataNotification 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 eine EvtSerCx2SystemDmaReceiveCancelNewDataNotification-Funktion implementieren.
EvtSerCx2SystemDmaReceiveCancelNewDataNotification
Ein Zeiger auf die vom Treiber implementierte EvtSerCx2SystemDmaReceiveCancelNewDataNotification 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 eine EvtSerCx2SystemDmaReceiveEnableNewDataNotification-Funktion implementieren.
Bemerkungen
Die SerCx2SystemDmaReceiveCreate Methode akzeptiert einen Zeiger auf eine SERCX2_SYSTEM_DMA_RECEIVE_CONFIG Struktur als Eingabeparameter. Rufen Sie vor dem Aufrufen SerCx2SystemDmaReceiveCreatedie SERCX2_SYSTEM_DMA_RECEIVE_CONFIG_INIT- oder SERCX2_SYSTEM_DMA_RECEIVE_CONFIG_INIT_NEW_DATA_NOTIFICATION-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
CM_PARTIAL_RESOURCE_DESCRIPTOR
EvtSerCx2SystemDmaReceiveCancelNewDataNotification
EvtSerCx2SystemDmaReceiveCleanupTransaction
EvtSerCx2SystemDmaReceiveConfigureDmaChannel
EvtSerCx2SystemDmaReceiveEnableNewDataNotification
EvtSerCx2SystemDmaReceiveInitializeTransaction
SERCX2_SYSTEM_DMA_RECEIVE_CONFIG_INIT