Compartilhar via


Estrutura DRIVEROBJ (winddi.h)

A estrutura DRIVEROBJ é usada para rastrear um recurso, alocado por um driver, que requer o uso de serviços GDI. Uma estrutura DRIVEROBJ permite que um driver de exibição solicite o serviço GDI no gerenciamento de recursos por processo. Ao criar uma estrutura DRIVEROBJ, um driver de exibição pode garantir que os recursos serão liberados quando um aplicativo for encerrado.

Sintaxe

typedef struct _DRIVEROBJ {
  PVOID       pvObj;
  FREEOBJPROC pFreeProc;
  HDEV        hdev;
  DHPDEV      dhpdev;
} DRIVEROBJ;

Membros

pvObj

Ponteiro para o recurso de driver que será rastreado pela estrutura DRIVEROBJ. O recurso está associado ao processo do cliente atual.

pFreeProc

Ponteiro para uma função de retorno de chamada fornecida pelo driver que libera o recurso apontado por pvObj. Essa função de retorno de chamada tem o seguinte protótipo:

BOOL (CALLBACK * FREEOBJPROC) (DRIVEROBJ * pDriverObj);

A função de retorno de chamada retornará TRUE se for capaz de liberar o recurso e, caso contrário, FALSE .

hdev

Identificador GDI para o dispositivo físico associado ao objeto .

dhpdev

Ponteiro para os dados da instância privada do driver; ou seja, esse membro identifica o PDEV do driver.

Comentários

Uma estrutura DRIVEROBJ permite que um driver de exibição solicite o serviço GDI no gerenciamento de recursos por processo. Ao criar uma estrutura DRIVEROBJ, um driver de exibição pode garantir que os recursos serão liberados quando um aplicativo for encerrado.

Alguns drivers, em seu suporte ao Escape, alocam recursos em nome de aplicativos. Nesses casos, a estrutura DRIVEROBJ fornece um meio para o aplicativo notificar o driver quando ele for encerrado. A GDI chamará a função de limpeza do driver para cada estrutura DRIVEROBJ alocada no contexto de um aplicativo que não é excluído antes do encerramento do aplicativo.

Essa estrutura fornece um mecanismo de bloqueio para acesso exclusivo ao recurso associado.

Requisitos

Requisito Valor
Cabeçalho winddi.h (inclua Winddi.h)

Confira também

EngCreateDriverObj

EngDeleteDriverObj

EngLockDriverObj

EngUnlockDriverObj