Macro IoAcquireRemoveLock (wdm.h)
La routine IoAcquireRemoveLock incrementa il conteggio per un blocco di rimozione, a indicare che l'oggetto dispositivo associato non deve essere scollegato dallo stack di dispositivi o eliminato.
Sintassi
NTSTATUS
IoAcquireRemoveLock (
_Inout_ PIO_REMOVE_LOCK RemoveLock,
_In_opt_ PVOID Tag
);
Parametri
[in] RemoveLock
Puntatore a una struttura IO_REMOVE_LOCK inizializzata dal chiamante con una chiamata precedente a IoInitializeRemoveLock.
[in, optional] Tag
Facoltativamente punta a un tag fornito dal chiamante che identifica questa istanza di acquisizione del blocco di rimozione. Ad esempio, una routine Dispatch del driver imposta in genere questo parametro su un puntatore all'IRP che la routine sta elaborando.
Se un driver specifica un tag in una chiamata a IoAcquireRemoveLock, il driver deve fornire lo stesso tag nella chiamata corrispondente a IoReleaseRemoveLock.
Il tag non deve essere univoco, ma deve essere un elemento significativo durante il debug.
Valore restituito
nessuno
Osservazioni
La macro IoAcquireRemoveLock esegue il wrapping e presuppone il valore restituito di IoAcquireRemoveLockEx, che restituisce NTSTATUS:
Valore restituito | Descrizione |
---|---|
STATUS_SUCCESS | Indica che la chiamata ha avuto esito positivo. |
STATUS_DELETE_PENDING | Valore di errore che indica che il driver ha ricevuto un IRP_MN_REMOVE_DEVICE per il dispositivo e ha chiamato IoReleaseRemoveLockandWait. Questa routine è in attesa che tutti i blocchi vengano rimossi prima di restituire il controllo al driver. |
Se la routine restituisce qualsiasi valore oltre STATUS_SUCCESS, non avviare nuove operazioni nel dispositivo.
Un driver deve inizializzare un blocco remove con una chiamata a IoInitializeRemoveLock prima di usare il blocco.
Un driver deve chiamare IoReleaseRemoveLock per rilasciare il blocco quando non è più necessario.
Per altre informazioni, vedere Using Remove Locks.For more information, see Using Remove Locks.