Partager via


Interface de demande d’E/S série

Pour contrôler un périphérique connecté à un port sur un contrôleur série, une application cliente ou un pilote de périphérique envoie des demandes d’E/S au port. Un client utilise des requêtes IRP_MJ_WRITE et IRP_MJ_READ pour transmettre et recevoir des données à partir d’un port série. En outre, Windows définit un ensemble de demandes de contrôle d’E/S série (IOCTL) qu’un client peut utiliser pour configurer un port série.

Les requêtes série IRP_MJ_XXX et les IOCTL série forment ensemble une interface de demande d’E/S série qui est prise en charge sur une gamme de périphériques de contrôleur série. Cette interface est prise en charge par le pilote Serial.sys et par la combinaison de SerCx2 ou SerCx et d’un pilote de contrôleur série basé sur une extension.

SerCx2, SerCx et Serial.sys prennent en charge un grand nombre des mêmes IOCTL série. Toutefois, SerCx2, SerCx et Serial.sys prennent en charge différents sous-ensembles des IOCTL spécifiés dans les demandes de contrôle d’appareil série. Le tableau suivant récapitule les sous-ensembles d’IOCTL pris en charge par SerCx2, SerCx et Serial.sys. Une entrée Oui dans le tableau indique que l’extension ou le pilote d’infrastructure série prend en charge l’IOCTL correspondant, et une entrée Non indique que ce n’est pas le cas.

IOCTL série SerCx2 SerCx Serial.sys

IOCTL_SERIAL_APPLY_DEFAULT_CONFIGURATION

Oui

Oui

Non

IOCTL_SERIAL_CLEAR_STATS

Non

Oui

Oui

IOCTL_SERIAL_CLR_DTR

Consultez la remarque 1.

Oui

Oui

IOCTL_SERIAL_CLR_RTS

Oui

Oui

Oui

IOCTL_SERIAL_CONFIG_SIZE

Non

Non

Oui

IOCTL_SERIAL_GET_BAUD_RATE

Oui

Oui

Oui

IOCTL_SERIAL_GET_CHARS

Voir la note 2.

Oui

Oui

IOCTL_SERIAL_GET_COMMSTATUS

Oui

Oui

Oui

IOCTL_SERIAL_GET_DTRRTS

Oui

Oui

Oui

IOCTL_SERIAL_GET_HANDFLOW

Consultez la remarque 1.

Oui

Oui

IOCTL_SERIAL_GET_LINE_CONTROL

Oui

Oui

Oui

IOCTL_SERIAL_GET_MODEM_CONTROL (voir la note 4.)

Oui

Oui

Oui

IOCTL_SERIAL_GET_MODEMSTATUS

Non

Oui

Oui

IOCTL_SERIAL_GET_PROPERTIES

Oui

Oui

Oui

IOCTL_SERIAL_GET_STATS

Non

Oui

Oui

IOCTL_SERIAL_GET_TIMEOUTS

Oui

Oui

Oui

IOCTL_SERIAL_GET_WAIT_MASK

Oui

Oui

Oui

IOCTL_SERIAL_IMMEDIATE_CHAR

Non

Oui

Oui

IOCTL_SERIAL_LSRMST_INSERT

Non

Oui

Oui

IOCTL_SERIAL_PURGE

Oui

Oui

Oui

IOCTL_SERIAL_RESET_DEVICE (voir la note 5.)

Non

Non

Oui

IOCTL_SERIAL_SET_BAUD_RATE

Oui

Oui

Oui

IOCTL_SERIAL_SET_BREAK_OFF

Oui

Oui

Oui

IOCTL_SERIAL_SET_BREAK_ON

Oui

Oui

Oui

IOCTL_SERIAL_SET_CHARS

Voir la note 2.

Oui

Oui

IOCTL_SERIAL_SET_DTR

Consultez la remarque 1.

Oui

Oui

IOCTL_SERIAL_SET_FIFO_CONTROL

Consultez la remarque 1.

Oui

Oui

IOCTL_SERIAL_SET_HANDFLOW (voir la note 3.)

Oui

Oui

Oui

IOCTL_SERIAL_SET_LINE_CONTROL

Oui

Oui

Oui

IOCTL_SERIAL_SET_MODEM_CONTROL (voir la note 4.)

Oui

Oui

Oui

IOCTL_SERIAL_SET_QUEUE_SIZE

Oui

Oui

Oui

IOCTL_SERIAL_SET_RTS

Oui

Oui

Oui

IOCTL_SERIAL_SET_TIMEOUTS

Oui

Oui

Oui

IOCTL_SERIAL_SET_WAIT_MASK

Oui

Oui

Oui

IOCTL_SERIAL_SET_XOFF

Non

Oui

Oui

IOCTL_SERIAL_SET_XON

Non

Oui

Oui

IOCTL_SERIAL_WAIT_ON_MASK

Oui

Oui

Oui

IOCTL_SERIAL_XOFF_COUNTER

Non

Oui

Oui

**Notes**
  1. SerCx2 peut ou non prendre en charge ce IOCTL en fonction de l’implémentation du pilote de contrôleur série et des fonctionnalités du matériel du contrôleur série.

  2. SerCx2 ne prend pas en charge les caractères spéciaux. SerCx2 effectue toujours une requête IOCTL_SERIAL_SET_CHARS avec un code d’état STATUS_SUCCESS, mais ne définit aucun caractère spécial ni n’effectue aucune autre opération en réponse à cette demande. Pour une demande de IOCTL_SERIAL_GET_CHARS , SerCx2 définit toutes les valeurs de caractères de la structure SERIAL_CHARS sur null et termine la demande avec un code d’état STATUS_SUCCESS.

  3. SerCx2 et SerCx prennent uniquement en charge les sous-ensembles des indicateurs définis pour les membres FlowReplace et ControlHandShake de la structure SERIAL_HANDFLOW . Serial.sys prend en charge tous ces indicateurs. Pour plus d’informations, consultez SERIAL_HANDFLOW.

  4. Les requêtes IOCTL_SERIAL_GET_MODEM_CONTROL et IOCTL_SERIAL_SET_MODEM_CONTROL sont principalement utilisées pour les tests matériels. Aucune disposition de registre standard n’est définie pour les opérations de contrôle du modem. Les pilotes périphériques qui utilisent des IOCTL de contrôle de modem risquent de se rendre dépendants des fonctionnalités matérielles d’un contrôleur série particulier.

  5. Le pilote Serial.sys effectue toujours une demande de IOCTL_SERIAL_RESET_DEVICE avec STATUS_SUCCESS, mais n’effectue aucune opération en réponse à cette demande. SerCx2 et SerCx ne prennent pas en charge les requêtes IOCTL_SERIAL_RESET_DEVICE et effectuent toujours ces demandes avec STATUS_NOT_IMPLEMENTED.

Pour plus d’informations sur les requêtes IOCTL_SERIAL_XXX et les demandes de lecture et d’écriture pour les contrôleurs série, consultez l’en-tête ntddser.h .