Операционная система Microsoft Windows 3.1 для программиста -том 3


Листинг 2.3. Файл gmem/gmem.cpp


#define STRICT #include <windows.h> #include <windowsx.h> #include <dos.h>

#pragma argsused

int PASCAL WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpszCmdLine, int nCmdShow) { BYTE szBuf[100]; HGLOBAL hmemGlobal; HGLOBAL hmemGlDiscard; LPVOID lpvoidGlobal; LPVOID lpvoidGlDiscard; DWORD dwMaxFreeMem;

// Определяем размер доступной памяти dwMaxFreeMem = GlobalCompact(-1l);

wsprintf(szBuf, "Доступно памяти:\t%lu\n", dwMaxFreeMem); MessageBox(NULL, (LPSTR)szBuf, "Global Block", MB_OK);

// -------------------------------------------------------- // Работаем с перемещаемым блоком памяти // --------------------------------------------------------

// Дефрагментируем память для получения блока // размером 100000 байт dwMaxFreeMem = GlobalCompact(100000l);

// Заказываем буфер размером 100000 байт hmemGlobal = GlobalAlloc(GHND, 100000l);

if(hmemGlobal != NULL) { // Если буфер получен, фиксируем его в памяти lpvoidGlobal = GlobalLock(hmemGlobal); if(lpvoidGlobal != (LPVOID) NULL) { // Если блок успешно зафиксирован, // выводим значения идентификатора блока // и логический адрес блока wsprintf(szBuf, "hmemGlobal=\t%04.4X\n" "lpvoidGlobal=\t%04.4X:%04.4X", hmemGlobal, FP_SEG(lpvoidGlobal), FP_OFF(lpvoidGlobal));

MessageBox(NULL, (LPSTR)szBuf, "Global Block", MB_OK);

// ----------------------------------------- // Можно работать с полученным блоком памяти // Записываем в первый байт блока символ S *(LPSTR)lpvoidGlobal = 'S'; // -----------------------------------------

// Разрешаем перемещение блока GlobalUnlock(hmemGlobal); } else { MessageBox(NULL, "Ошибка при фиксировании блока", "Global Block", MB_OK); } // Отдаем блок памяти операционной системе GlobalFree(hmemGlobal); } else { MessageBox(NULL, "Мало памяти для перемещаемого блока", "Global Block", MB_OK); }

// -------------------------------------------------------- // Работаем с удаляемым блоком памяти // --------------------------------------------------------




Начало  Назад  Вперед



Книжный магазин