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
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 |
Requisitos
Requisito | Valor |
---|---|
Cabeçalho | ntddser.h (inclua Ntddser.h) |