Condividi tramite


Interfaccia di richiesta di I/O seriale

Per controllare un dispositivo periferico connesso a una porta su un controller seriale, un'applicazione client o un driver di dispositivo periferico invia richieste di I/O alla porta. Un client usa IRP_MJ_WRITE e IRP_MJ_READ richieste per trasmettere e ricevere dati da una porta seriale. Windows definisce inoltre un set di richieste di controllo I/O seriali (IOCTL) che un client può usare per configurare una porta seriale.

Le richieste seriali IRP_MJ_XXX e IOCTL seriali formano un'interfaccia di richiesta di I/O seriale supportata in un intervallo di dispositivi controller seriali. Questa interfaccia è supportata dal driver Serial.sys e dalla combinazione di SerCx2 o SerCx e un driver di controller seriale basato su estensione.

SerCx2, SerCx e Serial.sys supportano molti degli stessi IOCTL seriali. SerCx2, SerCx e Serial.sys supportano tuttavia subset diversi dei valori IOCTL specificati nelle richieste di controllo dei dispositivi seriali. La tabella seguente riepiloga i subset di IOCTLs supportati da SerCx2, SerCx e Serial.sys. Una voce nella tabella indica che l'estensione o il driver del framework seriale supporta l'IOCTL corrispondente e una voce No indica che non lo è.

IOCTL seriale SerCx2 SerCx Serial.sys

IOCTL_SERIAL_APPLY_DEFAULT_CONFIGURATION

No

IOCTL_SERIAL_CLEAR_STATS

No

IOCTL_SERIAL_CLR_DTR

Vedere la nota 1.

IOCTL_SERIAL_CLR_RTS

IOCTL_SERIAL_CONFIG_SIZE

No

No

IOCTL_SERIAL_GET_BAUD_RATE

IOCTL_SERIAL_GET_CHARS

Vedere la nota 2.

IOCTL_SERIAL_GET_COMMSTATUS

IOCTL_SERIAL_GET_DTRRTS

IOCTL_SERIAL_GET_HANDFLOW

Vedere la nota 1.

IOCTL_SERIAL_GET_LINE_CONTROL

IOCTL_SERIAL_GET_MODEM_CONTROL (vedere la nota 4.)

IOCTL_SERIAL_GET_MODEMSTATUS

No

IOCTL_SERIAL_GET_PROPERTIES

IOCTL_SERIAL_GET_STATS

No

IOCTL_SERIAL_GET_TIMEOUTS

IOCTL_SERIAL_GET_WAIT_MASK

IOCTL_SERIAL_IMMEDIATE_CHAR

No

IOCTL_SERIAL_LSRMST_INSERT

No

IOCTL_SERIAL_PURGE

IOCTL_SERIAL_RESET_DEVICE (vedere la nota 5).

No

No

IOCTL_SERIAL_SET_BAUD_RATE

IOCTL_SERIAL_SET_BREAK_OFF

IOCTL_SERIAL_SET_BREAK_ON

IOCTL_SERIAL_SET_CHARS

Vedere la nota 2.

IOCTL_SERIAL_SET_DTR

Vedere la nota 1.

IOCTL_SERIAL_SET_FIFO_CONTROL

Vedere la nota 1.

IOCTL_SERIAL_SET_HANDFLOW (vedere la nota 3.)

IOCTL_SERIAL_SET_LINE_CONTROL

IOCTL_SERIAL_SET_MODEM_CONTROL (vedere la nota 4.)

IOCTL_SERIAL_SET_QUEUE_SIZE

IOCTL_SERIAL_SET_RTS

IOCTL_SERIAL_SET_TIMEOUTS

IOCTL_SERIAL_SET_WAIT_MASK

IOCTL_SERIAL_SET_XOFF

No

IOCTL_SERIAL_SET_XON

No

IOCTL_SERIAL_WAIT_ON_MASK

IOCTL_SERIAL_XOFF_COUNTER

No

**Note**
  1. SerCx2 può o non supportare questo IOCTL a seconda dell'implementazione del driver del controller seriale e delle funzionalità dell'hardware del controller seriale.

  2. SerCx2 non supporta caratteri speciali. SerCx2 completa sempre una richiesta di IOCTL_SERIAL_SET_CHARS con un codice di stato STATUS_SUCCESS, ma non imposta alcun carattere speciale o esegue qualsiasi altra operazione in risposta a questa richiesta. Per una richiesta di IOCTL_SERIAL_GET_CHARS , SerCx2 imposta tutti i valori di carattere nella struttura SERIAL_CHARS su Null e completa la richiesta con un codice di stato STATUS_SUCCESS.

  3. SerCx2 e SerCx supportano solo subset dei flag definiti per i membri FlowReplace e ControlHandShake della struttura SERIAL_HANDFLOW . Serial.sys supporta tutti questi flag. Per altre informazioni, vedere SERIAL_HANDFLOW.

  4. Le richieste di IOCTL_SERIAL_GET_MODEM_CONTROL e IOCTL_SERIAL_SET_MODEM_CONTROL vengono usate principalmente per i test hardware. Non è definito alcun layout di registro standard per le operazioni di controllo modem. I driver periferici che usano IOCTLs del controllo modem rischiano di dipendere dalle funzionalità hardware di un determinato controller seriale.

  5. Il driver Serial.sys completa sempre una richiesta di IOCTL_SERIAL_RESET_DEVICE con STATUS_SUCCESS , ma non esegue alcuna operazione in risposta a questa richiesta. SerCx2 e SerCx non supportano richieste di IOCTL_SERIAL_RESET_DEVICE e completano sempre queste richieste con STATUS_NOT_IMPLEMENTED.

Per altre informazioni sulle richieste IOCTL_SERIAL_XXX e sulle richieste di lettura e scrittura per i controller seriali, vedere l'intestazione ntddser.h .