LGDVD-ROM을 새로 구입하였는데
이놈은 DVD램 드라이브 장치(즉 이동식 드라이브 DriveType이 Floppy타입이 아니라)
CD롬 드라이브 한개만 생서이 되서 CD롬도 읽고 DVD램을 넣으면 inCD라는 프로그램이
UDF타입의 ReWrite할수 있는 미디어로 DVD램을 만들어 줍니다.
문제는 DiskFree함수는 문제없이 동작을 하는데.
DiskSize함수는 문제를 일으킵니다. 내부적으로는 동작을 잘 하는데.
DiskSize함수 입니다.
<!--CodeS-->
function DiskSize(Drive: Byte): Int64;
var
FreeSpace: Int64;
begin
if not InternalGetDiskSpace(Drive, Result, FreeSpace) then
Result := -1;
end;
<!--CodeE-->
InternalGetDiskSpace까지 값이 잘 받아져 나옵니다. Result에 정상값이
있는데 이 함수를 벗어나면 DiskSize값이 0으로 나와 버리게 됩니다.
타입은 모두 맞는 상태구요.
추가>> 그냥 버튼 하나 올려 놓구 호출하면. 정상동작 하는데요. 쓰레드 안에서 사용할때 나타나는 증상입니다.
사용은 그냥.
<!--CodeS-->
AmtFreeSpace := DiskFree(iDrive);
amtDiskSize := DiskSize(iDrive);
<!--CodeE-->