Ler em inglês

Compartilhar via


IOCTL_SERIAL_PURGE IOCTL (ntddser.h)

A solicitação IOCTL_SERIAL_PURGE cancela as solicitações especificadas e exclui dados dos buffers especificados. A solicitação de limpeza pode ser usada para cancelar todas as solicitações de leitura e gravação e 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 são 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

    Limpará o buffer de recebimento, se existir.

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 um.

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 de Informações do será definido como o tamanho, em bytes, de um ULONG. Caso contrário, o membro de Informações do será definido como zero.

O membro status de é 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.

Observações

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

O SerCx2 requer 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 IOCTL_SERIAL_PURGE, a fila de solicitação de E/S do 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 IOCTL_SERIAL_PURGE falhará com um código de status STATUS_INVALID_DEVICE_STATE.

Da mesma forma, o SerCx2 requer que todas as solicitações de gravação sejam limpas se o buffer de transmissão for limpo. Portanto, se o sinalizador de SERIAL_PURGE_TXCLEAR estiver definido em uma solicitação 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 de SERIAL_PURGE_TXABORT deverá ser definido. Caso contrário, a solicitação IOCTL_SERIAL_PURGE falhará com um código de status STATUS_INVALID_DEVICE_STATE.

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)