
Вопрос задан 05.07.2023 в 01:17.
Предмет Информатика.
Спрашивает Замура Екатерина.
С++. Написать программу, чтобы получить информацию о разделах жесткого диска, и о самом жестком
диске

Ответы на вопрос

Отвечает Кудуманов Алдияр.
C++Выделить код
1
2
int disk_C_v_baitax = DiskSize(3);
int disk_D_v_baitax = DiskSize(4);
"за память"...
C++Выделить код
1
2
MEMORYSTATUS MemStat;
GlobalMemoryStatus(&MemStat);
и затем:
C++Выделить код
1
2
int Fiz_pamjatj = MemStat.dwTotalPhys;
int Virtual_pamjtj_dostupna = MemStat.dwAvailVirtuality;
Типо так
1
2
int disk_C_v_baitax = DiskSize(3);
int disk_D_v_baitax = DiskSize(4);
"за память"...
C++Выделить код
1
2
MEMORYSTATUS MemStat;
GlobalMemoryStatus(&MemStat);
и затем:
C++Выделить код
1
2
int Fiz_pamjatj = MemStat.dwTotalPhys;
int Virtual_pamjtj_dostupna = MemStat.dwAvailVirtuality;
Типо так



Отвечает нейросеть ChatGpt. Будьте внимательны, ответы нейросети могут содержать ошибочные или выдуманные данные.
Для получения информации о разделах жесткого диска и о самом жестком диске в C++ вы можете использовать библиотеку Windows API (если вы работаете под Windows). Вот пример программы, которая демонстрирует, как получить такую информацию:
cpp#include <iostream>
#include <Windows.h>
#include <winioctl.h>
#include <sstream>
// Функция для вывода ошибки
void PrintError(const std::string &functionName) {
DWORD error = GetLastError();
LPVOID errorMessage;
FormatMessage(
FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM,
nullptr,
error,
0,
reinterpret_cast<LPWSTR>(&errorMessage),
0,
nullptr
);
std::wcerr << functionName << " failed with error " << error << ": " << static_cast<const wchar_t *>(errorMessage) << std::endl;
LocalFree(errorMessage);
}
int main() {
DWORD bytesReturned;
char buffer[1024];
// Получение информации о жестких дисках
if (!DeviceIoControl(
CreateFile(
L"\\\\.\\PhysicalDrive0", // Номер жесткого диска (0 для первого диска)
GENERIC_READ,
FILE_SHARE_READ | FILE_SHARE_WRITE,
nullptr,
OPEN_EXISTING,
0,
nullptr
),
IOCTL_DISK_GET_DRIVE_GEOMETRY,
nullptr,
0,
buffer,
sizeof(buffer),
&bytesReturned,
nullptr
)) {
PrintError("DeviceIoControl");
return 1;
}
DISK_GEOMETRY_EX *diskGeometry = reinterpret_cast<DISK_GEOMETRY_EX *>(buffer);
// Вывод информации о жестком диске
std::wcout << "Жесткий диск информация:" << std::endl;
std::wcout << "Тип диска: " << (diskGeometry->Geometry.MediaType == FixedMedia ? L"Жесткий диск" : L"Неизвестно") << std::endl;
std::wcout << "Размер сектора: " << diskGeometry->Geometry.BytesPerSector << " байт" << std::endl;
std::wcout << "Общий размер диска: " << diskGeometry->DiskSize.QuadPart / (1024 * 1024 * 1024) << " ГБ" << std::endl;
return 0;
}
Обратите внимание, что данный код работает только под Windows и требует прав администратора для доступа к физическому жесткому диску. Помимо этого, он использует Windows API для получения информации о диске. Если вы работаете на другой платформе, вам потребуется использовать другие библиотеки и API для получения аналогичной информации.


Похожие вопросы
Топ вопросов за вчера в категории Информатика
Последние заданные вопросы в категории Информатика
Предметы
-
Математика
-
Литература
-
Алгебра
-
Русский язык
-
Геометрия
-
Английский язык
-
Химия
-
Физика
-
Биология
-
Другие предметы
-
История
-
Обществознание
-
Окружающий мир
-
География
-
Українська мова
-
Информатика
-
Українська література
-
Қазақ тiлi
-
Экономика
-
Музыка
-
Право
-
Беларуская мова
-
Французский язык
-
Немецкий язык
-
МХК
-
ОБЖ
-
Психология
-
Физкультура и спорт
-
Астрономия
-
Кыргыз тили
-
Оʻzbek tili