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