EVT_SERCX_RECEIVE fonction de rappel (sercx.h)
La fonction de rappel d’événement EvtSerCxReceive prépare l’appareil de contrôleur série (UART) à 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
Un handle WDFDEVICE pour l’objet d’appareil framework qui représente le contrôleur série.
[in] Length
Nombre d’octets à recevoir. 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 EvtSerCxReceive retourne STATUS_SUCCESS si l’appel réussit. Sinon, elle retourne une erreur appropriée status code.
Remarques
L’extension d’infrastructure 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, si c’est le cas, utilise l’instruction PIO pour lire les données du fiFO de réception dans le contrôleur série.
Si la réception fiFO dans le contrôleur série est vide ou presque vide, mais que l’interruption de limite élevée du FIFO est activée, la routine DPC peut simplement revenir. 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 du FIFO de réception.
Pour inscrire une fonction de rappel EvtSerCxReceive , le pilote de contrôleur appelle la méthode SerCxInitialize pendant le rappel EvtDriverDeviceAdd .
Exemples
Le type de fonction pour 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 requise par static driver verifier (SDV) et d’autres outils de vérification, 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.
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 |