Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Ответ - Екзаменаційні питання з курсу ОС.doc
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
2 Мб
Скачать
☆

Функция GetTickCount

Функция GetTickCount из библиотеки Kernel32.dll возвращает количество миллисекунд, прошедшее с момента запуска системы. Минимальный интервал времени в Windows - около 55 миллисекунд. Вот её прототип:

DWORD GetTickCount(VOID)

Объявление функции в Visual FoxPro:

DECLARE Long GetTickCount IN WIN32API

Пример вызова функции из вашего приложения:

nMilliSeconds = GetTickCount()

Функция GlobalMemoryStatus

Функция GlobalMemoryStatus из библиотеки Kernel32.dll предоставляет информацию об использовании физической и виртуальной памяти компьютера. Вот её прототип:

VOID GlobalMemoryStatus(

LPMEMORYSTATUS lpBuffer // Адрес структуры MemoryStatus

);

Тип данных LPMEMORYSTATUS - это указатель на структуру MemoryStatus:

typedef struct _MEMORYSTATUS {

DWORD dwLength; // Размер структуры

DWORD dwMemoryLoad; // Процент использования памяти

DWORD dwTotalPhys; // Физическая память, байт

DWORD dwAvailPhys; // Свободная физическая память, байт

DWORD dwTotalPageFile; // Размер файла подкачки, байт

DWORD dwAvailPageFile; // Свободных байт в файле подкачки

DWORD dwTotalVirtual; // Виртуальная память, используемая процессом

DWORD dwAvailVirtual; // Свободная виртуальная память

} MEMORYSTATUS, *LPMEMORYSTATUS;

Функция не возвращает никаких значений. Вот её объявление в Visual FoxPro:

DECLARE GlobalMemoryStatus IN WIN32API String @ MemoryStatus

В следующем примере показан код функции GlobalMemory, которая вызывает Windows API функцию GlobalMemoryStatus и заполняет массив taMemoryStatus данными из структуры MemoryStatus:

FUNCTION GlobalMemory

PARAMETERS taMemoryStatus

EXTERNAL ARRAY taMemoryStatus

DIMENSION taMemoryStatus[7]

LOCAL lcMemoryStatus

DECLARE GlobalMemoryStatus IN WIN32API String @

lcMemoryStatus = CHR(32) + REPLICATE(CHR(0), 31) && Подготовка структуры

GlobalMemoryStatus(@lcMemoryStatus)

taMemoryStatus[1] = CTOBIN(SUBSTR(lcMemoryStatus,5,4), '4RS')

taMemoryStatus[2] = CTOBIN(SUBSTR(lcMemoryStatus,9,4), '4RS')

taMemoryStatus[3] = CTOBIN(SUBSTR(lcMemoryStatus,13,4), '4RS')

taMemoryStatus[4] = CTOBIN(SUBSTR(lcMemoryStatus,17,4), '4RS')

taMemoryStatus[5] = CTOBIN(SUBSTR(lcMemoryStatus,21,4), '4RS')

taMemoryStatus[6] = CTOBIN(SUBSTR(lcMemoryStatus,25,4), '4RS')

taMemoryStatus[7] = CTOBIN(SUBSTR(lcMemoryStatus,29,4), '4RS')

RETURN

ENDFUNC

Структура MemoryStatus формируется в переменной lcMemoryStatus. В первое поле структуры заносится значение её длины (32 байта). Остальные поля заполняются нулями. 

После выполнения функции GlobalMemoryStatus структура MemoryStatus "расшифровывается" при помощи функции CTOBIN.

Пример вызова функции GlobalMemory из вашего приложения:

LOCAL lcInfo, laMemoryStatus[1]

DECLARE GlobalMemoryStatus IN WIN32API String @

GlobalMemory(@laMemoryStatus)

lcInfo = 'Физическая память, байт: ' + LTRIM(STR(laMemoryStatus[2])) + ;

', свободно: ' + LTRIM(STR(laMemoryStatus[3])) + CHR(13) + ;

'Виртуальная память, байт: ' + LTRIM(STR(laMemoryStatus[6])) + ;

', свободно: ' + LTRIM(STR(laMemoryStatus[7]))

= MESSAGEBOX(lcInfo)