다음을 통해 공유


SECTION_OBJECT_POINTERS 구조체(wdm.h)

파일 시스템 또는 리디렉터 드라이버에 의해 할당된 SECTION_OBJECT_POINTERS 구조는 메모리 관리자와 캐시 관리자가 파일 스트림에 대한 파일 매핑 및 캐시 관련 정보를 저장하는 데 사용됩니다.

통사론

typedef struct _SECTION_OBJECT_POINTERS {
  PVOID DataSectionObject;
  PVOID SharedCacheMap;
  PVOID ImageSectionObject;
} SECTION_OBJECT_POINTERS;

회원

DataSectionObject

데이터 파일 스트림의 상태 정보를 추적하는 데 사용되는 데이터 섹션 개체(즉, CONTROL_AREA 구조)에 대한 불투명 포인터입니다. 메모리 관리자는 운영 체제에서 데이터 스트림을 처음 캐시할 때 이 멤버를 설정합니다. NULL 값은 데이터 스트림이 현재 메모리에 없음을 나타냅니다. 그러나 이 값은 언제든지 변경할 수 있습니다.

SharedCacheMap

데이터 파일 스트림에 매핑된 뷰를 추적하는 데 사용되는 캐시 맵 개체(즉, SHARED_CACHE_MAP 구조)에 대한 불투명 포인터입니다. 캐시 관리자는 운영 체제가 스트림을 처음 캐시할 때 이 멤버를 설정합니다. NULL 값은 데이터 스트림이 현재 캐시되지 않음을 나타냅니다. 그러나 이 값은 언제든지 변경할 수 있습니다.

ImageSectionObject

실행 파일 스트림에 대한 상태 정보를 추적하는 데 사용되는 이미지 섹션 개체(즉, CONTROL_AREA 구조)에 대한 불투명 포인터입니다. 메모리 관리자는 스트림에 대해 실행 이미지 섹션을 만들 때마다 이 멤버를 설정합니다. NULL 값은 실행 파일이 현재 메모리에 없음을 나타냅니다. 그러나 이 값은 언제든지 변경할 수 있습니다.

발언

SECTION_OBJECT_POINTERS 구조체는 파일 개체를 파일 스트림의 섹션 개체에 연결합니다. 즉, 멤버를 통해 SECTION_OBJECT_POINTERS 구조체는 특정 파일 개체를 가상 메모리 제어 구조에 연결하여 스트림이 메모리에 있을 때 스트림의 콘텐츠를 추적하고 운영 체제가 그렇지 않은 경우 해당 콘텐츠를 가져올 수 있도록 합니다.

SECTION_OBJECT_POINTERS 구조체와 파일 스트림 사이에는 일대일 관계가 있습니다. 여러 파일 개체를 특정 파일 스트림과 연결할 수 있으며 각 개체는 스트림의 열린 인스턴스를 나타냅니다. 그러나 하나의 SECTION_OBJECT_POINTERS 구조만 지정된 스트림과 연결할 수 있습니다. 스트림에 대한 여러 파일 개체가 있는 경우 모든 파일 개체에 대한 SectionObjectPointer 멤버는 스트림과 연결된 동일한 SECTION_OBJECT_POINTERS 구조를 가리킵니다.

첫 번째 파일 스트림 열기 요청의 경우 파일 시스템 또는 리렉터 드라이버는 다음을 수행해야 합니다.

  1. 페이지가 없는 풀에서 SECTION_OBJECT_POINTERS 구조를 할당합니다.

  2. 할당된 SECTION_OBJECT_POINTERS 구조체의 모든 멤버를 초기화하여 NULL.

  3. 연결된 파일 개체의 SectionObjectPointer 멤버를 초기화된 SECTION_OBJECT_POINTERS 구조를 가리키도록 설정합니다.

동일한 파일 스트림에 대한 후속 열린 요청의 경우 파일 시스템 또는 리디렉터 드라이버는 파일 스트림에 대해 이전에 할당된 SECTION_OBJECT_POINTERS 구조를 가리키도록 연결된 파일 개체의 SectionObjectPointer 멤버를 설정해야 합니다.

경고

파일 시스템 필터 드라이버는 기본 파일 시스템이 멤버의 동기화를 담당하므로 언제든지 해당 값을 변경할 수 있으므로 SECTION_OBJECT_POINTERS 구조체의 멤버를 불투명하게 처리해야 합니다.

파일은 파일 시스템에 따라 하나 이상의 스트림으로 구성됩니다. 자세한 내용은 파일 스트림, 스트림 컨텍스트 및 Per-Stream 컨텍스트참조하세요.

요구 사항

요구
헤더 wdm.h(Wdm.h, Ntddk.h, Ntifs.h, Fltkernel.h 포함)

참고 항목

ccInitializeCacheMap

DEVICE_OBJECT

FILE_OBJECT

FOBX

FSRTL_ADVANCED_FCB_HEADER

IoGetDeviceObjectPointer

MmFlushImageSection

ObDereferenceObject