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 di scrittura 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 rimosse 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 è impostato sulle dimensioni, in byte, di un oggetto ULONG.

Buffer di output

Nessuno.

Lunghezza del buffer di output

Nessuno.

Blocco dello stato

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

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

Commenti

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 delle richieste di I/O SerCx2 non deve contenere richieste di lettura oppure è necessario impostare il flag di SERIAL_PURGE_RXABORT. 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 di SERIAL_PURGE_TXCLEAR è impostato in una richiesta di IOCTL_SERIAL_PURGE , la coda di richieste di I/O SerCx2 non deve contenere richieste di scrittura oppure è necessario impostare il flag di SERIAL_PURGE_TXABORT. 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.

Requisiti

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