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.
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.
O membro Parameters.DeviceIoControl.InputBufferLength é definido como o tamanho, em bytes, de um ULONG.
Nenhum.
Nenhum.
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.
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.
Requisito | Valor |
---|---|
cabeçalho | ntddser.h (inclua Ntddser.h) |