unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
function FloppyDriveSize(Drive: Char): String;
type
PDIOC_REG = ^TDIOC_Registers;
TDIOC_Registers = record
Reg_EBX, Reg_EDX, Reg_ECX, Reg_EAX,
Reg_EDI, Reg_ESI, Reg_Flags : DWORD
end;
const
VWIN32_DIOC_DOS_INT13 = 4;
var
H : THandle;
R : TDIOC_Registers;
C : DWORD;
begin
Result := '모름';
H := CreateFile('\.VWIN32', 0, 0, nil, 0, 0, 0);
if H <> INVALID_HANDLE_VALUE then
try
R.Reg_EAX := $800;
R.Reg_EDX := ord(upcase(Drive)) - Ord('A');
if DeviceIOControl(H, VWIN32_DIOC_DOS_INT13, @R,
SizeOf (R), @R, SizeOf (R), C, nil) and
(R.Reg_Flags and 1 = 0) then
if R.Reg_EBX and $FF < 3 then
Result := '5.25 플로피'
else
Result := '3.5 플로피';
finally
CloseHandle(H);
end
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
ShowMessage(FloppyDriveSize('A')); // A 드라이브
end;
end.
카테고리 없음