Funzione KeInsertByKeyDeviceQueue (wdm.h)

La routine KeInsertByKeyDeviceQueue acquisisce il blocco di selezione per il DeviceQueue specificato e accoda una voce in base al valore della chiave di ordinamento specificato se la coda del dispositivo è impostata su uno stato occupato.

Sintassi

C++
BOOLEAN KeInsertByKeyDeviceQueue(
  [in, out] PKDEVICE_QUEUE       DeviceQueue,
  [in, out] PKDEVICE_QUEUE_ENTRY DeviceQueueEntry,
  [in]      ULONG                SortKey
);

Parametri

[in, out] DeviceQueue

Puntatore a un oggetto controllo del tipo di coda del dispositivo per il quale il chiamante fornisce l'archiviazione.

[in, out] DeviceQueueEntry

Puntatore alla voce della coda del dispositivo da inserire nella coda del dispositivo in base al valore della chiave specifico.

[in] SortKey

Specifica il valore della chiave di ordinamento che determina la posizione nella coda del dispositivo in cui inserire la voce.

Valore restituito

Se la coda del dispositivo è vuota, viene restituito false, ovvero il DeviceQueueEntry non viene inserito nella coda del dispositivo.

Osservazioni

Il blocco di selezione della coda del dispositivo specificato viene acquisito e lo stato della coda del dispositivo viene controllato. Se la coda del dispositivo è impostata su uno stato occupato, l'IRP specificato dal DeviceQueueEntry viene inserito nella coda del dispositivo in base al valore della chiave di ordinamento e viene rilasciato il blocco spin della coda del dispositivo.

La nuova voce viene posizionata nella coda del dispositivo dopo tutte le voci nella coda con valori di chiave di ordinamento minori o uguali al valore della chiave di ordinamento e precede tutte le voci con valori di chiave di ordinamento maggiori.

Se KeInsertByKeyDeviceQueue restituisce FALSE, il chiamante deve iniziare a elaborare l'IRP. Una chiamata a KeInsertDeviceQueue o KeInsertByKeyDeviceQueue quando la coda è vuota fa sì che la coda del dispositivo passi da uno stato non occupato a uno stato occupato.

Questa routine riguarda il codice che accoda una richiesta di I/O a un driver di dispositivo.

Fabbisogno

Requisito Valore
client minimo supportato Disponibile a partire da Windows 2000.
piattaforma di destinazione Universale
intestazione wdm.h (include Wdm.h, Ntddk.h, Ntifs.h)
libreria NtosKrnl.lib
dll NtosKrnl.exe
IRQL DISPATCH_LEVEL
regole di conformità DDI HwStorPortProhibitedDDIs(storport), IrqlDispatch(storport), IrqlDispatch(storport), IrqlDispatch(wdm), MarkingQueuedIrps(wdm)

Vedere anche

KeInitializeDeviceQueue

KeInsertDeviceQueue

KeRemoveDeviceQueue

KeRemoveEntryDeviceQueue