Partager via


EVT_SERCX_RECEIVE fonction de rappel (sercx.h)

La fonction de rappel d’événements EvtSerCxReceive prépare l’appareil de contrôleur série (UART) pour effectuer une opération de lecture (réception).

Syntaxe

EVT_SERCX_RECEIVE EvtSercxReceive;

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

Paramètres

[in] Device

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

[in] Length

Nombre d’octets à recevoir. Le pilote du 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 de retour

La fonction EvtSerCxReceive retourne STATUS_SUCCESS si l’appel réussit. Sinon, elle retourne un code d’état d’erreur approprié.

Remarques

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

La fonction evtSerCxReceive ne lit pas nécessairement les données d’entrée de la mémoire tampon FIFO de réception. Selon le matériel du contrôleur série ou le type de transfert, cette fonction peut configurer une opération DMA pour lire les données, ou planifier une fonction DPC de transmission/réception pour lire les données. Le pilote du contrôleur série implémente cette fonction DPC pour recevoir des données du contrôleur et transmettre des données au contrôleur série. Pendant la DPC, la fonction DPC détermine si les données sont disponibles pour être reçues et, le cas échéant, utilise l’authentification personnelle pour lire les données du FIFO de réception dans le contrôleur série.

Si la fiFO de réception dans le contrôleur série est vide ou presque vide, mais que l’interruption de marque haute-eau du FIFO est activée, la routine DPC peut simplement retourner. Plus tard, l’ISR du pilote de contrôleur peut planifier l’exécution de la routine DPC, et cette routine peut lire plus de données à partir de la FIFO de réception.

Pour inscrire une fonction de rappel EvtSerCxReceive, 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_RECEIVE(
    __in WDFDEVICE Device
    );

Pour définir une fonction de rappel EvtSerCxReceive nommée MyEvtSerCxReceive, vous devez d’abord fournir une déclaration de fonction qui static Driver Verificationr (SDV) et d’autres outils de vérification nécessitent, comme suit.

EVT_SERCX_RECEIVE MyEvtSerCxReceive;

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

NTSTATUS
  MyEvtSerCxReceive(
    __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.

Exigences

Exigence Valeur
client minimum pris en charge Disponible à partir de Windows 8.
plateforme cible Bureau
d’en-tête sercx.h
IRQL Appelé au <IRQL = DISPATCH_LEVEL

Voir aussi

EvtDriverDeviceAdd

SerCxInitialize

WdfDpcEnqueue