Funzione SerCx2SystemDmaTransmitCreate (sercx.h)
Il metodo SerCx2SystemDmaTransmitCreate crea un oggetto SerCx2 system-DMA-transmit, che la versione 2 dell'estensione del framework seriale (SerCx2) usa per eseguire transazioni di trasmissione DMA di sistema.
Sintassi
NTSTATUS SerCx2SystemDmaTransmitCreate(
[in] WDFDEVICE Device,
[in] PSERCX2_SYSTEM_DMA_TRANSMIT_CONFIG SystemDmaTransmitConfig,
[in, optional] PWDF_OBJECT_ATTRIBUTES Attributes,
[out] SERCX2SYSTEMDMATRANSMIT *SystemDmaTransmit
);
Parametri
[in] Device
Handle WDFDEVICE per l'oggetto dispositivo framework che rappresenta il controller seriale. Il driver del controller seriale ha creato questo oggetto nel relativo EvtDriverDeviceAdd funzione di callback. Per altre informazioni, vedere SerCx2InitializeDevice.
[in] SystemDmaTransmitConfig
Puntatore a una struttura SERCX2_SYSTEM_DMA_TRANSMIT_CONFIG. Prima di chiamare questo metodo, il chiamante deve chiamare la funzione SERCX2_SYSTEM_DMA_TRANSMIT_CONFIG_INIT per inizializzare la struttura. Questa struttura contiene puntatori a un set di routine di callback degli eventi implementate dal driver del controller seriale. SerCx2 chiama queste funzioni per eseguire transazioni di trasmissione DMA di sistema.
[in, optional] Attributes
Puntatore a una struttura WDF_OBJECT_ATTRIBUTES che descrive gli attributi da assegnare al nuovo oggetto system-DMA-transmit. Prima di chiamare questo metodo, il chiamante deve chiamare la funzione WDF_OBJECT_ATTRIBUTES_INIT per inizializzare la struttura. Questo parametro è facoltativo e può essere specificato come WDF_NO_OBJECT_ATTRIBUTES se il driver del controller seriale non deve assegnare attributi all'oggetto. Per altre informazioni, vedere Osservazioni.
[out] SystemDmaTransmit
Puntatore a una posizione in cui questo metodo scrive un handle SERCX2SYSTEMDMATRANSMIT nell'oggetto system-DMA-transmit appena creato. SerCx2 e il driver del controller seriale usano questo handle nelle chiamate successive per fare riferimento a questo oggetto.
Valore restituito
Questo metodo restituisce STATUS_SUCCESS se la chiamata ha esito positivo. I valori restituiti di errore possibili includono i codici di stato seguenti.
Codice restituito | Descrizione |
---|---|
|
Un oggetto di trasmissione system-DMA esiste già da una precedente SerCx2SystemDmaTransmitCreate chiamata; o un oggetto di trasmissione personalizzato esiste da una chiamata precedente al metodo SerCx2CustomTransmitCreate; o un oggetto di ricezione personalizzato esiste da una chiamata precedente al metodo SerCx2CustomReceiveCreate; o SerCx2PioTransmitCreate non è ancora stato chiamato per creare un oggetto di trasmissione PIO. |
|
Il valore Dimensioni |
|
Un valore di parametro non è valido. |
|
Sono disponibili risorse insufficienti per creare l'oggetto system-DMA-transmit. |
Osservazioni
Il driver del controller seriale può usare questo metodo per creare un oggetto di trasmissione system-DMA. SerCx2 usa questo oggetto per eseguire transazioni di trasmissione DMA di sistema, ovvero transazioni che utilizzano il controller DMA di sistema per scrivere dati nel controller seriale da trasmettere.
In genere, un driver del controller seriale chiama SerCx2SystemDmaTransmitCreate dal relativo EvtDevicePrepareHardware funzione di callback. Questa funzione riceve un elenco di risorse hardware, che possono includere canali DMA di sistema.
Il driver del controller seriale deve chiamare correttamente i metodi SerCx2InitializeDevice e SerCx2PioTransmitCreate prima di chiamare SerCx2SystemDmaTransmitCreate.
Prima di chiamare SerCx2SystemDmaTransmitCreate, il driver del controller seriale deve chiamare la funzione SERCX2_SYSTEM_DMA_TRANSMIT_CONFIG_INIT per inizializzare la struttura SERCX2_SYSTEM_DMA_TRANSMIT_CONFIG a cui punta SystemDmaTransmitConfig. Questa funzione imposta i membri seguenti della struttura su zero:
- MaximumScatterGatherFragments
- MinimumTransferUnitOverride
- DmaAlignment
- minimumTransactionLength
- esclusivo
- Se MaximumScatterGatherFragments è zero, SerCx2 imposta il numero massimo di elementi in un elenco a dispersione/raccolta su ((ULONG)-1).
- Se minimumTransferUnitOverride è zero, SerCx2 imposta l'unità di trasferimento minima sul valore predefinito, specificato nella struttura DMA_ADAPTER per il controller DMA di sistema. Per altre informazioni su questa struttura, vedere WdfDmaEnablerWdmGetDmaAdapter.
- Se DmaAlignment è zero, SerCx2 imposta il valore di allineamento sull'unità di trasferimento minima. Se minimumTransferUnitOverride è zero, viene usata l'unità di trasferimento minima predefinita.
- Se minimumTransactionLength è zero, SerCx2 imposta la lunghezza minima della transazione su un byte.
- Se esclusivo è zero (FALSE), la modalità esclusiva è disabilitata.
Se la combinazione specificata di funzioni di callback implementate non è valida, SerCx2SystemDmaTransmitCreate ha esito negativo e restituisce STATUS_INVALID_PARAMETER. Il driver deve implementare tutte e tre o nessuna delle EvtSerCx2SystemDmaTransmitDrainFifo, EvtSerCx2SystemDmaTransmitCancelDrainFifoe EvtSerCx2SystemDmaTransmitPurgeFifo funzioni.
Come opzione, un driver del controller seriale può usare il parametro attributi
Se il parametro Attributes punta a una struttura di WDF_OBJECT_ATTRIBUTES, il chiamante non deve sovrascrivere i valori scritti dalla funzione di inizializzazione WDF_OBJECT_ATTRIBUTES_INIT nei ParentObject, ExecutionLevele membri synchronizationScope di questa struttura.
Per altre informazioni sulla creazione di oggetti di trasmissione DMA di sistema, vedere SERCX2SYSTEMDMATRANSMIT. Per altre informazioni sulle transazioni di trasmissione DMA di sistema, vedere SerCx2 System-DMA-Transmit Transactions.
Fabbisogno
Requisito | Valore |
---|---|
client minimo supportato | Disponibile a partire da Windows 8.1. |
piattaforma di destinazione | Universale |
intestazione |
sercx.h |
IRQL | PASSIVE_LEVEL |
Vedere anche
EvtSerCx2SystemDmaTransmitCancelDrainFifo
EvtSerCx2SystemDmaTransmitCleanupTransaction
EvtSerCx2SystemDmaTransmitDrainFifo
EvtSerCx2SystemDmaTransmitInitializeTransaction
EvtSerCx2SystemDmaTransmitPurgeFifo
SERCX2_SYSTEM_DMA_TRANSMIT_CONFIG