Función ObDereferenceObjectDeferDelete (wdm.h)
La rutina ObDereferenceObjectDeferDelete disminuye el recuento de referencias del objeto especificado, comprueba la retención de objetos y evita interbloqueos.
Sintaxis
void ObDereferenceObjectDeferDelete(
[in] PVOID Object
);
Parámetros
[in] Object
Puntero al cuerpo del objeto.
Valor devuelto
None
Observaciones
ObDereferenceObjectDeferDelete es similar a ObDereferenceObject , excepto que, cuando el recuento de referencias del objeto alcanza cero, el administrador de objetos pasa la solicitud de eliminación de objetos a un subproceso de trabajo. Por lo tanto, la eliminación se produce más adelante en IRQL = PASSIVE_LEVEL.
Use ObDereferenceObjectDeferDelete para cualquier objeto cuando el subproceso actual del objeto (mediante ObDereferenceObject) pueda producir un interbloqueo.
Por ejemplo, este interbloqueo puede producirse si ObDereferenceObject se usa para desreferenciar un objeto del Administrador de transacciones de kernel (KTM) cuando un controlador de nivel superior de la pila de controladores mantiene un bloqueo.
Para evitar estos interbloqueos, use ObDereferenceObjectDeferDelete en lugar de ObDereferenceObject para desreferenciar el objeto KTM.
Para obtener información sobre la permanencia de objetos y los atributos, vea ObDereferenceObject.
Requisitos
Requisito | Value |
---|---|
Plataforma de destino | Universal |
Encabezado | wdm.h (incluya Fltkernel.h, Ntifs.h) |
Library | NtosKrnl.lib |
Archivo DLL | NtosKrnl.exe |
IRQL | IRQL <= DISPATCH_LEVEL |