Condividi tramite


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.
Ogni chiamata a IoAcquireRemoveLock deve avere una chiamata corrispondente a IoReleaseRemoveLock.

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)

Vedi anche

IoAcquireRemoveLock

IoInitializeRemoveLock

IoReleaseRemoveLockAndWait