共用方式為


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 結構的成員視為不透明,因為基礎文件系統負責成員的同步處理,因此可以隨時變更其值。

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