共用方式為


特殊集區

特殊集區功能會設定 Windows ,在記憶體使用指定集區標籤或在指定大小範圍內配置時,從保留的記憶體集區要求配置記憶體。

Abbreviation

SPP

十六進位值

(無)

符號名稱

(無)

目的地

全系統登錄專案

(Windows Vista 及更新版本)全系統登錄項目、核心旗標

選擇池標籤

要求特定集區標籤的特殊集區時,請確定您的驅動程式或其他核心模式程式使用唯一的集區標籤。

此外,建立集區標籤 (例如使用 ExAllocatePoolWithTag) 時,請考慮以相反的順序輸入標籤字元。 例如,如果標籤是 Fred,請考慮將其輸入為 derF (0x64657246)。 集區標籤會儲存在登錄中,並以反向 (下端) 順序顯示在偵錯工具和其他工具中。 如果您以相反的順序輸入它們,則它們將以正向順序 (0x46726564) 顯示

如果您懷疑驅動程式正在取用所有特殊集區,請考慮在程式代碼中使用多個集區標籤。 然後,您可以測試驅動程式數次,將特殊集區指派給每個測試中的一個集區卷標。

此外,請選取具有大於系統頁面大小的十六進位值的集區標籤。 針對核心模式代碼,如果您輸入的集區標籤值小於 PAGE_SIZE,Gflags 會要求對應範圍內的所有分配使用特殊集區,並針對具有相同集區標籤的分配要求使用特殊集區。 例如,如果您選擇的大小是 30,則特殊集區將用於所有大小介於 17 至 32 個字節之間的配置,以及集區標籤為 0x0030 的配置。

選取分配大小

使用下列準則來選取特殊集區功能的配置大小。

在具有 x86 處理器的電腦上,PAGE_SIZE 是0x1000,配置大小範圍的長度為 8 個位元組。 若要為大小在此範圍內的所有分配配置特殊集區功能,請輸入等於此範圍的最大值加上 8 的數字。 (這個數位一律是8的倍數。下表說明這些值:

大小範圍 輸入此號碼

1 到 8 個字節

10 (十進制 16)

9 到 16 個字節

18 (十進制 24)

17 到 24 個字節

20 (十進制 32)

...

...

0xFE9至0xFF0位元組

FF8 (十進制 4088)

在配備 AMD x86-64 處理器的電腦上,PAGE_SIZE 是0x1000,分配大小範圍的長度為 16 位元組。 若要為大小在此範圍內的所有分配配置特殊集區功能,請輸入一個等於此範圍的最大值加上 16 的數字。 (這個數位一律是 16 的倍數。下表說明這些值:

大小範圍 輸入此號碼

1 到 16 個字節

20 (十進制 32)

17 到 32 個字節

30 (十進制 48)

33 到 48 個字節

40 (十進制 64)

...

...

要0xFE0位元組的0xFD1

FF0 (十進制 4080)

在具有任何處理器的電腦上,您可以使用星號 ( * ) 或0x2A (十進位 42) 來配置系統上所有記憶體配置的「特殊儲存區」特性。

批注

如需有關在「全域旗標」對話方塊中設定特殊集區功能的資訊,請參閱 設定特殊集區。 如需在命令列設定特殊集區功能的相關資訊,請參閱 GFlags 命令。 如需範例,請參閱 範例 14:配置特殊集區

Gflags 的特殊集區功能會指示 Windows 當記憶體配置具有指定集區標籤或位於指定大小範圍內時,從保留的記憶體集區分配記憶體。 若要為特定驅動程式的所有配置申請特殊集區,請使用驅動程式驗證器。 如需詳細資訊,請參閱 Windows 驅動程式套件 (WDK) 的「驅動程式驗證程式」部分中的「特殊記憶體集區」主題。

Gflags 和驅動程式驗證器的特殊集區功能可協助您偵測及識別核心集區使用中的錯誤來源,例如寫入超出配置的記憶體空間,或參照已釋放的記憶體。

並非所有特殊泳池要求都能得到滿足。 特殊存放區的每一次分配會使用一頁非分頁的物理內存和兩頁虛擬地址空間。 如果特殊儲存區已用盡,則會從標準儲存區配置記憶體,直到特殊儲存區再次可用為止。 從標準集區填入特殊集區要求時,要求函式會傳回成功狀態。 它不會傳回錯誤,因為配置已成功,即使它不是從特殊集區填入也一樣。

特殊儲存區的大小會隨著系統上的實體記憶體數量而增加;理想情況下,這應該至少是 1 GB (GB)。 在 x86 機器上,因為會耗用虛擬 (除了實體) 空間,所以使用特殊儲存區時,請勿使用 /3GB 開機選項。 將頁面檔案的最小/最大數量增加兩到三倍也是一個好主意。

您也可以設定特殊集區功能來調整記憶體配置,以偵測低於配置的記憶體參考(「下溢」)或超過配置的記憶體參考(「上溢」)。 此功能僅適用於所有 Windows 版本的 [全域旗標] 對話方塊。 如需詳細資訊,請參閱 偵測超限和欠限

在 Windows Vista 和更新版本的 Windows 上,您可以將特殊集區功能設定為需要重新開機的登錄設定,但在您變更之前仍然有效,或設定為不需要重新開機的核心旗標設定,但只有在您重新啟動或關閉 Windows 之前才有效。 在舊版 Windows 中,特殊集區僅可作為登錄設定使用。

在 Windows Vista 和更新版本的 Windows 上,您可以使用 [全域旗標] 對話方塊或在命令列來設定特殊集區功能。 在舊版 Windows 中,這項功能僅適用於 [全域旗標] 對話方塊。