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.
BOOLEAN KeInsertByKeyDeviceQueue(
[in, out] PKDEVICE_QUEUE DeviceQueue,
[in, out] PKDEVICE_QUEUE_ENTRY DeviceQueueEntry,
[in] ULONG SortKey
);
[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.
Se la coda del dispositivo è vuota, viene restituito false, ovvero il DeviceQueueEntry non viene inserito nella coda del dispositivo.
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.
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) |