Compartilhar via


Função EngDeleteDriverObj (winddi.h)

A função EngDeleteDriverObj libera o identificador usado para rastrear um recurso gerenciado pelo dispositivo.

Sintaxe

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

Parâmetros

hdo

Manipule para o objeto driver que deve ser excluído. Esse identificador GDI foi obtido de EngCreateDriverObj.

bCallBack

Especifica se o retorno de chamada de limpeza deve ser chamado. Se TRUE, a GDI invocará o retorno de chamada de limpeza antes de remover o DRIVEROBJ do gerenciador de identificadores. Se FALSE, a GDI não o fará. Se a função de retorno de chamada retornar falha, EngDeleteDriverObj falhará.

bLocked

Especifica se o objeto foi bloqueado pelo driver (por meio de uma chamada para EngLockDriverObj) antes de EngDeleteDriverObj ser chamado. Se TRUE, o objeto foi bloqueado; se FALSE, o objeto não foi bloqueado.

Valor retornado

O valor retornado será TRUE se a função for bem-sucedida e o identificador for liberado; será FALSE se o identificador não tiver sido liberado. Se a função de driver pFreeObjProc especificada em EngCreateDriverObj retornar FALSE, EngDeleteDriverObj falhará e o identificador não será liberado. Isso pode acontecer se o retorno de chamada de limpeza precisar bloquear outra estrutura DRIVEROBJ (para liberar a estrutura DRIVEROBJ atual ) e falhar porque a outra estrutura DRIVEROBJ está em uso por outro thread.

Comentários

Depois que o identificador for liberado, o recurso de driver associado não será mais rastreado pela GDI e a função apontada pelo parâmetro pFreeObjProc de EngCreateDriverObj não será chamada após o encerramento do processo. É responsabilidade do driver garantir que o recurso seja liberado.

A maioria dos drivers deve ser consistente em como os objetos são limpos no momento da terminação. Consequentemente, eles passarão TRUE para bCallback, indicando à GDI que ele deve chamar a função de limpeza do driver para liberar esse recurso de driver.

O parâmetro bCallBack indica ao GDI se a função de retorno de chamada precisa ser chamada. Passar TRUE para bCallBack informa à GDI para chamar a função de limpeza do driver de volta para liberar esse recurso de driver. Passar FALSE impede que o GDI chame a função de limpeza. Se pFreeObjProc retornar FALSE, EngDeleteDriverObj falhará e o identificador não será liberado. Por exemplo, isso pode acontecer se o pFreeObjProc precisar bloquear outra estrutura DRIVEROBJ para liberar a estrutura DRIVEROBJ atual e falhar porque a estrutura estava sendo usada por outro thread. O pFreeObjProc nunca deve falhar no momento da limpeza, pois nenhum thread, além do thread de limpeza, está em execução, para que os bloqueios de outros objetos não falhem.

O parâmetro bLocked indica à GDI que o objeto já foi bloqueado uma vez pelo driver. Muitas vezes, antes que um objeto seja excluído, o driver pode tê-lo bloqueado para usar primeiro. Isso permite que o driver chame GDI sem primeiro ter que desbloquear o objeto, eliminando assim a possibilidade de que outro thread possa entrar no driver e bloqueá-lo antes que o identificador seja liberado.

Requisitos

   
Cliente mínimo com suporte Disponível no Windows 2000 e versões posteriores dos sistemas operacionais Windows.
Plataforma de Destino Universal
Cabeçalho winddi.h (inclua Winddi.h)
Biblioteca Win32k.lib
DLL Win32k.sys

Confira também

DRIVEROBJ

EngCreateDriverObj