Condividi tramite


Funzione SerCx2CustomTransmitCreate (sercx.h)

Il metodo SerCx2CustomTransmitCreate crea un oggetto di trasmissione personalizzato, che la versione 2 dell'estensione del framework seriale (SerCx2) usa per scrivere dati trasmessi al controller seriale tramite un meccanismo personalizzato di trasferimento dei dati.

Sintassi

NTSTATUS SerCx2CustomTransmitCreate(
  [in]  WDFDEVICE                      Device,
  [in]  PSERCX2_CUSTOM_TRANSMIT_CONFIG CustomTransmitConfig,
  [in]  PWDF_OBJECT_ATTRIBUTES         Attributes,
  [out] SERCX2CUSTOMTRANSMIT           *CustomTransmit
);

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] CustomTransmitConfig

Puntatore a una struttura SERCX2_CUSTOM_TRANSMIT_CONFIG. Prima di chiamare questo metodo, il chiamante deve chiamare la funzione SERCX2_CUSTOM_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 personalizzate.

[in] Attributes

Puntatore a una struttura WDF_OBJECT_ATTRIBUTES che descrive gli attributi da assegnare al nuovo oggetto di trasmissione personalizzato. 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] CustomTransmit

Puntatore a una posizione in cui questo metodo scrive un handle SERCX2CUSTOMTRANSMIT nell'oggetto di trasmissione personalizzato 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
STATUS_INVALID_DEVICE_REQUEST
Un oggetto di trasmissione personalizzato esiste già da una precedente SerCx2CustomTransmitCreate chiamata; o un oggetto di trasmissione DMA di sistema esiste da una precedente SerCx2SystemDmaTransmitCreate chiamata; o un oggetto di trasmissione system-DMA esiste da una precedente SerCx2SystemDmaTransmitCreate chiamata; o SerCx2PioTransmitCreate non è ancora stato chiamato per creare un oggetto di trasmissione PIO.
STATUS_INVALID_PARAMETER
Un valore di parametro non è valido.
STATUS_INFO_LENGTH_MISMATCH
Il valoredimensioni config non è uguale a sizeof(SERCX2_CUSTOM_TRANSMIT_CONFIG).
STATUS_INSUFFICIENT_RESOURCES
Sono disponibili risorse insufficienti per creare l'oggetto di trasmissione personalizzato.

Osservazioni

Questo metodo viene chiamato dal driver del controller seriale per creare un oggetto di trasmissione personalizzato. SerCx2 usa questo oggetto per eseguire transazioni di trasmissione personalizzate, ovvero transazioni che usano un meccanismo di trasferimento dati personalizzato per scrivere dati trasmessi al controller seriale.

Un driver del controller seriale deve chiamare correttamente i metodi SerCx2InitializeDevice e SerCx2PioTransmitCreate prima di chiamare SerCx2CustomTransmitCreate.

Prima di chiamare SerCx2CustomTransmitCreate, il driver del controller seriale deve chiamare la funzione di SERCX2_CUSTOM_TRANSMIT_CONFIG_INIT per inizializzare la struttura SERCX2_CUSTOM_TRANSMIT_CONFIG a cui punta CustomTransmitConfig. Questa funzione imposta i membri seguenti della struttura su zero:

  • allineamento
  • minimumTransactionLength
  • MaximumTransactionLength
  • minimumTransferUnit
  • esclusivo
Se necessario, il driver del controller seriale può impostare uno di questi membri su valori diversi da zero dopo la restituzione della funzione di inizializzazione. Tuttavia, per praticità, SerCx2CustomTransmitCreate usa i valori predefiniti seguenti se questi membri sono zero:
  • Se l'allineamento è zero, SerCx2 imposta il valore di allineamento dei dati su uno, il che significa che il buffer di scrittura può iniziare su un limite di byte arbitrario in memoria.
  • Se minimumTransactionLength è zero, SerCx2 imposta la lunghezza minima della transazione su un byte.
  • Se MaximumTransactionLength è zero, SerCx2 imposta la lunghezza massima della transazione su ((ULONG)-1).
  • Se minimumTransferUnit è zero, SerCx2 imposta l'unità di trasferimento minima su un byte.
  • Se esclusivo è zero (FALSE), la modalità esclusiva è disabilitata.
Se il driver chiamante imposta exclusive su TRUE, i membri MinimumTransferUnit, Alignmente MinimumTransactionLength devono essere zero. Per altre informazioni, vedere SERCX2_CUSTOM_TRANSMIT_CONFIG.

Come opzione, un driver del controller seriale può usare il parametro Attributi per creare un contesto per l'oggetto di trasmissione personalizzato e fornire puntatori a EvtCleanupCallback e EvtDestroyCallback funzioni chiamate per preparare l'oggetto per l'eliminazione. Per altre informazioni, vedere WDF_OBJECT_ATTRIBUTES.

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 personalizzati, vedere SERCX2CUSTOMTRANSMIT. Per altre informazioni sulle transazioni di trasmissione personalizzate, vedere SerCx2 Custom-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

EvtCleanupCallback

EvtDestroyCallback

EvtDriverDeviceAdd

SERCX2CUSTOMTRANSMIT

SERCX2_CUSTOM_TRANSMIT_CONFIG

SERCX2_CUSTOM_TRANSMIT_CONFIG_INIT

SerCx2InitializeDevice

SerCx2PioTransmitCreare

WDF_OBJECT_ATTRIBUTES

WDF_OBJECT_ATTRIBUTES_INIT