estrutura SECTION_OBJECT_POINTERS (wdm.h)
A estrutura SECTION_OBJECT_POINTERS, alocada por um sistema de arquivos ou um driver de redirecionamento, é usada pelo gerenciador de memória e pelo gerenciador de cache para armazenar informações relacionadas ao mapeamento de arquivos e cache para um fluxo de arquivos.
Sintaxe
typedef struct _SECTION_OBJECT_POINTERS {
PVOID DataSectionObject;
PVOID SharedCacheMap;
PVOID ImageSectionObject;
} SECTION_OBJECT_POINTERS;
Membros
DataSectionObject
Ponteiro opaco para um objeto de seção de dados (ou seja, uma estrutura CONTROL_AREA) que é usado para rastrear informações de estado para um fluxo de arquivo de dados. O gerenciador de memória define esse membro quando o sistema operacional armazena o fluxo de dados em cache pela primeira vez. Um valor NULL
SharedCacheMap
Ponteiro opaco para um objeto de mapa de cache (ou seja, uma estrutura de SHARED_CACHE_MAP) que é usada para rastrear exibições mapeadas para o fluxo de arquivos de dados. O gerenciador de cache define esse membro quando o sistema operacional armazena o fluxo em cache pela primeira vez. Um valor de NULL
ImageSectionObject
Ponteiro opaco para um objeto de seção de imagem (ou seja, uma estrutura de CONTROL_AREA) que é usado para rastrear informações de estado para um fluxo de arquivos executável. O gerenciador de memória define esse membro sempre que uma seção de imagem executável é criada para o fluxo. Um valor NULL indica que a imagem executável não está atualmente na memória; esse valor, no entanto, pode ser alterado a qualquer momento.
Observações
A estrutura SECTION_OBJECT_POINTERS vincula um objeto de arquivo ao objeto de seção de um fluxo de arquivos. Ou seja, por meio de seus membros, a estrutura SECTION_OBJECT_POINTERS conecta um objeto de arquivo específico a estruturas de controle de memória virtual que acompanham o conteúdo do fluxo quando estão na memória e permitem que o sistema operacional busque esses conteúdos quando não estiverem.
Há uma relação um-para-um entre uma estrutura SECTION_OBJECT_POINTERS e um fluxo de arquivos. Vários objetos de arquivo podem ser associados a um fluxo de arquivo específico, cada um representando uma instância aberta do fluxo. No entanto, apenas uma estrutura SECTION_OBJECT_POINTERS pode ser associada a um determinado fluxo. Se houver vários objetos de arquivo para um fluxo, o membro
Para a primeira solicitação aberta do fluxo de arquivos, o sistema de arquivos ou o driver do redirecionador devem:
Aloque uma estrutura de SECTION_OBJECT_POINTERS de um pool nãopagado.
Inicialize todos os membros da estrutura de SECTION_OBJECT_POINTERS alocada para NULL.
Defina o SectionObjectPointer membro do objeto de arquivo associado para apontar para a estrutura de SECTION_OBJECT_POINTERS inicializada.
Para solicitações abertas subsequentes para o mesmo fluxo de arquivos, o sistema de arquivos ou o driver de redirecionamento devem definir o SectionObjectPointer membro do objeto de arquivo associado para apontar para a estrutura de SECTION_OBJECT_POINTERS alocada anteriormente para o fluxo de arquivos.
Aviso
Os drivers de filtro do sistema de arquivos devem tratar os membros da estrutura SECTION_OBJECT_POINTERS como opacos porque o sistema de arquivos subjacente é responsável pela sincronização dos membros e, portanto, pode alterar seus valores a qualquer momento.
Um arquivo é composto por um ou mais fluxos, dependendo do sistema de arquivos. Para obter mais informações, consulte fluxos de arquivos, contextos de fluxo e contextos de Per-Stream.
Requisitos
Requisito | Valor |
---|---|
cabeçalho | wdm.h (include Wdm.h, Ntddk.h, Ntifs.h, Fltkernel.h) |