Compartilhar via


IOCTL_SERIAL_PURGE IOCTL (ntddser.h)

A solicitação IOCTL_SERIAL_PURGE cancela as solicitações especificadas e exclui os dados dos buffers especificados. A solicitação de limpeza pode ser usada para cancelar todas as solicitações de leitura e gravação e para excluir todos os dados do buffer de recebimento e do buffer de transmissão.

A conclusão da solicitação de limpeza não indica que as solicitações canceladas pela solicitação de limpeza foram concluídas. Um cliente deve verificar se as solicitações limpas foram concluídas antes que o cliente libere ou reutilize os IRPs correspondentes.

Código principal

IRP_MJ_DEVICE_CONTROL

Buffer de entrada

O membro AssociatedIrp.SystemBuffer aponta para um ULONG alocado pelo cliente que é usado para inserir uma máscara de limpeza. O cliente define a máscara de limpeza como um OR bit a bit de um ou mais dos seguintes sinalizadores de limpeza:

SERIAL_PURGE_RXABORT

    Limpa todas as solicitações de leitura (IRP_MJ_READ).

SERIAL_PURGE_RXCLEAR

    Limpa o buffer de recebimento, se houver.

SERIAL_PURGE_TXABORT

    Limpa todas as solicitações de gravação (IRP_MJ_WRITE).

SERIAL_PURGE_TXCLEAR

    Limpa o buffer de transmissão, se houver.

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

Se a solicitação for bem-sucedida, o membro Informações será definido como o tamanho, em bytes, de um ULONG. Caso contrário, o membro Informações será 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 limpeza não é válida.

Comentários

Serial.sys e SerCx permitem que uma solicitação IOCTL_SERIAL_PURGE especifique qualquer combinação de um ou mais sinalizadores SERIAL_PURGE_XXX . No entanto, SerCx2 é mais restritivo.

O SerCx2 exige que todas as solicitações de leitura sejam limpas se o buffer de recebimento for limpo. Portanto, se o sinalizador de SERIAL_PURGE_RXCLEAR for definido em uma solicitação de IOCTL_SERIAL_PURGE , a fila de solicitação de E/S serCx2 não deverá conter nenhuma solicitação de leitura ou o sinalizador SERIAL_PURGE_RXABORT deverá ser definido. Caso contrário, a solicitação de IOCTL_SERIAL_PURGE falhará com um código STATUS_INVALID_DEVICE_STATE status.

Da mesma forma, o SerCx2 exige que todas as solicitações de gravação sejam limpas se o buffer de transmissão for limpo. Portanto, se o sinalizador SERIAL_PURGE_TXCLEAR for definido em uma solicitação de IOCTL_SERIAL_PURGE , a fila de solicitação de E/S serCx2 não deverá conter nenhuma solicitação de gravação ou o sinalizador SERIAL_PURGE_TXABORT deverá ser definido. Caso contrário, a solicitação de IOCTL_SERIAL_PURGE falhará com um código STATUS_INVALID_DEVICE_STATE status.

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)