Составители:
lpAddress - стартовый адрес захватываемого или резервируемого блока. При
резервировании блока, указанный адрес выравнивается на 64-килобайтную
границу. Если распределяется память из прежде уже зарезервированного диапазона
адресов, проводится выравнивание на границу страницы памяти. Если значение
параметра NULL, адрес начала блока определяется ОС.
dwSize - размер блока в байтах. Реально выделяется память под целое число
страниц
. Если значение параметра lpAddress равно NULL, то dwSize плюс все байты
до следующей страницы. Иначе, все страницы, содержащие адреса от lpAddress до
(lpAddress+dwSize). Т.е. если, например, захватываем блок размером в страницу, но
сос стартовым адресом смещенным от границы страницы на два байта, то реально
будут захвачены две страницы.
flAllocationType
- тип распределения. Могут указываться следующие флаги (или их
комбинации):
Флаг Значение
MEM_COMMIT
Захватывает нужное число страниц в физической памяти или в
файле подкачки. Попытка захватить уже захваченную прежде
страницу не приводит к ошибке.
MEM_RESERVE
Резервирует указанный диапазон в адресном пространстве
процесса не проводя реального захвата (распределения)
физической памяти. Этот диапазон не
может использоваться
другими операциями распределения (функции LocalAlloc,
GlobalAlloc и т.п.) до тех пор, пока не будет захвачен
последующими вызовами VirtualAlloc.
MEM_RESET
только Windows NT: Указывает, что страницы памяти из
диапазона от lpAddress до lpAddress +dwSize не будут читаться
или записываться в файл подкачки. Фдаг MEM_RESET
декларирует, что соделжимое страниц более не существенно и ОС
может перезаписывать их
содержимое.
MEM_TOP_DOWN Распределяет память по наибольшим доступным адресам.
flProtect - указывает тип защиты доступа к блоку. Если память захватывается,
могут быть указаны следующие флаги (если нужно, то совместно с флагами
PAGE_GUARD и PAGE_NOCACHE):
Флаг Значение
PAGE_READONLY
Доступ к распределенным страницам только для
чтения. Генерируется исключение "запрет доступа"
при попытке записи или выполнения страниц блока
.
PAGE_READWRITE Доступ на чтение и запись.
PAGE_EXECUTE
Разрешает доступ на запуск из адресов,
принадлежащих страницам блока. Попытка чтения
или записи в страницы блока приводит к
исключению "запрет доступа".
PAGE_EXECUTE_READ
Позволяет использовать страницы только для
запуска и чтения.
PAGE_EXECUTE_READWRITE
Позволяет запускать, читать и записывать в
страницы блока.
PAGE_GUARD Попытка записи или чтения для таких
страниц
lpAddress - стартовый адрес захватываемого или резервируемого блока. При
резервировании блока, указанный адрес выравнивается на 64-килобайтную
границу. Если распределяется память из прежде уже зарезервированного диапазона
адресов, проводится выравнивание на границу страницы памяти. Если значение
параметра NULL, адрес начала блока определяется ОС.
dwSize - размер блока в байтах. Реально выделяется память под целое число
страниц. Если значение параметра lpAddress равно NULL, то dwSize плюс все байты
до следующей страницы. Иначе, все страницы, содержащие адреса от lpAddress до
(lpAddress+dwSize). Т.е. если, например, захватываем блок размером в страницу, но
сос стартовым адресом смещенным от границы страницы на два байта, то реально
будут захвачены две страницы.
flAllocationType - тип распределения. Могут указываться следующие флаги (или их
комбинации):
Флаг Значение
Захватывает нужное число страниц в физической памяти или в
MEM_COMMIT файле подкачки. Попытка захватить уже захваченную прежде
страницу не приводит к ошибке.
Резервирует указанный диапазон в адресном пространстве
процесса не проводя реального захвата (распределения)
физической памяти. Этот диапазон не может использоваться
MEM_RESERVE
другими операциями распределения (функции LocalAlloc,
GlobalAlloc и т.п.) до тех пор, пока не будет захвачен
последующими вызовами VirtualAlloc.
только Windows NT: Указывает, что страницы памяти из
диапазона от lpAddress до lpAddress +dwSize не будут читаться
MEM_RESET или записываться в файл подкачки. Фдаг MEM_RESET
декларирует, что соделжимое страниц более не существенно и ОС
может перезаписывать их содержимое.
MEM_TOP_DOWN Распределяет память по наибольшим доступным адресам.
flProtect - указывает тип защиты доступа к блоку. Если память захватывается,
могут быть указаны следующие флаги (если нужно, то совместно с флагами
PAGE_GUARD и PAGE_NOCACHE):
Флаг Значение
Доступ к распределенным страницам только для
PAGE_READONLY чтения. Генерируется исключение "запрет доступа"
при попытке записи или выполнения страниц блока.
PAGE_READWRITE Доступ на чтение и запись.
Разрешает доступ на запуск из адресов,
принадлежащих страницам блока. Попытка чтения
PAGE_EXECUTE
или записи в страницы блока приводит к
исключению "запрет доступа".
Позволяет использовать страницы только для
PAGE_EXECUTE_READ
запуска и чтения.
Позволяет запускать, читать и записывать в
PAGE_EXECUTE_READWRITE
страницы блока.
PAGE_GUARD Попытка записи или чтения для таких страниц
Страницы
- « первая
- ‹ предыдущая
- …
- 12
- 13
- 14
- 15
- 16
- …
- следующая ›
- последняя »
