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
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) |