Macro IoReleaseRemoveLock (wdm.h)
La rutina IoReleaseRemoveLock libera un bloqueo de eliminación adquirido con una llamada anterior a IoAcquireRemoveLock.
Sintaxis
void IoReleaseRemoveLock(
[in] RemoveLock,
[in] Tag
);
Parámetros
[in] RemoveLock
Puntero a una estructura de IO_REMOVE_LOCK que el autor de la llamada pasó a una llamada anterior a IoAcquireRemoveLock.
[in] Tag
Puntero a una etiqueta proporcionada por el autor de la llamada que se pasó a una llamada anterior a IoAcquireRemoveLock.
Si un controlador especificó una etiqueta cuando adquirió el bloqueo, el controlador debe especificar la misma etiqueta al liberar el bloqueo.
Si la llamada a IoAcquireRemoveLock no especificó una etiqueta, este parámetro es NULL.
Valor devuelto
None
Observaciones
Un controlador llama a IoReleaseRemoveLock cuando ha completado la operación de E/S para la que llamó IoAcquireRemoveLock.
- En el caso de las operaciones de E/S (incluidos los IRP de alimentación y PnP) que establecen una rutina de IoCompletion , un controlador debe llamar a IoReleaseRemoveLock en la rutina IoCompletion , después de llamar a IoCompleteRequest.
- Para las operaciones de E/S que no establecen una rutina de IoCompletion , un controlador debe llamar a IoReleaseRemoveLock después de pasar el IRP actual al controlador inferior siguiente, pero antes de salir de la rutina de envío.
IoReleaseRemoveLock disminuye el recuento de adquisiciones pendientes del bloqueo de eliminación. Si el recuento va a cero y el controlador ha recibido una solicitud de IRP_MN_REMOVE_DEVICE , IoReleaseRemoveLock establece un evento interno. Cuando un controlador está listo para eliminar un objeto de dispositivo, llama a una rutina similar , IoReleaseRemoveLockAndWait. El controlador realiza esta llamada solo en su código de envío para una solicitud de IRP_MN_REMOVE_DEVICE . La rutina IoReleaseRemoveLockAndWait no devuelve hasta que IoReleaseRemoveLock establece el evento que indica que el recuento de adquisiciones es cero. Después de que IoReleaseRemoveLockAndWait vuelva, el controlador puede desasociar y eliminar el objeto de dispositivo de forma segura.
Para obtener más información, consulte Uso de bloqueos de eliminación.