Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2009.11.29;
Скачать: CL | DM;

Вниз

Проблема с DeviceIoControl   Найти похожие ветки 

 
33Rus   (2009-10-12 20:17) [0]

Есть код

unit Unit1;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, StdCtrls;

const
 METHOD_BUFFERED = 0;
 FILE_ANY_ACCESS = 0;
 FILE_DEVICE_DISK = 7;

 IOCTL_DISK_GET_DRIVE_GEOMETRY = (FILE_DEVICE_DISK shl 16) or
     (FILE_ANY_ACCESS shl 14) or (0 shl 2) or METHOD_BUFFERED;

type
PDISK_GEOMETRY = ^DISK_GEOMETRY;
 DISK_GEOMETRY = packed record
   Cylinders : LARGE_INTEGER;
   MediaType : Integer;
   TracksPerCylinder : DWORD;
   SectorsPerTrack : DWORD;
   BytesPerSector : DWORD;
 end;

 TForm1 = class(TForm)
   Button1: TButton;
   ListBox1: TListBox;
   procedure Button1Click(Sender: TObject);
 private
   { Private declarations }

 public
   { Public declarations }
 end;

var
 Form1: TForm1;

implementation

{$R *.dfm}

function GetDrvGeometry: DISK_GEOMETRY;
var
H:THandle;
DrvName:string;
Returned:DWord;
begin
DrvName:="\\.\PhysicalDrive0";
H:=CreateFile(PChar(DrvName),GENERIC_READ,
              FILE_SHARE_WRITE or FILE_SHARE_READ, nil,
              OPEN_EXISTING, 0, 0);
if H = INVALID_HANDLE_VALUE
  then  showmessage("No handle");

  if not DeviceIoControl (H, IOCTL_DISK_GET_DRIVE_GEOMETRY, nil, 0,
 @Result, SizeOf(Result), returned ,nil)
 then exit;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
DG:DISK_GEOMETRY;
begin
 GetDrvGeometry;
 ListBox1.Items.Add(IntToStr(DG.Cylinders.QuadPart));
end;
end.


Однако в ListBox возвращается какое-то огромное значение. Подскажите пожалуйста что не так.


 
Сергей М. ©   (2009-10-12 21:28) [1]


> if not DeviceIoControl(..) then exit;


А следующей строчкой идет end; - тот же самый выход.
И хз при этом, то ли DeviceIoControl вернула True, то ли False..


> begin
>  GetDrvGeometry;


И куда ты записал результат, возвращенный ф-цией ?
Выкинул в мусор ?)
Что же тогда требуешь от DG ?


 
wq   (2009-10-13 13:57) [2]

Сергей М. спасибо



Страницы: 1 вся ветка

Текущий архив: 2009.11.29;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.011 c
15-1254379545
@!!ex
2009-10-01 10:45
2009.11.29
Помогите с оплатой счета по PayPal


2-1255588723
Маркабес
2009-10-15 10:38
2009.11.29
Как составить SQL запрос в жоские условия ?


2-1255599480
ford
2009-10-15 13:38
2009.11.29
Получить последнюю папку из пути


2-1255364278
33Rus
2009-10-12 20:17
2009.11.29
Проблема с DeviceIoControl


1-1210408735
fender2008
2008-05-10 12:38
2009.11.29
C++ DLL