Macro IoReleaseRemoveLock (wdm.h)
La routine IoReleaseRemoveLock rilascia un blocco rimosso acquisito con una chiamata precedente a IoAcquireRemoveLock.
Sintassi
void IoReleaseRemoveLock(
[in] RemoveLock,
[in] Tag
);
Parametri
[in] RemoveLock
Puntatore a una struttura IO_REMOVE_LOCK che il chiamante ha passato a una chiamata precedente a IoAcquireRemoveLock.
[in] Tag
Puntatore a un tag fornito dal chiamante passato a una chiamata precedente a IoAcquireRemoveLock.
Se un driver ha specificato un tag quando ha acquisito il blocco, il driver deve specificare lo stesso tag durante il rilascio del blocco.
Se la chiamata a IoAcquireRemoveLock non specifica un tag, questo parametro è NULL.
Valore restituito
nessuno
Osservazioni
Un driver chiama IoReleaseRemoveLock quando ha completato l'operazione di I/O per cui ha chiamato IoAcquireRemoveLock.
- Per le operazioni di I/O (incluso l'alimentazione e l'IRP PnP) che impostano una routine IoCompletion , un driver deve chiamare IoReleaseRemoveLock nella routine IoCompletion , dopo aver chiamato IoCompleteRequest.
- Per le operazioni di I/O che non impostano una routine IoCompletion , un driver deve chiamare IoReleaseRemoveLock dopo aver passato l'IRP corrente al driver inferiore successivo, ma prima di uscire dalla routine di invio.
IoReleaseRemoveLock decrementa il conteggio delle acquisizioni in sospeso del blocco di rimozione. Se il conteggio passa a zero e il driver ha ricevuto una richiesta di IRP_MN_REMOVE_DEVICE , IoReleaseRemoveLock imposta un evento interno. Quando un driver è pronto per eliminare un oggetto dispositivo, chiama una routine simile, IoReleaseRemoveLockAndWait. Il driver effettua questa chiamata solo nel codice di invio per una richiesta di IRP_MN_REMOVE_DEVICE . La routine IoReleaseRemoveLockAndWait non viene restituita finché IoReleaseRemoveLock imposta l'evento che indica che il conteggio delle acquisizioni è zero. Dopo che IoReleaseRemoveLockAndWait restituisce, il driver può scollegare ed eliminare in modo sicuro l'oggetto dispositivo.
Per altre informazioni, vedere Uso di blocchi di rimozione.
Requisiti
Requisito | Valore |
---|---|
Client minimo supportato | Disponibile a partire da Windows 2000. |
Piattaforma di destinazione | Desktop |
Intestazione | wdm.h (include Wdm.h, Ntddk.h, Ntifs.h) |
Libreria | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | <= DISPATCH_LEVEL |
Regole di conformità DDI | 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) |