Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Alik-Soldier
9 / 9 / 0
Регистрация: 01.05.2009
Сообщений: 127
#1

HardDisk - C++

09.12.2009, 23:16. Просмотров 350. Ответов 5
Метки нет (Все метки)

Здрвствуйте.
Есть вот такой код:
C++
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
bool Function{
    HANDLE HardDisk;
    DISK_GEOMETRY gdg;
    bool result = false;
    HardDisk = CreateFile(
        ("\\\\.\\PhysicalDrive0"),
        0,
        FILE_SHARE_READ | FILE_SHARE_WRITE,
        NULL,
        OPEN_EXISTING,
        0,
        NULL);
    if(HardDisk == INVALID_HANDLE_VALUE)
        return false;
    DWORD BytesReturned = 0;
    result = DeviceIoControl(
        HardDisk,
        IOCTL_DISK_GET_DRIVE_GEOMETRY,
        NULL,
        0,
        &gdg,
        sizeof(&gdg),
        &BytesReturned,
        (LPOVERLAPPED)NULL);
    CloseHandle(HardDisk);
    return result;
}
Компилируется без ошибок,но result по выходе из функции имеет значение false. Подскажите,что здесь не так?
Спасибо.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.12.2009, 23:16     HardDisk
Посмотрите здесь:

Сброс пароля harddisk security c HDD HITACHI, что делать?
Boot from bbs-harddisk

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Harlequin
 Аватар для Harlequin
41 / 41 / 4
Регистрация: 08.11.2009
Сообщений: 167
09.12.2009, 23:57     HardDisk #2
msdn не смотрел?

там написано про результат DeviceIoControl:
If the operation completes successfully, the return value is nonzero.
If the operation fails or is pending, the return value is zero. To get extended error information, call GetLastError.
Так что смари GetLastError
Alik-Soldier
9 / 9 / 0
Регистрация: 01.05.2009
Сообщений: 127
10.12.2009, 11:46  [ТС]     HardDisk #3
Смотрел конечно...Пишет, что выходной массив слишком маленький... Но выходной массив - это gdg,то есть переменная типа структуры DISK_GEOMETRY... И я не могу понять, что сделать...
Harlequin
 Аватар для Harlequin
41 / 41 / 4
Регистрация: 08.11.2009
Сообщений: 167
10.12.2009, 22:25     HardDisk #4
надо писать
DISK_GEOMETRY *gdg;

и вообще пример тут
Alik-Soldier
9 / 9 / 0
Регистрация: 01.05.2009
Сообщений: 127
10.12.2009, 23:05  [ТС]     HardDisk #5
Да,знаю, что указатель...Смотрел пример...Пробовал делать и по нему...Но тем не менее result возвращает 0, когда должен возвращать 1...Я уже варианта 4 перепробовал - не работает...Уже пробовал и для структуры DISK_GEOMETRY_EX с IOCTL_DISK_GET_DRIVE_GEOMETRY_EX, которая находится в том же хидере,что и DISK_GEOMETRY,но все равно не работает...

Добавлено через 21 минуту
Спасибо большое,ошибку понял,получилось.
Alik-Soldier
9 / 9 / 0
Регистрация: 01.05.2009
Сообщений: 127
12.12.2009, 22:56  [ТС]     HardDisk #6
А еще...Подскажите пожалуйста какие -ибудь функции,если они сущетвуют,с помощью которых можно получить название жесткого диска,серийный номер и какую - нибудь подобную информацию
Yandex
Объявления
12.12.2009, 22:56     HardDisk
Ответ Создать тему
Опции темы

Текущее время: 03:40. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru