Имя пользователя:
Пароль:
 

Показать сообщение отдельно

Ветеран


Сообщения: 3320
Благодарности: 916

Профиль | Отправить PM | Цитировать


stasmd да, так MemInfo.dwLength:=SizeOf(TMemoryStatus); будет более читабельно. Это же касается и приведённого кода для видео - lpDisplayDevice.cb := sizeof(TDisplayDevice);
Хоть основное внимание в предыдущем посте было уделено уточнению комментария, объясняющему данную строку в первом посте.

Обновлённый код не меняет утверждение
Цитата:
функция (EnumDisplayDevices) не предназначена для получения количества видеопамяти
Что за константа 524280?
1024*1024 = 1048576 (это если константа выше призвана переводить из байтов в МБ, то откуда она именно такая?)
StateFlags - означает, как это ни банально, статус устройства вывода и может быть комбинацией значений
DISPLAY_DEVICE_ACTIVE\DISPLAY_DEVICE_MIRRORING_DRIVER\DISPLAY_DEVICE_MODESPRUNED\DISPLAY_DEVICE_PRIM ARY_DEVICE\DISPLAY_DEVICE_REMOVABLE\DISPLAY_DEVICE_VGA_COMPATIBLE
DISPLAY_DEVICE Structure
В данном случаи в StateFlags - 256*524280 = 134215680. Но так как 524280 не делит истинное значение без остатка, на самом деле StateFlags содержит 134217733 и означает
Код: Выделить весь код
DISPLAY_DEVICE_ACTIVE
DISPLAY_DEVICE_MODESPRUNED
DISPLAY_DEVICE_PRIMARY_DEVICE

Последний раз редактировалось Admiral, 23-12-2009 в 17:53.


Отправлено: 17:32, 23-12-2009 | #4