EVT_SERCX_CONTROL fonction de rappel (sercx.h)
La fonction de rappel d’événements EvtSerCxControl gère une demande de contrôle d’E/S qui a un code de contrôle d’E/S (IOCTL) pris en charge par l’extension de framework série (SerCx).
Syntaxe
EVT_SERCX_CONTROL EvtSercxControl;
NTSTATUS EvtSercxControl(
[in] WDFDEVICE Device,
[in] WDFREQUEST Request,
[in] size_t OutputBufferLength,
[in] size_t InputBufferLength,
[in] ULONG IoControlCode
)
{...}
Paramètres
[in] Device
Handle WDFDEVICE pour l’objet d’appareil framework qui représente le contrôleur série.
[in] Request
Handle WDFREQUEST pour l’objet de requête de framework qui représente la demande de contrôle d’E/S.
[in] OutputBufferLength
Spécifie la longueur, en octets, de la mémoire tampon de sortie pour la demande de contrôle d’E/S spécifiée par le paramètre de requête.
[in] InputBufferLength
Spécifie la longueur, en octets, de la mémoire tampon d’entrée pour la demande de contrôle d’E/S spécifiée par le paramètre demande de
[in] IoControlCode
Spécifie la durée de vie du CIO à partir de la demande de contrôle d’E/S spécifiée par le paramètre Requête.
Valeur de retour
La fonction EvtSerCxControl retourne STATUS_SUCCESS si l’appel réussit. Sinon, elle retourne un code d’état d’erreur approprié. Pour plus d’informations, consultez la section Remarques suivante.
Remarques
Le pilote du contrôleur série est requis pour implémenter cette fonction de rappel. SerCx appelle cette fonction pour transmettre une demande de contrôle d’E/S au pilote du contrôleur pour traitement. Avant de retourner cette fonction, elle doit effectuer la requête en effectuant l’opération demandée ou en retournant un état d’erreur. Un pilote qui n’implémente pas la prise en charge d’une demande particulière doit retourner l’état d’erreur STATUS_NOT_IMPLEMENTED pour cette demande.
En règle générale, la fonction EvtSerCxControl doit être synchronisée avec l’ISR du pilote du contrôleur avant que cette fonction change les paramètres dans les registres matériels du contrôleur série.
La valeur de retour de la fonction EvtSerCxControl doit correspondre à la valeur d’état que cette fonction écrit dans le bloc d’état de la demande de contrôle d’E/S. SerCx utilise la valeur de retour pour suivre l’état du pilote du contrôleur et du matériel du contrôleur série.
Voici une liste des IOCTL que cette fonction de rappel doit être prête à gérer :
IOCTL_SERIAL_CLEAR_STATSIOCTL_SERIAL_CLR_DTRIOCTL_SERIAL_CLR_RTSIOCTL_SERIAL_GET_BAUD_RATEIOCTL_SERIAL_GET_CHARSIOCTL_SERIAL_GET_COMMSTATUSIOCTL_SERIAL_GET_DTRRTSIOCTL_SERIAL_GET_HANDFLOWIOCTL_SERIAL_IMMEDIATE_CHARIOCTL_SERIAL_GET_LINE_CONTROLIOCTL_SERIAL_GET_MODEM_CONTROLIOCTL_SERIAL_GET_MODEMSTATUSIOCTL_SERIAL_GET_PROPERTIESIOCTL_SERIAL_GET_STATSIOCTL_SERIAL_LSRMST_INSERTIOCTL_SERIAL_SET_BAUD_RATEIOCTL_SERIAL_SET_BREAK_OFFIOCTL_SERIAL_SET_BREAK_ONIOCTL_SERIAL_SET_CHARSIOCTL_SERIAL_SET_DTRIOCTL_SERIAL_SET_FIFO_CONTROLIOCTL_SERIAL_SET_HANDFLOWIOCTL_SERIAL_SET_LINE_CONTROLIOCTL_SERIAL_SET_ MODEM_CONTROLIOCTL_SERIAL_SET_RTSIOCTL_SERIAL_SET_XOFFIOCTL_SERIAL_SET_XONIOCTL_SERIAL_XOFF_COUNTER Pour inscrire une fonction de rappel EvtSerCxControl, 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_CONTROL(
__in WDFREQUEST Request,
__in size_t OutputBufferLength,
__in size_t InputBufferLength,
__in ULONG IoControlCode
);
Pour définir une fonction de rappel EvtSerCxControl nommée MyEvtSerCxControl
, 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_CONTROL MyEvtSerCxControl;
Ensuite, implémentez votre fonction de rappel comme suit.
NTSTATUS
MyEvtSerCxControl(
__in WDFREQUEST Request,
__in size_t OutputBufferLength,
__in size_t InputBufferLength,
__in ULONG IoControlCode
)
{ ... }
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 |