Condividi tramite


IOCTL_SERIAL_WAIT_ON_MASK IOCTL (ntddser.h)

La richiesta di IOCTL_SERIAL_WAIT_ON_MASK viene usata per attendere l'occorrenza di qualsiasi evento di attesa specificato utilizzando una richiesta di IOCTL_SERIAL_SET_WAIT_MASK .

Una richiesta wait-on-mask viene completata dopo uno degli eventi seguenti:

  • Si verifica un evento di attesa specificato dalla richiesta set-wait-mask più recente.
  • Viene ricevuta una richiesta di IOCTL_SERIAL_SET_WAIT_MASK mentre una richiesta wait-on-mask è in sospeso. Il driver completa la richiesta wait-on-mask in sospeso con lo stato STATUS_SUCCESS e la maschera di attesa di output è impostata su zero.
Un client può attendere gli eventi di attesa rappresentati dai bit di flag SERIAL_EV_RXCHAR tramite SERIAL_EV_EVENT2. Per altre informazioni su questi flag di evento, vedere SERIAL_EV_XXX.

Un client invia una richiesta di IOCTL_SERIAL_WAIT_ON_MASK per attendere l'occorrenza di un evento specificato nella maschera di attesa fornita dalla richiesta di IOCTL_SERIAL_SET_WAIT_MASK più recente. Se uno o più eventi nella maschera di attesa corrente si verificano prima dell'invio della richiesta di IOCTL_SERIAL_WAIT_ON_MASK , la richiesta viene immediatamente completata con lo stato STATUS_SUCCESS e un valore della maschera di output che identifica gli eventi. Se non si verifica alcun evento nella maschera di attesa prima dell'invio della richiesta di IOCTL_SERIAL_WAIT_ON_MASK , questa richiesta viene contrassegnata come in sospeso e attende nella coda del controller seriale l'occorrenza successiva di un evento nella maschera di attesa corrente.

Dopo il completamento della richiesta di IOCTL_SERIAL_WAIT_ON_MASK di un client con stato STATUS_SUCCESS e un valore della maschera di output diverso da zero, il client può inviare una nuova richiesta di IOCTL_SERIAL_WAIT_ON_MASK per attendere un altro evento nella maschera di attesa corrente. Solo un nuovo evento che si verifica dopo il completamento della richiesta di IOCTL_SERIAL_WAIT_ON_MASK precedente causerà il completamento della nuova richiesta di IOCTL_SERIAL_WAIT_ON_MASK con lo stato STATUS_SUCCESS e un valore della maschera di output diverso da zero.

Codice principale

IRP_MJ_DEVICE_CONTROL

Buffer di input

Nessuno.

Lunghezza del buffer di input

Nessuno.

Buffer di output

AssociatedIrp.System buffer punta a un buffer ULONG che contiene una maschera di attesa degli eventi. La maschera di attesa dell'evento indica gli eventi di attesa che si sono verificati. La maschera di attesa dell'evento è impostata su zero o sull'OR bit per bit di uno o più bit del flag di SERIAL_EV_XXX .

Lunghezza del buffer di output

Il membro Parameters.DeviceIoControl.OutputBufferLength è impostato sulle dimensioni, in byte, di un oggetto ULONG.

Blocco dello stato

Il membro Information è impostato sulle dimensioni, in byte, di un ULONG.

Il membro Status è impostato su uno dei valori di stato generici per le richieste di controllo del dispositivo seriale. Lo stato di STATUS_INVALID_PARAMETER indica che non vengono impostati eventi di attesa o che una richiesta wait-on-mask è già in sospeso.

Requisiti

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

Vedi anche

IOCTL_SERIAL_SET_WAIT_MASK

SERIAL_EV_XXX