Compartilhar via


Interface de solicitação de E/S serial

Para controlar um dispositivo periférico conectado a uma porta em um controlador serial, um aplicativo cliente ou driver de dispositivo periférico envia solicitações de E/S para a porta. Um cliente usa solicitações IRP_MJ_WRITE e IRP_MJ_READ para transmitir dados e receber dados de uma porta serial. Além disso, o Windows define um conjunto de IOCTLs (solicitações de controle de E/S serial) que um cliente pode usar para configurar uma porta serial.

As solicitações serial IRP_MJ_XXX e IOCTLs serial juntas formam uma interface de solicitação de E/S serial com suporte em uma variedade de dispositivos de controlador serial. Essa interface é compatível com o driver Serial.sys e pela combinação de SerCx2 ou SerCx e um driver de controlador serial baseado em extensão.

SerCx2, SerCx e Serial.sys dão suporte a muitas das mesmas IOCTLs seriais. No entanto, SerCx2, SerCx e Serial.sys dão suporte a diferentes subconjuntos das IOCTLs especificadas em Solicitações de Controle de Dispositivo Serial. A tabela a seguir resume os subconjuntos de IOCTLs compatíveis com SerCx2, SerCx e Serial.sys. Uma entrada Sim na tabela indica que a extensão ou driver da estrutura serial dá suporte ao IOCTL correspondente e uma entrada Não indica que não.

Serial IOCTL SerCx2 SerCx Serial.sys

IOCTL_SERIAL_APPLY_DEFAULT_CONFIGURATION

Sim

Sim

Não

IOCTL_SERIAL_CLEAR_STATS

Não

Sim

Sim

IOCTL_SERIAL_CLR_DTR

Consulte a observação 1.

Sim

Sim

IOCTL_SERIAL_CLR_RTS

Sim

Sim

Sim

IOCTL_SERIAL_CONFIG_SIZE

Não

Não

Sim

IOCTL_SERIAL_GET_BAUD_RATE

Sim

Sim

Sim

IOCTL_SERIAL_GET_CHARS

Consulte a observação 2.

Sim

Sim

IOCTL_SERIAL_GET_COMMSTATUS

Sim

Sim

Sim

IOCTL_SERIAL_GET_DTRRTS

Sim

Sim

Sim

IOCTL_SERIAL_GET_HANDFLOW

Consulte a observação 1.

Sim

Sim

IOCTL_SERIAL_GET_LINE_CONTROL

Sim

Sim

Sim

IOCTL_SERIAL_GET_MODEM_CONTROL (consulte a observação 4.)

Sim

Sim

Sim

IOCTL_SERIAL_GET_MODEMSTATUS

Não

Sim

Sim

IOCTL_SERIAL_GET_PROPERTIES

Sim

Sim

Sim

IOCTL_SERIAL_GET_STATS

Não

Sim

Sim

IOCTL_SERIAL_GET_TIMEOUTS

Sim

Sim

Sim

IOCTL_SERIAL_GET_WAIT_MASK

Sim

Sim

Sim

IOCTL_SERIAL_IMMEDIATE_CHAR

Não

Sim

Sim

IOCTL_SERIAL_LSRMST_INSERT

Não

Sim

Sim

IOCTL_SERIAL_PURGE

Sim

Sim

Sim

IOCTL_SERIAL_RESET_DEVICE (consulte a observação 5.)

Não

Não

Sim

IOCTL_SERIAL_SET_BAUD_RATE

Sim

Sim

Sim

IOCTL_SERIAL_SET_BREAK_OFF

Sim

Sim

Sim

IOCTL_SERIAL_SET_BREAK_ON

Sim

Sim

Sim

IOCTL_SERIAL_SET_CHARS

Consulte a observação 2.

Sim

Sim

IOCTL_SERIAL_SET_DTR

Consulte a observação 1.

Sim

Sim

IOCTL_SERIAL_SET_FIFO_CONTROL

Consulte a observação 1.

Sim

Sim

IOCTL_SERIAL_SET_HANDFLOW (Consulte a nota 3.)

Sim

Sim

Sim

IOCTL_SERIAL_SET_LINE_CONTROL

Sim

Sim

Sim

IOCTL_SERIAL_SET_MODEM_CONTROL (Consulte a nota 4.)

Sim

Sim

Sim

IOCTL_SERIAL_SET_QUEUE_SIZE

Sim

Sim

Sim

IOCTL_SERIAL_SET_RTS

Sim

Sim

Sim

IOCTL_SERIAL_SET_TIMEOUTS

Sim

Sim

Sim

IOCTL_SERIAL_SET_WAIT_MASK

Sim

Sim

Sim

IOCTL_SERIAL_SET_XOFF

Não

Sim

Sim

IOCTL_SERIAL_SET_XON

Não

Sim

Sim

IOCTL_SERIAL_WAIT_ON_MASK

Sim

Sim

Sim

IOCTL_SERIAL_XOFF_COUNTER

Não

Sim

Sim

**Notas**
  1. O SerCx2 pode ou não dar suporte a esse IOCTL dependendo da implementação do driver do controlador serial e dos recursos do hardware do controlador serial.

  2. O SerCx2 não dá suporte a caracteres especiais. O SerCx2 sempre conclui uma solicitação de IOCTL_SERIAL_SET_CHARS com um código de status STATUS_SUCCESS, mas não define nenhum caractere especial ou executa qualquer outra operação em resposta a essa solicitação. Para uma solicitação de IOCTL_SERIAL_GET_CHARS , SerCx2 define todos os valores de caractere na estrutura SERIAL_CHARS como nulos e conclui a solicitação com um código de status STATUS_SUCCESS.

  3. O SerCx2 e o SerCx dão suporte apenas aos subconjuntos dos sinalizadores definidos para os membros FlowReplace e ControlHandShake da estrutura SERIAL_HANDFLOW . Serial.sys dá suporte a todos esses sinalizadores. Para obter mais informações, consulte SERIAL_HANDFLOW.

  4. As solicitações de IOCTL_SERIAL_GET_MODEM_CONTROL e IOCTL_SERIAL_SET_MODEM_CONTROL são usadas principalmente para teste de hardware. Nenhum layout de registro padrão é definido para as operações de controle de modem. Os drivers periféricos que usam o controle modem IOCTLs correm o risco de se tornar dependentes dos recursos de hardware de um controlador serial específico.

  5. O driver Serial.sys sempre conclui uma solicitação de IOCTL_SERIAL_RESET_DEVICE com STATUS_SUCCESS, mas não executa nenhuma operação em resposta a essa solicitação. O SerCx2 e o SerCx não dão suporte a solicitações de IOCTL_SERIAL_RESET_DEVICE e sempre concluem essas solicitações com STATUS_NOT_IMPLEMENTED.

Para obter mais informações sobre solicitações IOCTL_SERIAL_XXX e solicitações de leitura e gravação para controladores serial, consulte o cabeçalho ntddser.h .