Usando objetos de estrutura geral

O objeto de estrutura geral é o objeto de estrutura do qual todos os outros tipos de objetos de estrutura são derivados.

Assim como outros objetos de estrutura, os objetos gerais dão suporte a uma contagem de referência, espaço de contexto, funções de retorno de chamada de exclusão e um objeto pai, conforme descrito em Introdução aos objetos framework.

Os drivers podem criar e usar objetos de estrutura geral. Se o driver chamar WdfObjectCreate para criar objetos gerais, o driver poderá:

  • Crie um ou mais espaços de contexto para cada objeto geral.

    Você pode usar o espaço de contexto do objeto para armazenar informações sobre os recursos do sistema que deseja associar ao objeto geral.

    Para obter mais informações sobre o espaço de contexto, consulte Espaço de contexto do objeto framework.

  • Atribua um pai ao objeto geral.

    O objeto geral será excluído quando o objeto pai for excluído. Por exemplo, se o driver especificar um objeto de dispositivo de estrutura como o objeto pai de um de seus objetos gerais, a estrutura excluirá o objeto geral quando excluir o objeto do dispositivo.

    Os drivers especificam o objeto pai de um objeto definindo o membro ParentObject da estrutura WDF_OBJECT_ATTRIBUTES do objeto.

  • Forneça funções de retorno de chamada de exclusão.

    O driver pode fornecer funções EvtCleanupCallback e EvtDestroyCallback , que podem desalocar recursos do sistema que o driver alocou quando criou o objeto geral. Por exemplo, se o driver chamado ExAllocatePool quando ele criou um objeto geral, a função de limpeza ou destruição de retorno de chamada poderá chamar ExFreePool.

Usar objetos gerais pode ser uma maneira conveniente de gerenciar recursos alocados pelo driver. Por exemplo, um driver de nível superior pode exigir várias alocações de memória para processar uma solicitação de E/S recebida, se o driver enviar a solicitação para vários dispositivos ou dividir a solicitação em vários menores. O driver pode criar um ou mais objetos gerais que são filhos da solicitação de E/S recebida e pode armazenar informações sobre as alocações de memória no espaço de contexto dos objetos gerais.