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) |