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 |