struttura SERCX2_SYSTEM_DMA_TRANSMIT_CONFIG (sercx.h)
La struttura SERCX2_SYSTEM_DMA_TRANSMIT_CONFIG contiene informazioni usate dalla versione 2 dell'estensione del framework seriale (SerCx2) per configurare un nuovo oggetto system-DMA-transmit.
Sintassi
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;
Membri
Size
Dimensione, in byte, di questa struttura. Il metodo SerCx2SystemDmaTransmitCreate utilizza questo membro per determinare la versione della struttura utilizzata dal chiamante. Le dimensioni di questa struttura potrebbero cambiare nelle versioni future del file di intestazione Sercx.h.
MaximumTransferLength
Dimensioni massime predefinite, in byte, che il controller seriale può gestire in un singolo trasferimento DMA di sistema. Se la dimensione del buffer nella richiesta di scrittura (IRP_MJ_WRITE) è maggiore di questa dimensione massima, SerCx2 usa più trasferimenti DMA per gestire la richiesta e limita ogni trasferimento alla lunghezza massima.
MinimumTransactionLength
Lunghezza minima, in byte, di una transazione di trasmissione DMA di sistema. Se la lunghezza del buffer in una richiesta di scrittura è inferiore a questa lunghezza minima, SerCx2 usa le operazioni di I/O programmate per la transazione.
DmaAlignment
Requisito di allineamento DMA. Specifica il modo in cui l'indirizzo iniziale di un trasferimento in una transazione di trasmissione DMA di sistema deve essere allineato in memoria. Impostare questo membro sulla costante_ALIGNMENT FILE_
MaximumScatterGatherFragments
Numero massimo di frammenti di buffer che possono essere specificati nell'elenco a dispersione/raccolta per un trasferimento DMA in una transazione di trasmissione DMA di sistema.
DmaWidth
Larghezza del registro dati nell'indirizzo specificato da DeviceAddress. I valori possibili sono Width8Bits, Width16Bits, Width32Bitse Width64Bits.
DeviceAddress
Indirizzo del dispositivo convertito in cui il controller DMA trasferisce i dati da trasmettere. Per altre informazioni, vedere la descrizione del membro DeviceAddress
DmaDescriptor
Puntatore alla struttura CM_PARTIAL_RESOURCE_DESCRIPTOR che descrive la risorsa DMA di sistema da usare per la trasmissione delle transazioni. Il driver del controller seriale ottiene questa struttura dall'elenco di risorse non elaborate che riceve nel EvtDevicePrepareHardware callback che avvia il controller seriale.
MinimumTransferUnitOverride
Valore di override da usare al posto dell'unità di trasferimento minima predefinita. Il numero di byte specificato da un elemento in un elenco a dispersione/raccolta deve essere un multiplo intero dell'unità di trasferimento minima. Il valore zero indica che deve essere usata l'unità di trasferimento minima predefinita. Per altre informazioni sull'unità di trasferimento minima predefinita, vedere DMA_ADAPTER_INFO_V1.
Exclusive
Indica se usare transazioni di trasmissione DMA di sistema esclusivamente per gestire le richieste di scrittura (IRP_MJ_WRITE). Impostare su true per indicare che le richieste di scrittura devono usare esclusivamente transazioni di trasmissione DMA di sistema. Impostare su false per indicare che le richieste di scrittura possono usare una combinazione di transazioni di trasmissione DMA di sistema e transazioni di trasmissione PIO.
Impostare questo membro su TRUE solo se l'unità di trasferimento minima per le transazioni di trasmissione DMA di sistema è di un byte, la lunghezza minima della transazione è di un byte e il buffer di scrittura per la transazione può iniziare su qualsiasi limite di byte in memoria.
Se exclusive è TRUE, i membri MinimumTransferUnitOverride, Alignmente MinimumTransactionLength devono essere pari a zero.
EvtSerCx2SystemDmaTransmitInitializeTransaction
Puntatore al driver implementato EvtSerCx2SystemDmaTransmitInitializeTransaction funzione di callback degli eventi. Questo membro è facoltativo e può essere impostato su NULL per indicare che il driver non implementa la funzione.
EvtSerCx2SystemDmaTransmitCleanupTransaction
Puntatore al driver implementato EvtSerCx2SystemDmaTransmitCleanupTransaction funzione di callback degli eventi. Questo membro è facoltativo e può essere impostato su NULL per indicare che il driver non implementa la funzione.
EvtSerCx2SystemDmaTransmitConfigureDmaChannel
Puntatore alla
EvtSerCx2SystemDmaTransmitDrainFifo
Puntatore al driver implementato EvtSerCx2SystemDmaTransmitDrainFifo funzione di callback degli eventi. Questo membro è facoltativo e può essere impostato su NULL per indicare che il driver non implementa la funzione. Tuttavia, un driver che implementa questa funzione deve implementare anche EvtSerCx2SystemDmaTransmitCancelDrainFifo e EvtSerCx2SystemDmaTransmitPurgeFifo funzioni.
EvtSerCx2SystemDmaTransmitCancelDrainFifo
Puntatore alla funzione di callback degli eventi implementata dal driver EvtSerCx2SystemDmaTransmitCancelDrainFifo. Questo membro è facoltativo e può essere impostato su NULL per indicare che il driver non implementa la funzione. Tuttavia, un driver che implementa questa funzione deve implementare anche funzioni EvtSerCx2SystemDmaTransmitDrainFifo e EvtSerCx2SystemDmaTransmitPurgeFifo.
EvtSerCx2SystemDmaTransmitPurgeFifo
Puntatore alla funzione di callback degli eventi implementata dal driver EvtSerCx2SystemDmaTransmitPurgeFifo. Questo membro è facoltativo e può essere impostato su NULL per indicare che il driver non implementa la funzione. Tuttavia, un driver che implementa questa funzione deve implementare anche EvtSerCx2SystemDmaTransmitDrainFifo e EvtSerCx2SystemDmaTransmitCancelDrainFifo funzioni.
Osservazioni
Il metodo SerCx2SystemDmaTransmitCreate accetta un puntatore a una struttura SERCX2_SYSTEM_DMA_TRANSMIT_CONFIG come parametro di input. Prima di chiamare SerCx2SystemDmaTransmitCreate, chiamare la funzione SERCX2_SYSTEM_DMA_TRANSMIT_CONFIG_INIT per inizializzare questa struttura.
Fabbisogno
Requisito | Valore |
---|---|
client minimo supportato | Supportato a partire da Windows 8.1. |
intestazione |
sercx.h |
Vedere anche
EvtSerCx2SystemDmaTransmitCancelDrainFifo
EvtSerCx2SystemDmaTransmitCleanupTransaction
EvtSerCx2SystemDmaTransmitConfigureDmaChannel
EvtSerCx2SystemDmaTransmitDrainFifo
EvtSerCx2SystemDmaTransmitInitializeTransaction
EvtSerCx2SystemDmaTransmitPurgeFifo