Partager via


Fonction KeInsertByKeyDeviceQueue (wdm.h)

La routine KeInsertByKeyDeviceQueue acquiert le verrou de rotation pour le DeviceQueue spécifié et met en file d’attente une entrée en fonction de la valeur de la clé de tri spécifiée si la file d’attente de l’appareil est définie sur un état occupé.

Syntaxe

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

Paramètres

[in, out] DeviceQueue

Pointeur vers un objet de contrôle du type de file d’attente d’appareil pour lequel l’appelant fournit le stockage.

[in, out] DeviceQueueEntry

Pointeur vers l’entrée de file d’attente d’appareil à insérer dans la file d’attente de l’appareil en fonction de la valeur de clé spécifique.

[in] SortKey

Spécifie la valeur de clé de tri qui détermine la position dans la file d’attente de l’appareil dans laquelle insérer l’entrée.

Valeur retournée

Si la file d’attente de l’appareil est vide, FALSE est retourné, ce qui signifie que deviceQueueEntry n’est pas inséré dans la file d’attente de l’appareil.

Remarques

Le verrou de rotation de file d’attente d’appareil spécifié est acquis et l’état de la file d’attente de l’appareil est vérifié. Si la file d’attente de l’appareil est définie sur un état occupé, l’IRP spécifié par DeviceQueueEntry est inséré dans la file d’attente de l’appareil en fonction de sa valeur de clé de tri et le verrou de rotation de file d’attente de l’appareil est libéré.

La nouvelle entrée est positionnée dans la file d’attente de l’appareil après toutes les entrées de la file d’attente avec des valeurs de clé de tri inférieures ou égales à sa valeur de clé de tri et précédant toutes les entrées avec des valeurs de clé de tri supérieures.

Si KeInsertByKeyDeviceQueue retourne FALSE, l’appelant doit commencer à traiter l’IRP. Un appel à KeInsertDeviceQueue ou KeInsertByKeyDeviceQueue lorsque la file d’attente est vide entraîne la transition de la file d’attente de l’appareil d’un état non occupé à un état occupé.

Cette routine concerne le code qui met en file d’attente une demande d’E/S vers un pilote de périphérique.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Disponible à partir de Windows 2000.
Plateforme cible Universal
En-tête wdm.h (inclure Wdm.h, Ntddk.h, Ntifs.h)
Bibliothèque NtosKrnl.lib
DLL NtosKrnl.exe
IRQL DISPATCH_LEVEL
Règles de conformité DDI HwStorPortProhibitedDDIs(storport),IrqlDispatch(storport),IrqlDispatch(storport), IrqlDispatch(wdm), MarkingQueuedIrps(wdm)

Voir aussi

KeInitializeDeviceQueue

KeInsertDeviceQueue

KeRemoveDeviceQueue

KeRemoveEntryDeviceQueue