Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Начиная с Windows Vista, можно настроить функцию специального пула в качестве параметра флага ядра или в качестве параметра реестра. Если вы настроите его в качестве параметра флага ядра (время выполнения), вам не нужно перезагружать компьютер, чтобы изменения вступили в силу. В более ранних версиях Windows специальный пул доступен только в качестве параметра реестра.
Кроме того, начиная с Windows Vista, можно задать и настроить функцию специального пула из командной строки. В более ранних версиях Windows можно задать и настроить функцию специального пула только в диалоговом окне "Глобальные флаги".
Запрос специального пула по тегу пула без перезагрузки
Следующая команда запрашивает специальный пул для всех аллокирований с тегом пула Tag1. Этот параметр становится эффективным немедленно, но он теряется при завершении работы или перезапуске Windows.
Эта команда использует параметр /k для указания параметра флага ядра (время выполнения) и аббревиатуру +spp для установки специального запроса пула.
gflags /k +spp Tag1
Gflags отвечает, выводя текст:
Special Pool set to 0x31676154
PoolTagOverruns set to 0x1
Current Running Kernel Settings are: 00000000
Обратите внимание, что специальный запрос на выделение пула не является параметром флага ядра и не отражается в значении параметров ядра.
Кроме того, запрос на специальное выделение пула не изменяет значение настройки перерасхода (0x1) или недостаточного расхода (0x0) для специального пула. Чтобы изменить настройки с переполнения на недостаточное заполнение, используйте диалоговое окно Gflags. Дополнительные сведения см. в разделе "Обнаружение переполнений и недополнений".
Тег пула нельзя отобразить в командной строке. Чтобы убедиться, что тег пула является параметром ядра, используйте диалоговое окно Gflags.
Запрос специального пула по тегу пула в реестре
Следующая команда запрашивает специальный пул для всех выделений с тегом пула Tag1 . Так как этот параметр хранится в реестре, необходимо перезапустить компьютер, чтобы сделать его эффективным, но он остается эффективным, пока не измените его.
Эта команда использует параметр /r для указания параметра реестра и аббревиатуры +spp, чтобы задать специальный запрос пула.
gflags /r +spp Tag1
Gflags выдает следующий вывод:
Special Pool set to 0x31676154
PoolTagOverruns set to 0x1
Current Boot Registry Settings are: 00000000
Обратите внимание, что запрос на выделение специального пула не является параметром флага реестра и не отражается в значении параметров реестра.
Кроме того, специальный запрос на выделение пула не изменяет значение параметра переполнения (0x1) или недополнения (0x0) для специального пула. Чтобы изменить с переполнений, настроенных по умолчанию, на недобеги, используйте диалоговое окно Gflags. Для получения информации смотрите "Обнаружение превышений и недостающих данных".
Чтобы убедиться, что значение было добавлено в реестр, используйте Reg или Regedit, чтобы отобразить значение записи PoolTag в ключе HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management.
Рассмотрим пример.
c:>reg query "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management" -v PoolTag
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management
PoolTag REG_DWORD 0x31676154
Запрос специального пула по размеру без перезагрузки
Следующая команда запрашивает специальный пул для выделения от 1 до 8 байтов на компьютере x86 с PAGE_SIZE 0x1000 и степенью детализации выделения 8 байт.
Эта команда использует параметр /k для указания флага ядра (времени выполнения) и аббревиатуру +spp для установки запроса специального пула. Значению размера предшествует 0x, чтобы указать, что оно обозначает размер, а не тег пула.
Значение 0x10 вычисляется путем добавления гранулярности выделения (8 байт) к максимальному размеру диапазона (8 байт), что в сумме составляет 16 байт (0x10). Сведения о том, как определить правильное значение, см. в разделе "Выбор размера выделения" в Специальном пуле.
gflags /k +spp 0x10
Gflags отвечает, показывая вывод:
Special Pool set to 0x10
PoolTagOverruns set to 0x1
Current Running Kernel Settings are: 00000000
Опять же, запрос на выделение специального пула не является параметром флага ядра и не отражается в значении параметров ядра.
Кроме того, специальный запрос на выделение пула не изменяет значение параметра перерасхода (0x1) или недостатка (0x0) для специального пула. Чтобы изменить с переполнения, которое является значением по умолчанию, на недополнение, используйте диалоговое окно Gflags. Дополнительные сведения см. в разделе Обнаружение переполнений и недостаточных данных.
Запросить выделенный пул по размеру в реестре
Следующая команда запрашивает специальный пул для выделения 1024–1040 байт на компьютере x64 с PAGE_SIZE 0x1000 и степенью детализации выделения 16 байт.
Эта команда использует параметр /r для указания параметра реестра на уровне системы и аббревиатуры +spp, чтобы задать специальный запрос пула. Значение размера предшествует 0x, чтобы указать, что это размер, а не тег пула.
Значение, 0x420, вычисляется путем добавления единицы выделения (16 байт) к максимальному размеру в этом диапазоне (1040 байт), что составляет 1056 байт (0x420). Сведения о том, как определить правильное значение, см. в разделе "Выбор размера выделения" в Special Pool.
gflags /r +spp 0x420
Gflags отвечает, выводя:
Special Pool set to 0x420
PoolTagOverruns set to 0x1
Current Boot Registry Settings are: 00000000
Опять же, запрос на выделение специального пула не является параметром флага реестра и не отражается в значении параметров реестра.
Кроме того, специальный запрос на выделение пула не изменяет значение переполнения (0x1) или недорасхода (0x0) для специального пула. Чтобы изменить параметр с переполнения, который установлен по умолчанию, на недополнение, используйте диалоговое окно Gflags. В разделе "Обнаружение переполнений и недогрузок см. информацию.
Чтобы проверить, добавлено ли значение в реестр, используйте Reg или Regedit, чтобы отобразить значение записи PoolTag в ключеHKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management.
Рассмотрим пример.
c:>reg query "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management" -v PoolTag
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management
PoolTag REG_DWORD 0x420
Отмена специального запроса пула
Следующая команда отменяет запрос для Special Pool в качестве настройки флага ядра (время выполнения). Команда одинакова для запросов, сделанных по тегу пула или по размеру.
gflags /k -spp
Следующая команда отменяет запрос для специального пула в качестве параметра реестра. Команда одинакова как для запроса по тегу пула, так и по размеру.
gflags /r -spp
При успешном выполнении команды Gflags отвечает путем вывода сообщения:
Special Pool value has been deleted.