Вывести на экран карту используемой памяти компьютера
Для получения карты памяти любого процесса можно использовать следующий алгоритм:
1. С помощью функций Process32First и Process32Next получить список всех процессов в системе, запоминая их идентификаторы;
2. Выбрать из списка интересующий вас процесс;
3. Зная идентификатор процесса получить дескриптор процесса с помощью функции Open Process;
4. Зная дескриптор процесса можно получить карту памяти, используя функцию VirtualQueryEx, которая описана в лабораторной работе № 2.
Функция Open Process имеет следующий вид:
function OpenProcess( dwDesiredAccess : DWORD; bInheritHandle: BOOL; dwProcessId: DWORD):THANDLE;
dwDesiredAccess – определяет вид доступа к данному объекту. Возможные значения параметра dwDesiredAccess приведены в таблице 6.7;
bInheritHandle – флаг определяет, может ли полученный дескриптор использоваться дочерними процессами. Если bInheritHandle установить в TRUE, то дескриптор является наследуемым;
dwProcessId – идентификатор процесса.
При успешном выполнении функция OpenProcess возвращает дескриптор процесса.
Таблица 6.7 Возможные значения параметра dwDesiredAccess
Параметр dwDesiredAccess | Описание |
PROCESS_ALL_ACCESS | Устанавливает все возможные значения флагов для данного объекта |
PROCESS_CREATE_PROCESS | Дескриптор процесса будет использоваться для создания другого процесса |
PROCESS_CREATE_THREAD | Дескриптор процесса будет использоваться для создания потока, как удаленного (внедренного в другой процесс), так и локального с помощью функций CreateRemoteThread и CreateThread |
PROCESS_DUP_HANDLE | Дескриптор процесса будет использоваться для дублирования дескриптора процесса с помощью функции DuplicateHandle |
Продолжение таблицы 6.7
PROCESS_QUERY_INFORMATION | Дескриптор процесса будет использоваться для получения информации о процессе с помощью функций GetExitCodeProcess и GetPriorityClass. Этот флаг также следует использовать для получения карты памяти в приведенном выше алгоритме |
PROCESS_SET_INFORMATION | Дескриптор процесса будет использоваться для изменения класса приоритета процесса с помощью функции SetPriorityClass |
PROCESS_TERMINATE | Дескриптор процесса будет использоваться для завершения процесса с помощью функции TerminateProcess f |
PROCESS_VM_OPERATION | Дескриптор процесса будет использоваться для изменения виртуальной памяти процесса с помощью функций VirtualProtectEx и WriteProcessMemory |
PROCESS_VM_READ | Дескриптор процесса будет использоваться для чтения содержимого виртуальной памяти процесса с помощью функции ReadProcessMemory |
PROCESS_VM_WRITE | Дескриптор процесса будет использоваться для записи в виртуальную память процесса с помощью функции WriteProcessMemory |
SYNCHRONIZE | Дескриптор процесса будет использоваться для ожидания завершения процесса с помощью Wait-функций |
Пример использования функций ToolHelp
Пример приложения, использующего функции ToolHelp приведен на рисунке 6.1. Данное приложение выводит на экран список всех процессов и список всех модулей в системе.
Для создания данного приложения выполните следующие действия:
1. Перенесите на форму компоненты, перечисленные в таблице 6.8.
Таблица 6.8 Компоненты создаваемого приложения
Компонент | Класс | Описание |
Button1 | TButton | Командная кнопка «Завершение работы» |
Button2 | TButton | Командная кнопка «Обновить» |
Button3 | TButton | Командная кнопка «Процессы/Модули» |
StringGrid1 | TStringGrid | Таблица |
2. В блок Uses включите файл tlhelp32:
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, Grids, StdCtrls, Buttons,tlhelp32;
Упражнение 1
Используя команды MS DOS, необходимо:
1.************** Просмотреть иерархическую структуру диска С:.
2.************** Создать в своем каталоге на диске D: подкаталог VERS.
3.************** Создать текстовый файл my_text1.txt. с произвольным текстом в 4…5 строк.
4.************** Скопировать файл my_text1.txt с именем my_text2.txt.
5.************** Просмотреть содержимое файла my_text1.txt.
6.************** Перейти на диск D: в подкаталог OBUCH\DOSHELP.
7.************** Скопировать в подкаталог VERS все файлы из подкаталога OBUCH\DOSHELP с расширением .dat.
8.************** Очистить экран.
9.************** Вывести на экран номер версии DOS.
10.********* Соединить файлы my_text1.txt и my_text2.txt в файл add.dat.
11.********* Переименовать my_text2.txt в text2.dat.
12.********* Вывести на экран текущую дату.
13.********* Вывести на экран текущее время.
14.********* Удалить с диска D: подкаталог VERS.
Упражнение 2
1.**** Создать на диске D: в каталоге USERS в подкаталоге 11-TE подкаталог BYDANS.
2.**** Скопировать в подкаталог BYDANS все файлы с расширением .dat из подкаталога OBUCH\DOSHELP диска D:.
3.**** Удалить из подкаталога BYDANS файл DHELP6.DAT.
4.**** Скопировать в подкаталог BYDANS файл readme.txt подкаталога DD2 каталога OBUCH диска D:.
5.**** Переименовать файл readme.txt в подкаталоге BYDANS в файл msvopr.
6.**** Просмотреть содержимое файла msvopr.
7.**** Сравнить файл msvopr из подкаталога BYDANS с файлом D:\OBUCH\DD2\README.TXT.
8.**** Вывести на экран карту используемой памяти компьютера.
9.**** Вывести на экран иерархическую структуру диска С:.
10. Удалить подкаталог BYDANS.
11. Вывести на экран метку диска D:.
Упражнение 3
1.**** Перейти на диск С:.
2.**** Просмотреть иерархическую структуру диска С:.
3.**** Создать на диске D: в каталоге USERS в подкаталоге 11-TE подкаталог DRIMTON.
4.**** Скопировать в подкаталог DRIMTON каталог OBUCH\DD диска D:.
5.**** Удалить из скопированного подкаталога все файлы с расширением .exe.
6.**** Просмотреть содержимое файла readme.txt подкаталога OBUCH\DD2 диска D:.
7.**** Скопировать файл readme.txt подкаталога OBUCH\DD2 диска D: в подкаталог DRIMTON.
8.**** Переименовать файл readme.txt.
9.**** Удалить с диска D: переименованный файл.
10.Удалить подкаталог DRIMTON.
11. Очистить экран.
Упражнение 4
1.**** Создать на диске D: в каталоге USERS в подкаталоге 11-TE подкаталог VERS.
2.**** Вывести на экран номер версии MSDOS.
3.**** Просмотреть иерархическую структуру диска D:.
4.**** Очистить экран.
5.**** Перейти на диске D: в подкаталог OBUCH\DOSHELP.
6.**** Скопировать в подкаталог VERS все файлы из подкаталога OBUCH\DOSHELP с расширением .dat.
7.**** Очистить экран.
8.**** Просмотреть содержимое файла readme.txt подкаталога OBUCH\DD2 диска D:.
9.**** Вывести на экран текущую дату.
10.Вывести на экран карту оперативной памяти компьютера.
11.Удалить подкаталог VERS.
Упражнение 5
1.**** Создать на диске D: в каталоге USERS в подкаталоге 11-TE подкаталог UNION.
2.**** Скопировать в него все файлы с именем trk из подкаталога OBUCH\TRK диска D:.
3.**** Вывести на экран текущее время.
4.**** Вывести на экран содержимое корневого каталога диска С:.
5.**** Перейти в подкаталог DD2 каталога OBUCH диска D:.
6.**** Скопировать файл readme.txt подкаталога OBUCH\DD2 диска D: в подкаталог UNION.
7.**** Переименовать файл readme.txt.
8.**** Просмотреть содержимое переименованного файла.
9.**** Вывести на экран иерархическую структуру диска D:.
10.Удалить подкаталог UNION.
Контрольные По-Информатике запись закреплена
2. Скопировать в него все файлы с именем win из подкаталога C:\Windows:.
3. Вывести на экран текущее время.
4. Вывести на экран содержимое корневого каталога диска С:.
5. Перейти в подкаталог System32 каталога Windows диска C:.
6. Скопировать все файлы с именем services подкаталога System32 диска D: в подкаталог FamiliaStudenta.
8. Переименовать файл readme.txt.
9. Просмотреть содержимое переименованного файла.
10. Вывести на экран иерархическую структуру диска D:.
11. Удалить подкаталог подкаталоги FamiliaStudenta и ImyaStudenta.
Задание 2. Создание BAT-файлов
1. Создать каталог FamiliaStudenta в каталоге c:\temp
· Варианты 1и 7. В 2 или более столбца с сортировкой по расширению файлов и выводом времени последнего доступа к файлу.
· Варианты 2 и 8. С выводом только имен файлов с обратной сортировкой по дате
· Варианты 3и 9. С дополнительным выводом коротких DOS-имен файлов с сортировкой по размеру
· Варианты 4 и 0. С выводом имен файлов в крайнем левом столбце с обратной сортировкой по расширению
· Варианты 5. В несколько столбцов с сортировкой по размеру файлов и выводом коротких DOS-имен файлов
· Варианты 6. С выводом коротких DOS-имен файлов в нижнем регистре и с обратной сортировкой по размеру
3. Вывести на экран средствами командной строки содержимое BAT-файла и снять копию экрана. Копию экрана вставить в отчет.
Задание 3. Знакомство с сетевыми командами
Выбрать 3-4 наиболее распространенные сетевые команды и записать их в BAT-файл с Вашим именем в нужном порядке. BAT-файл выслать преподавателю. Быть готовым на зачете (экзамене) объяснить свой выбор.
Вывести на экран средствами командной строки содержимое этого файла и снять копию экрана. Копию экрана вставить в отчет.
Выводит на экран объем используемой и свободной памяти. Применяется для вывода информации о распределенных областях памяти, свободных областях и загруженных в память программах.
Для вывода состояния используемой и свободной памяти дайте команду MEM без параметров.
Параметр /CLASSIFY перечисляет загруженные в память программы и показывает, сколько используется обычной и старшей памяти. MEM /CLASSIFY подсчитывает также общий объем используемой памяти и выводит наибольшие свободные блоки. /CLASSIFY можно сократить до /C.
/DEBUG выводит список загруженных в память программ и внутренних драйверов. Показывает размер каждого модуля, адрес сегмента и тип модуля, подсчитывает общий объем используемой памяти и выводит другую полезную для программирования информацию. /DEBUG (сокращенно /D) можно использовать в сочетании с /PAGE, но не с другими параметрами MEM.
Параметр /FREE (сокращенно /F) выводит список свободных областей обычной и старшей памяти. MEM /FREE показывает адрес сегмента и размер каждой свободной области обычной памяти, а также наибольший свободный блок в каждой области старшей памяти. Суммирует используемую память.
/MODULE имя_модуля показывает, как использует память программный модуль (имя указывается обязательно). Выводит список областей памяти, выделенных данной программе, и их размеры. /MODULE можно сократить до /M.
Параметры /C, /F и /M можно использовать в сочетании с /PAGE, но не друг с другом.
Параметр /PAGE делает паузу после вывода каждого экрана. Чтобы автоматически добавить параметр /PAGE к команде MEM, можно использовать программу DOSKEY. Для этого включите в AUTOEXEC.BAT команды:
О проверке памяти на диске рассказывается в описании команды CHKDSK.
MS-DOS выводит информацию о дополнительной памяти только при ее установке в системе. Состояния расширенной памяти показывается только при наличии расширенной памяти, согласующейся с версией 4.0 LIM EMS. Состояние старшей памяти MS-DOS выводит только при установке программы работы с блоками UMB (типа EMM386) и включении в CONFIG.SYS команды DOS=UMB. При выполнении Windows версии 3.0 состояние старшей памяти не выводится.
В выводимой командой MEM информации "Adapter RAM/ROM" представляет собой память в подключаемых платах (типа видеоадаптера). "Largest executable program size" - это наибольший непрерывный блок доступной для программы обычной памяти, "Largest free upper memory block" - наибольшая доступная для программы область старшей памяти. "MS-DOS is resident in the high memory area" указывает, что MS-DOS работает в первых 64K дополнительной памяти, а не в обычной памяти.
Некоторые программные модули, такие как WIN386, распределяют несколько областей памяти. Команда MEM /MODULE выводит все области, выделенные для конкретной программы, с их размерами и адресами сегментов. Для блоков старшей памяти MEM /MODULE показывает также номер области. В столбце Type показывается, как программа использует конкретную область памяти. В графе "total size," выводится общий объем памяти, выделенной MS-DOS для программы.
В Windows 10 понимание всех технических характеристик памяти, также называемой ОЗУ (оперативной памятью), установленной на вашем компьютере, может пригодиться во многих случаях. Например, если ваш компьютер работает медленно из-за требовательных к памяти приложений или игр, добавление большего объема памяти может улучшить общую производительность. А знание спецификаций ОЗУ может помочь определить правильный размер, скорость и марку для покупки совместимого комплекта обновления.
Если у вас возникли проблемы, имя производителя, номер детали и серийный номер могут помочь связаться со службой технической поддержки и устранить проблему. Или заказать точную замену, которая работает с вашей системой. Кроме того, при настройке параметров памяти в базовой системе ввода/вывода (BIOS) или в унифицированном расширяемом интерфейсе прошивки (UEFI) возможность просмотра информации модуля памяти поможет вам понять, правильно ли была применена конфигурация.
Какой бы ни была причина, Windows 10 может предоставить всю информацию о памяти, которую вам нужно знать. И это без необходимости открывать корпус или устанавливать сторонние инструменты.
В этом руководстве по Windows 10 мы расскажем, как определить технические характеристики оперативной памяти, установленной на вашем компьютере, включая производителя, номер детали, серийный номер, скорость, емкость, форм-фактор, тип памяти и т.д.
Примечание. Хотя вы можете получить подробную информацию о конфигурации оперативной памяти вашего устройства, в зависимости от аппаратного обеспечения, некоторые сведения могут быть недоступны.
Информация об оперативной памяти в командной строке
Если вы подозреваете, что диспетчер задач показывает неточную информацию об оперативной памяти, или вы хотите узнать больше деталей, таких как серийный номер, номер детали, производитель и другие сведения о каждом модуле памяти, вы можете использовать эти команды.
Проверка серийного номера памяти
Чтобы узнать серийный номер каждого модуля карты памяти, выполните следующие действия:
-
от имени администратора.
Введите следующую команду, чтобы получить серийный номер для каждой карты памяти, и нажмите Enter : wmic memorychip get devicelocator, serialnumber
Подсказка: в команде вы также можете заменить «devicelocator» на «banklabel», чтобы получить серийный номер, показывающий физическую метку слота, в котором находится память на материнской плате.
Проверка объёма памяти
Используя командную строку, вы можете определить общую емкость для отдельного модуля и всей системы.
Емкость модуля памяти
Чтобы определить емкость каждого модуля памяти, выполните следующие действия:
-
от имени администратора.
Введите следующую команду, чтобы узнать объем каждого модуля памяти, и нажмите Enter : wmic memorychip get devicelocator, capacity
Совет: информация отображается в байтах, но вы можете использовать только первые две цифры, чтобы получить примерную емкость в ГБ, или разделить число на 1073741824 (1 гигабайт в байтах), чтобы получить точную информацию.
Общий объём системной памяти
Кроме того, вы можете быстро определить общий объем оперативной памяти, установленной на вашем компьютере, выполнив следующие действия:
-
от имени администратора.
Введите следующую команду, чтобы определить общий объем физической памяти, и нажмите Enter : systeminfo | findstr /C:"Полный объем физической памяти"
Проверка скорости памяти
Чтобы подтвердить скорость работы модулей памяти, выполните следующие действия:
-
от имени администратора.
Введите следующую команду, чтобы определить скорость памяти, и нажмите Enter : wmic memorychip get devicelocator, speed
Проверка кодового названия памяти
Чтобы узнать код каждого модуля памяти, выполните следующие действия:
-
от имени администратора.
Введите следующую команду, чтобы определить кодовый номер памяти, и нажмите Enter : wmic memorychip get devicelocator, partnumber
Проверка производителя
Чтобы определить компанию (марку), которая произвела модули памяти, установленные на вашем компьютере, выполните следующие действия:
-
от имени администратора.
Введите следующую команду, чтобы определить имя производителя памяти и нажмите Enter : wmic memorychip get devicelocator, manufacturer
Проверка форм-фактора памяти
Чтобы определить, являются ли модули оперативной памяти форм-фактором DIMM или SODIMM, выполните следующие действия:
-
от имени администратора.
Введите следующую команду, чтобы определить скорость памяти, и нажмите Enter : wmic memorychip get devicelocator, formfactor
Вот список форм-факторов, которые команда может идентифицировать:
Проверка всех деталей памяти
Вышеприведенные команды позволяют определить наиболее важную информацию о модулях. Если вы хотите узнать все подробности, используйте следующие шаги:
-
от имени администратора.
Введите следующую команду, чтобы просмотреть все детали памяти и нажмите Enter : wmic memorychip list full
После того, как вы выполните эти шаги, у вас будет огромное количество информации о модулях RAM, установленных на вашем компьютере. Всё это пригодится при устранении неполадок, настройке конфигурации (например, при разгоне) или при планировании обновления системной памяти для повышения производительности.
Читайте также: