Текущий архив: 2003.03.20;
Скачать: CL | DM;
Вниз
IOCTL_DISK_GET_DRIVE_GEOMETRY - ошибка Найти похожие ветки
← →
Oleg-- (2003-01-22 14:24) [0]проблема такая:
-- вырезано
DeviceIoControl(hDevice,
IOCTL_DISK_GET_DRIVE_GEOMETRY,
NULL, 0, и.т.д..
-- вырезано
при компиляции пишет: Undeclared identifier: "IOCTL_DISK_GET_DRIVE_GEOMETRY"
Что я забыл подключить то?
← →
Hip Hop Music (2003-01-22 15:10) [1]Нет такого в дельфях!
Для Сей определено в winioctl.h, вот так:
#define IOCTL_DISK_GET_DRIVE_GEOMETRY CTL_CODE(IOCTL_DISK_BASE, 0x0000, METHOD_BUFFERED, FILE_ANY_ACCESS)
← →
Oleg-- (2003-01-22 19:56) [2]хм.. DeviceIoControl есть а этого параметра нет? И как быть? Как получить геометрию диска?
← →
Hip Hop Music (2003-01-23 10:06) [3]Это не параметр. Это константа, вроде число типа Cardinal (UINT).
Возьмите winioctl.h да и распишите его:
#define CTL_CODE( DeviceType, Function, Method, Access )
(
((DeviceType) << 16) | ((Access) << 14) | ((Function) << 2)| (Method)
)
#define IOCTL_DISK_BASE FILE_DEVICE_DISK
#define FILE_DEVICE_DISK 0x00000007
#define METHOD_BUFFERED 0
#define FILE_ANY_ACCESS 0
#define IOCTL_DISK_GET_DRIVE_GEOMETRY CTL_CODE (IOCTL_DISK_BASE, 0x0000, METHOD_BUFFERED, FILE_ANY_ACCESS)
Re: #define A B --- значит, B это A;
"<<" --- это "shl";
"|" --- это "or";
конструкция CTL_CODE, грубо говоря, макрос с подстановкой параметров.
Так что, всё легко и просто
← →
Oleg-- (2003-01-23 10:41) [4]Спасибо за терпение и за ответ :) т.е. если я правильно понял (сорри, но маленький опыт программирования), то таким образом вычисляется эта константа. остался вопрос. FILE_DEVICE_DISK - эта константа тоже должна иметь какое-либо значение . Какое? Или это как раз тот самый hDevice открытого физического диска?
← →
Hip Hop Music (2003-01-23 10:46) [5]1,2,3,4,5...10. Уф! Я совершенно спокоен!
поправка: #define A B --- значит, A это B;
Итак, ещё раз:
#define FILE_DEVICE_DISK 0x00000007
#define IOCTL_DISK_BASE FILE_DEVICE_DISK
Т.е.
const
FILE_DEVICE_DISK : Cardinal = $00000007;
IOCTL_DISK_BASE : Cardinal = FILE_DEVICE_DISK;
и т.д. :)
← →
Oleg-- (2003-01-23 10:53) [6]опс.. :))) совсем я плохой стал :((( посмотрел что константа FILE_DEVICE_DISK не определена и приравнивается к IOCTL_DISK_BASE ... дальше только бегло просмотрел :(
тут все понятно:
#define FILE_DEVICE_DISK 0x00000007
#define IOCTL_DISK_BASE FILE_DEVICE_DISK
← →
Oleg-- (2003-01-23 11:22) [7]Кстати.. на SCSI дисках это пройдет?
← →
Hip Hop Music (2003-01-23 11:32) [8]Не могу сказать, со SCSI не работал :)
Страницы: 1 вся ветка
Текущий архив: 2003.03.20;
Скачать: CL | DM;
Память: 0.46 MB
Время: 0.007 c