Форум программистов, компьютерный форум, киберфорум
C/C++: WinAPI
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.92/12: Рейтинг темы: голосов - 12, средняя оценка - 4.92
1 / 1 / 0
Регистрация: 20.10.2017
Сообщений: 14

Работа с дисками WinAPI

20.12.2020, 09:12. Показов 2569. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день или ночь всем пользователям. Хотел бы задать несколько вопросов:

1)Мне нужно открыть диск как файл

2)Считать МБР

3)Организовать цикл по просмотру PT

Что я выяснил на данном этапе. Первое, что я делаю это Createfile, второе считываю 512 байт в буффер ибо МБР находится в первых 512 байтах(Правильно что я выбрал BYTE а не LPVOID для буфера?). Элементы PT находятся после 446 байтов в мбр, чето-такое. Строка в цикле "out << i << "\t" << f << "\t" << buff[i] << '\n';" выдает "0 cc М" и так все 512 итераций.

И что мне делать дальше?

Я вот хочу для промежуточного результата выяснить что я там считал и что там в буфере хранится, чтобы поэтапно все понять.

Правильно ли я все сделал до этого?

Прошу, блин, я уже неделю читаю статьи, а понимание все не приходит.

C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
int main() {
 
 
    HANDLE hDevice;
    //LPVOID buff[512];
    int i, j;
    byte buff[512];
    //TCHAR szDrive[] = _T(" A");
    //LPSTR buffer = (CHAR*)calloc(SIZE_BUFFER + 1, sizeof(CHAR));
    DWORD dwBytesRead = 0;
    hDevice = CreateFile(L"\\.\PHYSICALDRIVE1", GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
    
    
    BOOL result = ReadFile(hDevice, buff, sizeof(buff), &dwBytesRead, NULL);
    
 
 
    //DWORD dwRead;
    //if (!::ReadFile(hDevice, buf, sizeof(buf), &dwRead, NULL) || dwRead != sizeof(buf)) throw win_error();
    //CloseHandle(hDevice);
 
    /*ofstream out("1.txt");
    for (int i = 0; i < 512; i++)
    {
        char f[3];  _itoa(buff[i], f, 16);
        out << i << "\t" << f << "\t" << buff[i] << '\n';
        cout << buff[i];
    }
    out.close();
    system("1.txt");*/
    //cin.get();
 
    CloseHandle(hDevice);
        
    return 0;
}
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
20.12.2020, 09:12
Ответы с готовыми решениями:

Работа с дисками с использованием функций API
Разработать программу, использующую стандартные функции API, для индикации следующих показателей файловой системы: Определение количество...

Командная строка, работа с дисками удаленного компа
Приветствую, пишу небольшую утилитку для работы с сетью и сетевыми дисками, и столкнулся с таким непонятным глюком. Пытаюсь через программу...

Работа с дисками
Здравствуйте! Помогите пожалуйста с заданием &quot;найти общий объем диска&quot;. Поделитесь кодом пожалуйста как это сделать. Заранее...

6
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
20.12.2020, 13:02
Лучший ответ Сообщение было отмечено HateAllPeople как решение

Решение

Цитата Сообщение от HateAllPeople Посмотреть сообщение
Прошу, блин, я уже неделю читаю статьи, а понимание все не приходит.
Для начала - L"\\\\.\\PHYSICALDRIVE1". Предупреждения компилятора ты не смотришь?
0
1 / 1 / 0
Регистрация: 20.10.2017
Сообщений: 14
20.12.2020, 20:37  [ТС]
Дело в том, что компилятор выдает 1 предупреждение.

Предупреждение C28193 "result" содержит значение, которое необходимо проверить.

Я добавляю 2 слэша, ничего не происходит
0
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
20.12.2020, 20:41
Цитата Сообщение от HateAllPeople Посмотреть сообщение
Я добавил 2 слэша, ничего не поменялось.
Во первых, там всего там трёх слэшей не хватало. Во-вторых, после этого CreateFile должен отрабатывать без ошибки. Ты проверяешь, что он вернул, чему равен hDevice?
0
1 / 1 / 0
Регистрация: 20.10.2017
Сообщений: 14
20.12.2020, 20:57  [ТС]
ДА! Извините за затупы, я еще путаюсь да и вообще не понимаю смысл этих слешей и какое их кол-во на что влияет. Смотрите что теперь имеем:

hDevice = 000000C8

3└О╨╝ |О└О╪╛ |┐ ╣ №єдPh╦√╣ ╜╛А~ | ЕГ┼тё═ИV U╞F╞F ┤A╗кU═]rБ√Uкu ў┴ t■Ff`А~ t&fh f h h |h h ┤BКV ЛЇ═ЯГ─Юы╕╗ |КV КvКNКn═fas■Nu А~ АДК ▓АыДU2фКV ═]ыЮБ>■}Uкun v шН u·░╤цdшГ ░▀ц`ш| ░ цdшu √╕ ╗═f#└u;fБ√TCPAu2Б∙r,fh╗ fh  f fSfSfUfh fh | fah ═Z2Ўъ | ═а╖а╢ыа╡2ф ЛЁм< t ╗ ┤═ыЄЇы¤+╔фdы $р°$├Invalid partition table Error loading operating system Missing operating system c{ЪФ,  ю    пDЄ

тут чтоли аски или юникод барахлит?(чисто мое ламерское предположение)

Добавлено через 56 секунд
ДА! Извините за затупы, я еще путаюсь да и вообще не понимаю смысл этих слешей и какое их кол-во на что влияет. Смотрите что теперь имеем:

hDevice = 000000C8

3└О╨╝ |О└О╪╛ |┐ ╣ №єдPh╦√╣ ╜╛А~ | ЕГ┼тё═ИV U╞F╞F ┤A╗кU═]rБ√Uкu ў┴ t■Ff`А~ t&fh f h h |h h ┤BКV ЛЇ═ЯГ─Юы╕╗ |КV КvКNКn═fas■Nu А~ АДК ▓АыДU2фКV ═]ыЮБ>■}Uкun v шН u·░╤цdшГ ░▀ц`ш| ░ цdшu √╕ ╗═f#└u;fБ√TCPAu2Б∙r,fh╗ fh  f fSfSfUfh fh | fah ═Z2Ўъ | ═а╖а╢ыа╡2ф ЛЁм< t ╗ ┤═ыЄЇы¤+╔фdы $р°$├Invalid partition table Error loading operating system Missing operating system c{ЪФ,  ю    пDЄ

тут чтоли аски или юникод барахлит?(чисто мое ламерское предположение)
0
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
20.12.2020, 20:59
Цитата Сообщение от HateAllPeople Посмотреть сообщение
тут чтоли аски или юникод барахлит?(чисто мое ламерское предположение)
Ни то, ни другое. Это бинарные данные.
0
1 / 1 / 0
Регистрация: 20.10.2017
Сообщений: 14
20.12.2020, 20:59  [ТС]
но в любом случае эти сообщения не радуют что - то меня

Invalid partition table
Error loading operating system
Missing operating system
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
20.12.2020, 20:59
Помогаю со студенческими работами здесь

Работа с дисками
try { DriveInfo driveinfo = DriveInfo.GetDrives(); foreach (DriveInfo drive in driveinfo)...

Работа с дисками
Откровенно говоря, я сам не уважаю когда люди просят сделать все за них, но в данном случае меня вынуждает ситуация - абсолютная нехватка...

Работа с дисками
Доброго времени суток. Есть HHD и SSD , накинул на SSD винду , но когда гружусь с системы , которая на SSD ноут не видит HDD как будто...

Работа с дисками
Подскажите пожалуйста чем можно в семерке корректно работать с разделами - делить, сливать, проверять диски и прочее. На повестке дня цель...

Работа с сетевыми дисками
Господа, доброго времени суток. Допек себя до того, что никак не могу без внедрения на форум решить один вопрос =) Ситуация такая,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru