Важно прочитать это в контексте.
Атрибут защиты, связанный с регионом, не влияет на зафиксированное хранилище, сопоставленное региону.
имел в виду резервирование , а не фиксациюрегионов.
Зарезервированная страница не имеет резервного хранилища, поэтому ее защита всегда концептуально PAGE_NOACCESS, независимо от того, что вы передаете VirtualAlloc .Т.е., если поток пытается прочитать / записать адрес в зарезервированном регионе, возникает нарушение прав доступа.
Из связанной статьи:
Зарезервированные адреса всегда PAGE_NOACCESS, по умолчаниюобеспечивается системой независимо от того, какое значение передается функции.Зафиксированные страницы могут быть доступны только для чтения, чтения-записи или отсутствия доступа.
Re:
- Где именно хранится атрибут защиты для зарезервированногорегион и выделенное хранилище, соответственно?
Атрибуты защиты для областей виртуальных адресов хранятся в дереве VAD для каждого процесса.(VAD == Дескриптор виртуального адреса, см. Внутренние компоненты Windows или связанную статью)
Поскольку рекомендуется использовать один и тот же атрибут защиты как для резервирования, так и для фиксации, почему Windowsвсе еще предлагаете нам возможность использовать другой атрибут?Разве это не ошибочно и не парадоксально?
Поскольку функция всегда принимает параметр защиты, но ее поведение зависит от fdwAllocationType
.Защита имеет смысл только для выделенного хранилища.
Причина, по которой Рихтер предлагает использовать один и тот же параметр защиты, по-видимому, заключается в том, что меньшее количество изменений флагов защиты в регионе означает меньшее количество «блоков» (см. Определение в вашей книге) и, следовательно,меньшее дерево AVL для VAD.Т.е., если все страницы в регионе зафиксированы с одинаковыми флагами, будет только 1 блок.В противном случае может быть столько блоков, сколько страниц в регионе.И вам нужен VAD для каждого блока (не страницы).
Блок == набор последовательных страниц с идентичной защитой / состоянием.
Если атрибут защиты, связанный с регионом, имеетне влияет на выделенное хранилище, зачем оно нам нужно?
Как указано выше.