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 結構。

針對對相同檔案數據流的後續開啟要求,文件系統或重新導向器驅動程序必須設定相關聯檔案物件的 SectionObjectPointer 成員,以指向先前為檔案數據流配置的 SECTION_OBJECT_POINTERS 結構。

警告

文件系統篩選驅動程式必須將 SECTION_OBJECT_POINTERS 結構的成員視為不透明,因為基礎文件系統負責同步處理成員,因此可以隨時變更其值。

檔案是由一或多個數據流所組成,視檔系統而定。 如需詳細資訊,請參閱檔案數據流、Stream 內容和 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