Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
La routine IoInitializeRemoveLock initialise un verrou de suppression pour un objet d’appareil.
Syntaxe
void IoInitializeRemoveLock(
[in] Lock,
[in] Tag,
[in] Maxmin,
[in] HighWater
);
Paramètres
[in] Lock
Pointeur vers une structure IO_REMOVE_LOCK fournie par l’appelant que cette routine initialise avec des informations sur le verrou, y compris un compteur et un événement de synchronisation. Un enregistreur de pilotes doit allouer cette structure dans le cadre de l’extension d’appareil de l’objet de périphérique.
[in] Tag
Spécifie une balise pour identifier le créateur du verrou. Les enregistreurs de pilotes utilisent généralement une chaîne à 4 caractères, spécifiée dans l’ordre inverse, comme les balises utilisées pour ExAllocatePoolWithTag.
Le système d’E/S utilise ce paramètre si Driver Verifier est activé. L’appelant doit toujours fournir une valeur de balise différente de zéro pour ce paramètre.
[in] Maxmin
Spécifie le nombre maximal de minutes pendant lesquelles ce verrou doit être conservé. La valeur zéro signifie qu’il n’y a aucune limite. Cette valeur est généralement utilisée pendant le débogage pour identifier une routine de pilote qui contient le verrou plus longtemps que prévu.
Le système d’E/S utilise ce paramètre si le vérificateur de pilote est activé.
[in] HighWater
Spécifie le nombre maximal d’acquisitions en attente autorisées sur le verrou. Utilisez 0 pour spécifier aucun maximum. HighWatermark doit être <= 0x7FFFFFFF.
Le système d’E/S utilise ce paramètre si le vérificateur de pilote est activé.
Valeur de retour
Aucun
Remarques
Un pilote peut utiliser un verrou de suppression pour suivre les opérations d’E/S en attente sur un appareil et déterminer quand le pilote peut supprimer son objet d’appareil en réponse à une demande de IRP_MN_REMOVE_DEVICE.
Avant d’appeler IoInitializeRemoveLock, un pilote doit allouer une structure IO_REMOVE_LOCK dans sa extension d’appareil. Un pilote appelle généralement IoInitializeRemoveLock dans sa routine AddDevice, lorsque le pilote initialise le reste de l’extension de périphérique pour un objet d’appareil.
Une fois la routine IoReleaseRemoveLockAndWait retour, le pilote doit considérer que l’appareil est dans un état dans lequel il est prêt à être supprimé et ne peut pas effectuer d’opérations d’E/S. Par conséquent, le pilote ne doit pas appeler IoInitializeRemoveLock pour initialiser à nouveau le verrou de suppression. La violation de cette règle pendant que le pilote est vérifié par vérificateur de pilotes entraîne une vérification des bogues.
Étant donné que le pilote stocke la structure IO_REMOVE_LOCK dans l’extension de périphérique d’un objet d’appareil, le verrou de suppression est supprimé lorsque le pilote supprime l’extension de périphérique dans le cadre du traitement d’une demande de IRP_MN_REMOVE_DEVICE.
Pour plus d’informations, consultez Using Remove Locks.
Exigences
| Exigence | Valeur |
|---|---|
| client minimum pris en charge | Disponible à partir de Windows 2000. |
| plateforme cible | Bureau |
| d’en-tête | wdm.h (include Wdm.h, Ntddk.h, Ntifs.h) |
| bibliothèque | NtosKrnl.lib |
| DLL | NtosKrnl.exe |
| IRQL | PASSIVE_LEVEL |