Compartir a través de


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

Consulte también

ObDereferenceObject

ObReferenceObject