Partager via


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.

Configuration requise

Condition requise Valeur
Plateforme cible Desktop (Expérience utilisateur)
En-tête wdm.h (include Wdm.h, Ntddk.h, Ntifs.h)
Bibliothèque NtosKrnl.lib
DLL NtosKrnl.exe
IRQL <= DISPATCH_LEVEL
Règles de conformité DDI CompleteRequestStatusCheck(wdm), MarkDevicePower(wdm), MarkPower(wdm), MarkPowerDown(wdm), MarkQueryRelations(wdm), MarkStartDevice(wdm), MultRemoveLock(wdm), NsRemoveLockMnRemove(wdm), NsRemoveLockMnSurpriseRemove(wdm), NsRemoveLockQueryMnRemove(wdm), PowerDownAllocate(wdm), PowerDownFail(wdm), PowerUpFail(wdm), RemoveLock(wdm) , RemoveLockCheck(wdm), RemoveLockForward(wdm), RemoveLockForward2(wdm), RemoveLockForwardDeviceControl(wdm), RemoveLockForwardDeviceControl2(wdm), RemoveLockForwardDeviceControlInternal(wdm), RemoveLockForwardDeviceControlInternal2(wdm), RemoveLockForwardRead(wdm), RemoveLockForwardRead2(wdm), RemoveLockForwardWrite(wdm), RemoveLockForwardWrite2(wdm), RemoveLockMnRemove(wdm), RemoveLockMnRemove2(wdm), RemoveLockMnSurpriseRemove(wdm), RemoveLockQueryMnRemove(wdm), RemoveLockRelease2(wdm), RemoveLockReleaseCleanup(wdm), RemoveLockReleaseClose(wdm), RemoveLockReleaseCreate(wdm), RemoveLockReleaseDeviceControl(wdm), RemoveLockReleaseInternalDeviceControl(wdm), RemoveLockReleasePnp(wdm), RemoveLockReleasePower(wdm), RemoveLockReleaseRead(wdm), RemoveLockReleaseShutdown(wdm), RemoveLockReleaseSystemControl(wdm), RemoveLockReleaseWrite(wdm), WmiForward(wdm)

Voir aussi

IoInitializeRemoveLock

IoReleaseRemoveLock

IoReleaseRemoveLockAndWait