Partager via


EVT_SERCX_TRANSMIT fonction de rappel (sercx.h)

La fonction de rappel d’événement EvtSerCxTransmit prépare le périphérique de contrôleur série (UART) à effectuer une opération d’écriture (transmission).

Syntaxe

EVT_SERCX_TRANSMIT EvtSercxTransmit;

NTSTATUS EvtSercxTransmit(
  [in] WDFDEVICE Device,
  [in] size_t Length
)
{...}

Paramètres

[in] Device

Un handle WDFDEVICE pour l’objet d’appareil framework qui représente le contrôleur série.

[in] Length

Nombre d'octets à transmettre. Le pilote de contrôleur peut utiliser cette valeur comme indicateur pour décider s’il faut utiliser PIO ou DMA pour effectuer le transfert de données.

Valeur retournée

La fonction EvtSerCxTransmit retourne STATUS_SUCCESS si l’appel réussit. Sinon, il retourne une erreur appropriée status code.

Remarques

L’extension de framework série (SerCx) appelle cette fonction pour configurer le matériel du contrôleur série pour transmettre des données. Si nécessaire, la fonction EvtSerCxTransmit peut activer les interruptions.

La fonction EvtSerCxTransmit n’écrit pas nécessairement les données de sortie dans la mémoire tampon FIFO de transmission. Selon le matériel du contrôleur série ou le type de transfert, cette fonction peut configurer une opération DMA pour écrire les données ou planifier une fonction DPC de transmission/réception pour écrire les données. Le pilote de contrôleur série implémente cette fonction DPC pour transmettre des données au contrôleur série et recevoir des données du contrôleur. Pendant la DPC, la fonction DPC détermine si les données sont disponibles pour être transmises et, si c’est le cas, utilise PIO pour transférer les données vers le fiFO de transmission dans le contrôleur série.

Si le FIFO de transmission dans le contrôleur série est complet ou presque, mais que l’interruption de marque à faible débit du FIFO est activée, la fonction EvtSerCxTransmit peut simplement retourner. Plus tard, l’ISR du pilote du contrôleur peut planifier l’exécution de la fonction DPC de transmission/réception, et cette fonction peut transférer davantage de données de sortie vers le fiFO de transmission.

Pour inscrire une fonction de rappel EvtSerCxTransmit , le pilote du contrôleur appelle la méthode SerCxInitialize pendant le rappel EvtDriverDeviceAdd .

Exemples

Le type de fonction de ce rappel est déclaré dans Sercx.h, comme suit.

typedef NTSTATUS
  EVT_SERCX_TRANSMIT(
    __in WDFDEVICE Device
    );

Pour définir une fonction de rappel EvtSerCxTransmit nommée MyEvtSerCxTransmit, vous devez d’abord fournir une déclaration de fonction requise par Static Driver Verifier (SDV) et d’autres outils de vérification, comme suit.

EVT_SERCX_TRANSMIT MyEvtSerCxTransmit;

Ensuite, implémentez votre fonction de rappel comme suit.

NTSTATUS
  MyEvtSerCxTransmit(
    __in WDFDEVICE Device
    )
{ ... }

Pour plus d’informations sur les exigences SDV pour les déclarations de fonction, consultez Déclaration de fonctions à l’aide de types de rôles de fonction pour les pilotes KMDF.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Disponible à partir de Windows 8.
Plateforme cible Desktop (Expérience utilisateur)
En-tête sercx.h
IRQL Appelé à IRQL <= DISPATCH_LEVEL

Voir aussi

EvtDriverDeviceAdd

SerCxInitialize

WdfDpcEnqueue