Данные на этой странице не

Данные на этой странице не

Создание эффективных Win32-приложений - ДЖ. Рихтер

Рис. 15-1. продолжение

if (MessageBox(NULL, TEXT("Do you want to access this data later?"), szAppName, MB_YESNO) == IDNO) {

// Мы хотим сохранить эту страницу физической памяти в нашем // процессе, но ее данные нас больше не интересуют.

// Скажем системе, что данные на этой странице не изменялись.

// Примечание: поскольку MEM_RESET разрушает данные, VirtualAlloc округляет // параметры с базовым адресом и размером до наиболее безопасных значений. // Вот пример:

// VirtualAlloc(pvData, 5000, MEM_RESET, PAGE_READWRITE)

// сбросит 0 страниц на процессорах с размером страниц более 4 Кб // и 1 страницу на процессорах с четырехкилобайтовыми страницами.

// Поэтому, чтобы вызов VirtualAlloc всегда был успешным, надо // сначала вызвать VirtualQuery и определить точный размер страницы.

MEMORY_BASIC_INFORMATION mbi;

VirtualQuery(pszData, &mbi, sizeof(mbi));

VirtualAlloc(pszData, mbi.RegionSize, MEM_RESET, PAGE_READWRITE);

}

// передаем объем памяти, равный размеру оперативной памяти MEMORYSTATUS mst;

GlobalMemoryStatus(&mst);

PVOID pvDummy = VirtualAlloc(NULL, mst.dwTotalPhys,

MEM_RESERVE | MEM_COMMIT, PAGE_READWRITE);

// изменяем содержимое всех страниц в регионе, чтобы все страницы,

// модифицированные в оперативной памяти, записывались в страничный файл ZeroMemory(pvDummy, mst.dwTotalPhys);

// сравниваем нашу страницу данных с тем,

// что было записано туда изначально if (lstrcmp(pszData, szTestData) == 0) {

// Данные на этой странице совпали с тем, что мы туда записывали.

// Функция ZeroMemory заставила систему записать нашу // страницу в страничный файл.

MessageBox(NULL, TEXT("Modified data page was saved."), szAppName, MB_OK);

} else {

// Данные на этой странице не совпадают с тем, что мы туда записывали.

// ZeroMemory не заставила систему записать измененную страницу // в страничный файл.

MessageBox(NULL, TEXT("Modified data page was NOT saved."), szAppName, MB_OK);

Новости

все
25.07.2012
Главный инспектор аэрокосмического агентства США, НАСА, сообщил о расследовании скандального
24.07.2012
Анонсированы Leica M9 и X1: карманный FF и APS-C с фиксом Для тех, кто не желает таскать с
23.07.2012
Скоро беспроводная сеть позволит посмотреть сквозь стену? Видеть сквозь препятствия –

Дизайны

Разработали структуру сайта, создали сайт, соответствующий всем требованиям заказчика. Создали
Разработали структуру сайта, создали сайт по новым технологиям. Создали индивидуальный и
ООО Транспортная Компания «ТрансРусь» предлагает Вам свои услуги по приемке и