Macro IoAcquireRemoveLock (wdm.h)
La routine IoAcquireRemoveLock incrémente le nombre d’un verrou de suppression, indiquant que l’objet d’appareil associé ne doit pas être détaché de la pile de l’appareil ou supprimé.
Syntaxe
NTSTATUS
IoAcquireRemoveLock (
_Inout_ PIO_REMOVE_LOCK RemoveLock,
_In_opt_ PVOID Tag
);
Paramètres
[in] RemoveLock
Pointeur vers une structure IO_REMOVE_LOCK que l’appelant a initialisée avec un appel précédent à IoInitializeRemoveLock.
[in, optional] Tag
Pointe éventuellement vers une balise fournie par l’appelant qui identifie cette instance d’acquisition du verrou de suppression. Par exemple, une routine dispatch du pilote définit généralement ce paramètre sur un pointeur vers l’IRP que la routine traite.
Si un pilote spécifie une balise lors d’un appel à IoAcquireRemoveLock, le pilote doit fournir la même balise dans l’appel correspondant à IoReleaseRemoveLock.
La balise n’a pas besoin d’être unique, mais doit être significative pendant le débogage.
Valeur de retour
None
Remarques
La macro IoAcquireRemoveLock encapsule et suppose la valeur de retour de IoAcquireRemoveLockEx, qui retourne NTSTATUS :
Valeur retournée | Description |
---|---|
STATUS_SUCCESS | Indique que l’appel a réussi. |
STATUS_DELETE_PENDING | Valeur d’erreur indiquant que le pilote a reçu une IRP_MN_REMOVE_DEVICE pour l’appareil et a appelé IoReleaseRemoveLockandWait. Cette routine attend que tous les verrous de suppression s’effacent avant de retourner le contrôle au pilote. |
Si la routine retourne une valeur en plus de STATUS_SUCCESS, ne démarrez pas de nouvelles opérations sur l’appareil.
Un pilote doit initialiser un verrou de suppression avec un appel à IoInitializeRemoveLock avant d’utiliser le verrou.
Un pilote doit appeler IoReleaseRemoveLock pour libérer le verrou lorsqu’il n’est plus nécessaire.
Pour plus d’informations, consultez Utilisation de supprimer des verrous.