Compartir a través de


Función EngDeleteDriverObj (winddi.h)

La función EngDeleteDriverObj libera el identificador usado para realizar el seguimiento de un recurso administrado por el dispositivo.

Sintaxis

ENGAPI BOOL EngDeleteDriverObj(
  HDRVOBJ hdo,
  BOOL    bCallBack,
  BOOL    bLocked
);

Parámetros

hdo

Identificador del objeto de controlador que se va a eliminar. Este identificador GDI se obtuvo de EngCreateDriverObj.

bCallBack

Especifica si se debe llamar a la devolución de llamada de limpieza. Si es TRUE, GDI invoca la devolución de llamada de limpieza antes de quitar DRIVEROBJ del administrador de identificadores. Si es FALSE, GDI no lo hace. Si la función de devolución de llamada devuelve un error, Se producirá un error en EngDeleteDriverObj .

bLocked

Especifica si el controlador bloqueó el objeto (a través de una llamada a EngLockDriverObj) antes de llamar a EngDeleteDriverObj . Si es TRUE, el objeto estaba bloqueado; si es FALSE, el objeto no estaba bloqueado.

Valor devuelto

El valor devuelto es TRUE si la función es correcta y el identificador se libera; es FALSE si el identificador no se ha liberado. Si la función de controlador pFreeObjProc especificada en EngCreateDriverObj devuelve FALSE, EngDeleteDriverObj producirá un error y el identificador no se liberará. Esto podría ocurrir si la devolución de llamada de limpieza necesita bloquear otra estructura DRIVEROBJ (para liberar la estructura DRIVEROBJ actual) y produce un error porque otra estructura DRIVEROBJ está en uso por otro subproceso.

Comentarios

Una vez liberado el identificador, GDI ya no realiza el seguimiento del recurso del controlador asociado y la función a la que apunta el parámetro pFreeObjProc de EngCreateDriverObj no se llamará al finalizar el proceso. Es responsabilidad del controlador asegurarse de que el recurso está liberado.

La mayoría de los controladores deben ser coherentes en el modo en que los objetos se limpian en el momento de la finalización. Por lo tanto, pasarán TRUE para bCallback, lo que indica a GDI que debe llamar a la función de limpieza del controlador para liberar este recurso de controlador.

El parámetro bCallBack indica a GDI si se debe llamar a la función de devolución de llamada. Pasar TRUE para bCallBack indica a GDI que llame a la función de limpieza del controlador para liberar este recurso de controlador. Pasar FALSE impide que GDI llame a la función de limpieza. Si pFreeObjProc devuelve FALSE, Se produce un error en EngDeleteDriverObj y el identificador no se liberará. Por ejemplo, esto podría ocurrir si pFreeObjProc necesitaba bloquear otra estructura DRIVEROBJ para liberar la estructura DRIVEROBJ actual y no se pudo realizar porque otro subproceso usaba la estructura . PFreeObjProc nunca debe producir un error en el momento de la limpieza, ya que no se están ejecutando subprocesos distintos del subproceso de limpieza, por lo que no se producirán errores en los bloqueos de otros objetos.

El parámetro bLocked indica a GDI que el controlador ya ha bloqueado el objeto una vez. A menudo, antes de eliminar un objeto, es posible que el controlador lo haya bloqueado para usarlo primero. Esto permite al controlador llamar a GDI sin tener que desbloquear primero el objeto, lo que elimina la posibilidad de que otro subproceso pueda entrar en el controlador y bloquearlo antes de liberar el identificador.

Requisitos

   
Cliente mínimo compatible Disponible en Windows 2000 y versiones posteriores de los sistemas operativos Windows.
Plataforma de destino Universal
Encabezado winddi.h (incluya Winddi.h)
Library Win32k.lib
Archivo DLL Win32k.sys

Consulte también

DRIVEROBJ

EngCreateDriverObj