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

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

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

HardDisk - C++

09.12.2009, 23:16. Просмотров 358. Ответов 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. Подскажите,что здесь не так?
Спасибо.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.12.2009, 23:16
Здравствуйте! Я подобрал для вас темы с ответами на вопрос HardDisk (C++):

Boot from bbs-harddisk - Ноутбуки
Доброго времени суток! Решил на своем ноутбуке Toshiba Sattelite L500-1WR переустановить систему с "Windows 7 Домашняя x86" на "Windows 7...

Сброс пароля harddisk security c HDD HITACHI, что делать? - Жесткие диски
И так, стоит пароль на харде. Модель: HITACHI HTS545025B9A300 Type: TS5SAA250 На биосе пароля нет. Если снять винт то можно...


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

Или воспользуйтесь поиском по форуму:
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Harlequin
41 / 41 / 4
Регистрация: 08.11.2009
Сообщений: 167
09.12.2009, 23:57 #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
0
Alik-Soldier
9 / 9 / 0
Регистрация: 01.05.2009
Сообщений: 127
10.12.2009, 11:46  [ТС] #3
Смотрел конечно...Пишет, что выходной массив слишком маленький... Но выходной массив - это gdg,то есть переменная типа структуры DISK_GEOMETRY... И я не могу понять, что сделать...
0
Harlequin
41 / 41 / 4
Регистрация: 08.11.2009
Сообщений: 167
10.12.2009, 22:25 #4
надо писать
DISK_GEOMETRY *gdg;

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

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

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