* win/dos.pp: cleanup GetDiskFreeSpace related stuff, patch similar to sysutils.pp rev.16540.

git-svn-id: trunk@17726 -
This commit is contained in:
sergei 2011-06-12 03:35:45 +00:00
parent e3816d0db2
commit 2099318c3d

View File

@ -94,7 +94,6 @@ type
end;
var
versioninfo : OSVERSIONINFO;
kernel32dll : THandle;
{******************************************************************************
@ -817,41 +816,17 @@ begin
end;
function FreeLibrary(hLibModule : THandle) : longbool;
stdcall; external 'kernel32' name 'FreeLibrary';
function GetModuleHandle(p : PChar) : PtrUInt;
stdcall; external 'kernel32' name 'GetModuleHandleA';
function GetVersionEx(var VersionInformation:OSVERSIONINFO) : longbool;
stdcall; external 'kernel32' name 'GetVersionExA';
function LoadLibrary(lpLibFileName : pchar):THandle;
stdcall; external 'kernel32' name 'LoadLibraryA';
function GetProcAddress(hModule : THandle;lpProcName : pchar) : pointer;
stdcall; external 'kernel32' name 'GetProcAddress';
var
oldexitproc : pointer;
procedure dosexitproc;
begin
exitproc:=oldexitproc;
if kernel32dll<>0 then
FreeLibrary(kernel32dll);
end;
begin
oldexitproc:=exitproc;
exitproc:=@dosexitproc;
versioninfo.dwOSVersionInfoSize:=sizeof(versioninfo);
GetVersionEx(versioninfo);
kernel32dll:=0;
GetDiskFreeSpaceEx:=nil;
{$ifndef win64}
if ((versioninfo.dwPlatformId=VER_PLATFORM_WIN32_WINDOWS) and
(versioninfo.dwBuildNUmber>=1000)) or
(versioninfo.dwPlatformId=VER_PLATFORM_WIN32_NT) then
{$endif win64}
begin
kernel32dll:=LoadLibrary('kernel32');
if kernel32dll<>0 then
GetDiskFreeSpaceEx:=TGetDiskFreeSpaceEx(GetProcAddress(kernel32dll,'GetDiskFreeSpaceExA'));
end;
kernel32dll:=GetModuleHandle('kernel32');
if kernel32dll<>0 then
GetDiskFreeSpaceEx:=TGetDiskFreeSpaceEx(GetProcAddress(kernel32dll,'GetDiskFreeSpaceExA'));
end.