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