Compartilhar via


IOCTL_SERIAL_SET_WAIT_MASK IOCTL (ntddser.h)

A solicitação IOCTL_SERIAL_SET_WAIT_MASK configura o driver do controlador serial para notificar um cliente após a ocorrência de qualquer um de um conjunto especificado de eventos de espera.

Um cliente pode aguardar os eventos de espera representados por bits de sinalizador SERIAL_EV_RXCHAR por meio de SERIAL_EV_EVENT2. Para obter mais informações sobre esses sinalizadores de eventos, consulte a seção Comentários.

Um cliente especifica eventos de espera definindo uma máscara de espera de evento de entrada para o OR bit a bit de um ou mais dos sinalizadores de evento. Um cliente pode limpar todos os eventos de espera definindo a máscara de espera de evento de entrada como zero.

Um cliente usa uma solicitação IOCTL_SERIAL_WAIT_ON_MASK para aguardar a ocorrência de um evento de espera. Se uma solicitação wait-on-mask já estiver pendente quando uma solicitação set-wait-mask for processada, a solicitação pendente de espera no evento será concluída com um status de STATUS_SUCCESS e a máscara de evento de espera de saída será definida como zero.

Código principal

IRP_MJ_DEVICE_CONTROL

Buffer de entrada

O membro AssociatedIrp.SystemBuffer aponta para um buffer ULONG que o cliente aloca e define como uma máscara de espera de evento. A máscara de espera é definida como zero ou como OR bit a bit de um ou mais bits de sinalizadores SERIAL_EV_XXX .

Comprimento do buffer de entrada

O membro Parameters.DeviceIoControl.InputBufferLength é definido como o tamanho, em bytes, de um ULONG.

Buffer de saída

Nenhum.

Comprimento do buffer de saída

Nenhum.

Bloco de status

O membro Informações está definido como zero.

O membro Status é definido como um dos Valores de Status Genérico para Solicitações de Controle de Dispositivo Serial. Um status de STATUS_INVALID_PARAMETER indica que a máscara de espera de entrada não é válida.

Comentários

As constantes SERIAL_EV_XXX definem os bits de sinalizador na máscara de espera para uma porta serial.

#define SERIAL_EV_RXCHAR     0x0001
#define SERIAL_EV_RXFLAG     0x0002
#define SERIAL_EV_TXEMPTY    0x0004
#define SERIAL_EV_CTS        0x0008
#define SERIAL_EV_DSR        0x0010
#define SERIAL_EV_RLSD       0x0020
#define SERIAL_EV_BREAK      0x0040
#define SERIAL_EV_ERR        0x0080
#define SERIAL_EV_RING       0x0100
#define SERIAL_EV_PERR       0x0200
#define SERIAL_EV_RX80FULL   0x0400
#define SERIAL_EV_EVENT1     0x0800
#define SERIAL_EV_EVENT2     0x1000

As constantes SERIAL_EV_XXX definem os tipos de eventos que podem ser especificados em uma máscara de espera. Depois que um cliente (aplicativo ou driver periférico) abre uma conexão com uma porta serial, o cliente pode especificar uma máscara de espera que indica os tipos de eventos que o cliente precisa monitorar. Esses eventos são alterações no estado de hardware da porta serial. Quando ocorre um evento na máscara de espera, o cliente é notificado.

As solicitações de controle IOCTL_SERIAL_SET_WAIT_MASK e IOCTL_SERIAL_GET_WAIT_MASK usam máscaras de espera de eventos para especificar um conjunto de eventos nos quais um cliente pode aguardar. Um valor de máscara de espera é zero ou o OR bit a bit de uma ou mais constantes SERIAL_EV_XXX . Um valor de máscara de espera igual a zero indica que o cliente não está aguardando eventos.

O cliente envia uma solicitação de controle IOCTL_SERIAL_WAIT_ON_MASK para aguardar um evento na máscara de espera definida no momento. O driver do controlador serial conclui essa solicitação quando ocorre um evento na máscara de espera.

A tabela a seguir mostra quais bits de sinalizador SERIAL_EV_XXX são 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 bit de sinalizador correspondente. Uma entrada No indica que não há suporte para o bit de sinalizador.

Bit de sinalizador SerCx2 SerCx Serial.sys
SERIAL_EV_RXCHAR Yes Yes Yes
SERIAL_EV_RXFLAG Veja a observação. No Yes
SERIAL_EV_TXEMPTY Yes Yes Yes
SERIAL_EV_CTS Yes Yes Yes
SERIAL_EV_DSR Yes Yes Yes
SERIAL_EV_RLSD Veja a observação. Yes Yes
SERIAL_EV_BREAK Yes Yes Yes
SERIAL_EV_ERR Yes Yes Yes
SERIAL_EV_RING Veja a observação. Yes Yes
SERIAL_EV_PERR Veja a observação. No No
SERIAL_EV_RX80FULL Veja a observação. No Yes
SERIAL_EV_EVENT1 Veja a observação. No No
SERIAL_EV_EVENT2 Veja a observação. No No
 
Nota O SerCx2 pode ou não dar suporte ao bit de sinalizador na entrada de tabela indicada, dependendo do driver do controlador serial e dos recursos do hardware do controlador serial.
 
Para obter mais informações sobre SerCx2, SerCx e Serial.sys, consulte Visão geral dos drivers do controlador serial.

Requisitos

Requisito Valor
Cabeçalho ntddser.h (inclua Ntddser.h)

Confira também

IOCTL_SERIAL_GET_CHARS

IOCTL_SERIAL_GET_WAIT_MASK

IOCTL_SERIAL_SET_CHARS

IOCTL_SERIAL_WAIT_ON_MASK

SERIAL_CHARS

SERIAL_STATUS