Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
RDBSS предоставляет ряд подпрограмм, используемых для выделения пула. Обычно эти подпрограммы вызываются с помощью макросов, а не путем вызова этих подпрограмм напрямую. Макросы автоматически обрабатывают различия между розничными и проверенными сборками.
В проверенной сборке эти подпрограммы были разработаны для добавления оболочки вокруг нормального выделения ядра и бесплатных подпрограмм. Эти оболочки для выделения пула и бесплатные подпрограммы предоставляют дополнительные сведения об отладке и вызывают набор подпрограмм, которые выполняют различные виды проверки и защиты перед вызовом выделения пула ядра и бесплатных подпрограмм. Однако эти функции в настоящее время не реализованы в этих подпрограммах выделения и бесплатных, но могут быть добавлены в будущих выпусках.
On a free build, these routines become direct calls to the kernel allocation and free routines, ExAllocatePoolWithTag and ExFreePool.
В следующей таблице перечислены выделение пула RDBSS и бесплатные подпрограммы.
| Routine | Description |
|---|---|
Эта подпрограмма выделяет память из пула с четырьмя байтами тега в начале блока, который может помочь перехватывать проблемы с памятью. It is recommended that the RxAllocatePoolWithTag macro be called instead of using this routine directly. |
|
Эта подпрограмма проверяет блок памяти для специальной подписи заголовка RX_POOL_HEADER. Обратите внимание, что драйвер мини-перенаправления сети должен добавить этот специальный блок подписи в память, выделенную для использования подпрограммы. Эта подпрограмма не должна использоваться, так как этот специальный блок заголовка не реализован. |
|
Эта подпрограмма освобождает пул памяти. It is recommended that the RxFreePool macro be called instead of using this routine directly. |
A number of macros, which are defined in the ntrxdef.h header file, call these routines. Вместо вызова подпрограмм, перечисленных в предыдущей таблице напрямую, обычно используются следующие макросы.
| Macro | Description |
|---|---|
RxAllocatePoolWithTag (type, size, tag) |
При проверенных сборках этот макрос выделяет память из пула с тегом четырехбайтов в начале блока, который может помочь перехватывать экземпляры корзины памяти. On retail builds, this macro becomes a direct call to ExAllocatePoolWithTag. |
RxCheckMemoryBlock (ptr) |
При проверенных сборках этот макрос проверяет блок памяти для специальной подписи заголовка RX_POOL_HEADER. В розничных версиях этот макрос ничего не делает. |
RxFreePool (ptr) |
При проверке сборки этот макрос освобождает пул памяти. On retail builds, this macro becomes a direct call to ExFreePool. |