Модераторы: Snowy, bartram, MetalFan, bems, Poseidon, Riply
  

Поиск:

Закрытая темаСоздание новой темы Создание опроса
> геометрия диска 
V
    Опции темы
artem1987
Дата 25.9.2006, 16:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 203
Регистрация: 18.7.2006
Где: Калининград

Репутация: нет
Всего: нет



Код

TDiskGeometry = packed record
      Cylinders: Int64;           
      MediaType: DWORD;           
      TracksPerCylinder: DWORD;  
      SectorsPerTrack: DWORD;   
      BytesPerSector: DWORD;   
    end;
var 
     DiskGeometry : TDiskGeometry;

...
 device := CreateFile('\\.\C:',
                                 GENERIC_READ, FILE_SHARE_READ or FILE_SHARE_WRITE,nil,OPEN_EXISTING,0,0);
 if device <> INVALID_HANDLE_VALUE then 
      if DeviceIoControl(device,IOCTL_DISK_GET_DRIVE_GEOMETRY,nil,0,
                                   @DiskGeometry,SizeOf(TDiskGeometry),bytesreturned,nil) then begin
         ...operator1...
      end;
 closehandle(device);


Код

 TPartitionInformation = packed record
      StartingOffset : int64;
      PartitionLength : int64;
      HiddenSectors : DWORD ;
      PartitionNumber : DWORD ;
      PartitionType : BYTE ;
      BootIndicator : BOOLEAN ;
      RecognizedPartition : BOOLEAN ;
      RewritePartition : BOOLEAN ;
    end;
var
      PartitionInformation : TPartitionInformation;
...
   device := CreateFile('\\.\C:',
                                    GENERIC_READ, FILE_SHARE_READ or FILE_SHARE_WRITE,nil,OPEN_EXISTING,0,0);
  if device <> INVALID_HANDLE_VALUE then 
      if DeviceIoControl(device,IOCTL_DISK_GET_PARTITION_INFO,nil,0,
                     @PartitionInformation,SizeOf(TPartitionInformation),bytesreturned,nil) then begin
         ...operator2...
      end;
  closehandle(device);

почему в первом случае переход к operato1 происходит а во втором к operator2 нет?



M
Girder
Название темы должно отражать её суть!
PS: Тема закрыта!

--------------------
Don't ask me why, ask me how.
PM MAIL   Вверх
drkot
Дата 25.9.2006, 18:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ищущий
***


Профиль
Группа: Завсегдатай
Сообщений: 1042
Регистрация: 5.5.2006

Репутация: нет
Всего: 8



Думаю во втором случае DeviceIoControl возвращает false.


--------------------
Ошибка не становится истиной по причине широкого распространения,
как и Истина не становится Ошибкой из-за того, что никто её не видит.
PM   Вверх
Sartorius
Дата 25.9.2006, 18:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1568
Регистрация: 18.7.2006
Где: Ivory tower

Репутация: нет
Всего: 37



Цитата(drkot @ 25.9.2006,  19:02)
Думаю во втором случае DeviceIoControl возвращает false.

 C чего ты взял? smile 
PM MAIL ICQ   Вверх
drkot
Дата 25.9.2006, 18:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ищущий
***


Профиль
Группа: Завсегдатай
Сообщений: 1042
Регистрация: 5.5.2006

Репутация: нет
Всего: 8



Цитата(artem1987 @  25.9.2006,  16:58 Найти цитируемый пост)
почему в первом случае переход к operato1 происходит а во втором к operator2 нет

руководствовался исключительно данной фразой.

PS: каков вопрос таков и ответ.


--------------------
Ошибка не становится истиной по причине широкого распространения,
как и Истина не становится Ошибкой из-за того, что никто её не видит.
PM   Вверх
artem1987
Дата 25.9.2006, 19:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 203
Регистрация: 18.7.2006
Где: Калининград

Репутация: нет
Всего: нет



 smile 
оказалось что сишного DWORD (в msdn поля структуры PartitionInformation указаны типа DWORD) мало для размешения в этой структуре всей инфы и пришлось поменять на int64

Это сообщение отредактировал(а) artem1987 - 25.9.2006, 19:08
--------------------
Don't ask me why, ask me how.
PM MAIL   Вверх
  
Закрытая темаСоздание новой темы Создание опроса
Правила форума "Delphi: WinAPI и системное программирование"
Snowybartram
MetalFanbems
PoseidonRrader
Riply

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Delphi обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • 99% ответов по WinAPI можно найти в MSDN Library, оставшиеся 1% здесь

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, bartram, MetalFan, bems, Poseidon, Rrader, Riply.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: WinAPI и системное программирование | Следующая тема »


 




[ Время генерации скрипта: 0.0424 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.