Condividi tramite


IOCTL_SERIAL_PURGE IOCTL (ntddser.h)

La richiesta di IOCTL_SERIAL_PURGE annulla le richieste specificate ed elimina i dati dai buffer specificati. La richiesta di eliminazione può essere usata per annullare tutte le richieste di lettura e scrivere richieste e per eliminare tutti i dati dal buffer di ricezione e dal buffer di trasmissione.

Il completamento della richiesta di eliminazione non indica che le richieste annullate dalla richiesta di eliminazione vengono completate. Un client deve verificare che le richieste eliminate vengano completate prima che il client liberi o riutilizzi i provider di integrazione corrispondenti.

Codice principale

IRP_MJ_DEVICE_CONTROL

Buffer di input

Il membro associatedIrp.SystemBuffer punta a una ULONG allocata dal client usata per immettere una maschera di eliminazione . Il client imposta la maschera di eliminazione su un OR bit per bit di uno o più dei flag di eliminazione seguenti:

SERIAL_PURGE_RXABORT

    Elimina tutte le richieste di lettura (IRP_MJ_READ).

SERIAL_PURGE_RXCLEAR

    Elimina il buffer di ricezione, se presente.

SERIAL_PURGE_TXABORT

    Elimina tutte le richieste di scrittura (IRP_MJ_WRITE).

SERIAL_PURGE_TXCLEAR

    Elimina il buffer di trasmissione, se presente.

Lunghezza del buffer di input

Il membro Parameters.DeviceIoControl.InputBufferLength viene impostato sulle dimensioni, in byte, di un ULONG.

Buffer di output

Nessuno.

Lunghezza del buffer di output

Nessuno.

Blocco di stato

Se la richiesta ha esito positivo, il membro Information viene impostato sulle dimensioni, in byte, di una ULONG. In caso contrario, il membro Informazioni è impostato su zero.

Il membro stato è impostato su uno dei valori di stato generico per le richieste di controllo del dispositivo seriale. Uno stato di STATUS_INVALID_PARAMETER indica che la maschera di ripulitura non è valida.

Osservazioni

Serial.sys e SerCx consentono a una richiesta di IOCTL_SERIAL_PURGE di specificare qualsiasi combinazione di uno o più flag SERIAL_PURGE_XXX. Tuttavia, SerCx2 è più restrittivo.

SerCx2 richiede che tutte le richieste di lettura vengano eliminate se il buffer di ricezione viene eliminato. Pertanto, se il flag di SERIAL_PURGE_RXCLEAR è impostato in una richiesta di IOCTL_SERIAL_PURGE, la coda di richieste I/O SerCx2 non deve contenere richieste di lettura o il flag SERIAL_PURGE_RXABORT deve essere impostato. In caso contrario, la richiesta di IOCTL_SERIAL_PURGE ha esito negativo con un codice di stato STATUS_INVALID_DEVICE_STATE.

Analogamente, SerCx2 richiede che tutte le richieste di scrittura vengano eliminate se il buffer di trasmissione viene eliminato. Pertanto, se il flag SERIAL_PURGE_TXCLEAR è impostato in una richiesta di IOCTL_SERIAL_PURGE, la coda di richieste I/O SerCx2 non deve contenere richieste di scrittura o il flag SERIAL_PURGE_TXABORT deve essere impostato. In caso contrario, la richiesta di IOCTL_SERIAL_PURGE ha esito negativo con un codice di stato STATUS_INVALID_DEVICE_STATE.

Per altre informazioni su SerCx2, SerCx e Serial.sys, vedere panoramica dei driver del controller seriale .

Fabbisogno

Requisito Valore
intestazione ntddser.h (include Ntddser.h)