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 de 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 indica que o fluxo de dados não está atualmente na memória; No entanto, esse valor pode ser alterado a qualquer momento.

SharedCacheMap

Ponteiro opaco para um objeto de mapa de cache (ou seja, uma estrutura SHARED_CACHE_MAP ) que é usado 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 NULL indica que o fluxo de dados não está armazenado em cache no momento; No entanto, esse valor pode ser alterado a qualquer momento.

ImageSectionObject

Ponteiro opaco para um objeto de seção de imagem (ou seja, uma estrutura 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 atualmente não está na memória; No entanto, esse valor pode ser alterado a qualquer momento.

Comentários

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 de 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 SectionObjectPointer para todos os objetos de arquivo deverá apontar para a mesma estrutura SECTION_OBJECT_POINTERS (associada ao fluxo).

Para a primeira solicitação aberta do fluxo de arquivos, o sistema de arquivos ou o driver de redirecionamento devem:

  1. Aloque uma estrutura de SECTION_OBJECT_POINTERS de um pool nãopagado.

  2. Inicialize todos os membros da estrutura de SECTION_OBJECT_POINTERS alocada para NULL.

  3. Defina o membro SectionObjectPointer 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 membro SectionObjectPointer 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 Stream e contextos de Per-Stream.

Requisitos

Requisito Valor
Cabeçalho wdm.h (include Wdm.h, Ntddk.h, Ntifs.h, Fltkernel.h)

Confira também

CcInitializeCacheMap

DEVICE_OBJECT

FILE_OBJECT

FOBX

FSRTL_ADVANCED_FCB_HEADER

IoGetDeviceObjectPointer

MmFlushImageSection

ObDereferenceObject