struttura SERCX2_SYSTEM_DMA_RECEIVE_CONFIG (sercx.h)

La struttura SERCX2_SYSTEM_DMA_RECEIVE_CONFIG contiene informazioni usate dalla versione 2 dell'estensione del framework seriale (SerCx2) per configurare un nuovo oggetto system-DMA-receive.

Sintassi

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;

Members

Size

Dimensione, in byte, della struttura. Il metodo SerCx2SystemDmaReceiveCreate usa 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 le dimensioni del buffer nella richiesta di lettura (IRP_MJ_READ) sono maggiori 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 ricezione DMA di sistema. Se la lunghezza del buffer in una richiesta di lettura è inferiore a questa lunghezza minima, SerCx2 usa i/O programmati per la transazione.

DmaAlignment

Requisito di allineamento DMA. Specifica il modo in cui l'indirizzo iniziale di un trasferimento in una transazione di ricezione DMA di sistema deve essere allineato in memoria. Impostare questo membro sulla costante FILE_XXX_ALIGNMENT appropriata nel file di intestazione Wdm.h. Ad esempio, FILE_WORD_ALIGNMENT indica che l'indirizzo DMA iniziale deve essere allineato al limite a due byte in memoria, FILE_LONG_ALIGNMENT indica che l'indirizzo deve essere allineato a un limite a quattro byte e così via. SerCx2 non supporta FILE_BYTE_ALIGNMENT. L'unità di trasferimento minima (MTU) dell'adattatore DMA di sistema deve essere maggiore o uguale all'allineamento richiesto. Ad esempio, se l'MTU è quattro byte, DmaAlignment deve essere almeno FILE_LONG_ALIGNMENT.

MaximumScatterGatherFragments

Numero massimo di frammenti di buffer che è possibile specificare nell'elenco di dispersione/raccolta per un trasferimento DMA in una transazione di ricezione DMA di sistema.

DmaWidth

Larghezza del registro dati in corrispondenza dell'indirizzo specificato da DeviceAddress. I valori possibili sono Width8Bits, Width16Bits, Width32Bits e Width64Bits.

DeviceAddress

Indirizzo convertito da cui il controller DMA trasferisce. Per altre informazioni, vedere la descrizione del membro DeviceAddress in WDF_DMA_SYSTEM_PROFILE_CONFIG.

DmaDescriptor

Puntatore alla struttura CM_PARTIAL_RESOURCE_DESCRIPTOR che descrive la risorsa DMA di sistema da usare per le transazioni di ricezione. Il driver del controller seriale ottiene questa struttura dall'elenco di risorse non elaborate che riceve nel callback EvtDevicePrepareHardware 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 utilizzata l'unità di trasferimento minima predefinita. Per altre informazioni, vedere la descrizione del membro MinimumTransferUnit in DMA_ADAPTER_INFO_V1.

Exclusive

Indica se usare transazioni di ricezione DMA di sistema esclusivamente per gestire le richieste di scrittura (IRP_MJ_READ). Impostare su TRUE per indicare che le richieste di lettura devono usare esclusivamente transazioni system-DMA-receive. Impostare su FALSE per indicare che le richieste di lettura possono usare una combinazione di transazioni system-DMA-receive e transazioni di ricezione PIO.

Impostare questo membro su TRUE solo se l'unità di trasferimento minima per le transazioni system-DMA-receive è di un byte, la lunghezza minima della transazione è di un byte e il buffer di lettura per la transazione può iniziare su qualsiasi limite di byte in memoria.

Se Exclusive è TRUE, i membri MinimumTransferUnitOverride, DmaAlignment e MinimumTransactionLength devono essere zero.

Indipendentemente dal valore di questo membro, le transazioni di ricezione PIO vengono usate per salvare i dati non letti nella ricezione FIFO prima che il controller seriale esca dallo stato di alimentazione del dispositivo D0 per entrare in uno stato a basso consumo.

EvtSerCx2SystemDmaReceiveInitializeTransaction

Puntatore alla funzione di callback dell'evento EvtSerCx2SystemDmaReceiveInitializeTransaction implementata dal driver. Questo membro è facoltativo e può essere impostato su NULL per indicare che il driver non implementa la funzione.

EvtSerCx2SystemDmaReceiveCleanupTransaction

Puntatore alla funzione di callback dell'evento EvtSerCx2SystemDmaReceiveCleanupTransaction implementata dal driver. Questo membro è facoltativo e può essere impostato su NULL per indicare che il driver non implementa la funzione.

EvtSerCx2SystemDmaReceiveConfigureDmaChannel

Puntatore alla funzione di callback degli eventi EvtSerCx2SystemDmaReceiveConfigureDmaChannel implementata dal driver. Questo membro è facoltativo e può essere impostato su NULL per indicare che il driver non implementa la funzione.

EvtSerCx2SystemDmaReceiveEnableNewDataNotification

Puntatore alla funzione di callback degli eventi EvtSerCx2SystemDmaReceiveEnableNewDataNotification implementata dal driver. 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 una funzione EvtSerCx2SystemDmaReceiveCancelNewDataNotification .

EvtSerCx2SystemDmaReceiveCancelNewDataNotification

Puntatore alla funzione di callback dell'evento EvtSerCx2SystemDmaReceiveCancelNewDataNotification implementata dal driver. 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 una funzione EvtSerCx2SystemDmaReceiveEnableNewDataNotification .

Commenti

Il metodo SerCx2SystemDmaReceiveCreate accetta un puntatore a una struttura SERCX2_SYSTEM_DMA_RECEIVE_CONFIG come parametro di input. Prima di chiamare SerCx2SystemDmaReceiveCreate, chiamare la funzione SERCX2_SYSTEM_DMA_RECEIVE_CONFIG_INIT o SERCX2_SYSTEM_DMA_RECEIVE_CONFIG_INIT_NEW_DATA_NOTIFICATION per inizializzare questa struttura.

Requisiti

Requisito Valore
Client minimo supportato Supportato a partire da Windows 8.1.
Intestazione sercx.h

Vedi anche

CM_PARTIAL_RESOURCE_DESCRIPTOR

EvtDevicePrepareHardware

EvtSerCx2SystemDmaReceiveCancelNewDataNotification

EvtSerCx2SystemDmaReceiveCleanupTransaction

EvtSerCx2SystemDmaReceiveConfigureDmaChannel

EvtSerCx2SystemDmaReceiveEnableNewDataNotification

EvtSerCx2SystemDmaReceiveInitializeTransaction

IRP_MJ_READ

SERCX2_SYSTEM_DMA_RECEIVE_CONFIG_INIT

SERCX2_SYSTEM_DMA_RECEIVE_CONFIG_INIT_NEW_DATA_NOTIFICATION

SerCx2SystemDmaReceiveCreate

WdfDmaEnablerSetMaximumScatterGatherElements