Condividi tramite


Funzione KeInsertByKeyDeviceQueue (wdm.h)

La routine KeInsertByKeyDeviceQueue acquisisce il blocco di selezione per l'oggetto 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

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 la risorsa di archiviazione.

[in, out] DeviceQueueEntry

Puntatore alla voce della coda del dispositivo da inserire nella coda del dispositivo in base al valore di 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 DeviceQueueEntry non viene inserito nella coda del dispositivo.

Commenti

Il blocco spin 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 da 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 della 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 è per il codice che accoda una richiesta di I/O a un driver di dispositivo.

Requisiti

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 HwStorPortProhibitedDDDIs(storport), IrqlDispatch(storport), IrqlDispatch(storport), IrqlDispatch(wdm), MarkingQueuedIrps(wdm)

Vedi anche

KeInitializeDeviceQueue

KeInsertDeviceQueue

KeRemoveDeviceQueue

KeRemoveEntryDeviceQueue