我这里有段代码,是取c:\盘大小的
GetDiskFreeSpace('C:', LPDWORD(@sector)^, LPDWORD(@byte)^, LPDWORD(@free)^, LPDWORD(@cluster)^); //获得返回参数
  totalspace := cluster * byte * sector div 1024 div 1024;              freespace := free * byte * sector div 1024 div 1024; 
不知道为什么,剩余空间取得没错,总空间去取了一个1G多!
我的系统盘可有5G多呀!
请问各位如何修改?

解决方案 »

  1.   

    The GetDiskFreeSpaceEx function obtains information about the amount of space available on a disk volume: the total amount of space, the total amount of free space, and the total amount of free space available to the user associated with the calling thread. 
    Windows 95 OSR 2: The GetDiskFreeSpaceEx function is available on Windows 95 systems beginning with OEM Service Release 2 (OSR 2). 
    Use the GetVersionEx function to determine that a system is running OSR 2 or a later release of the Windows 95 operating system. The GetVersionEx function fills in the members of an OSVERSIONINFO data structure. If the dwPlatformId member of that structure is VER_PLATFORM_WIN32_WINDOWS, and the low word of the dwBuildNumber member is greater than 1000, the system is running OSR 2 or a later release. Once you have determined that a system is running OSR 2, call the LoadLibrary or LoadLibraryEx function to load the 
    KERNEL32.DLL file, then call the GetProcAddress function to obtain an address for the GetDiskFreeSpaceEx function. Use that address to call the function.BOOL GetDiskFreeSpaceEx(    LPCTSTR lpDirectoryName, // pointer to directory name on disk of interest  
        PULARGE_INTEGER lpFreeBytesAvailableToCaller, // pointer to variable to receive free bytes on disk available to the caller
        PULARGE_INTEGER lpTotalNumberOfBytes, // pointer to variable to receive number of bytes on disk
        PULARGE_INTEGER lpTotalNumberOfFreeBytes // pointer to variable to receive free bytes on disk
       );
     ParameterslpDirectoryNamePointer to a null-terminated string that specifies a directory on the disk of interest. This string can be a UNC name. If lpDirectoryName is NULL, the GetDiskFreeSpaceEx function obtains information about the disk that contains the currect directory.
    Note that lpDirectoryName does not have to specify the root directory on a disk. The function accepts any directory on the disk. lpFreeBytesAvailableToCallerPointer to a variable to receive the total number of free bytes on the disk that are available to the user associated with the calling thread. If the operating system implements per-user quotas, this value may be less than the total number of free bytes on the disk.lpTotalNumberOfBytesPointer to a variable to receive the total number of bytes on the disk. lpTotalNumberOfFreeBytesPointer to a variable to receive the total number of free bytes on the disk. 
    This parameter can be NULL.  Return ValuesIf the function succeeds, the return value is nonzero. 
    If the function fails, the return value is zero. To get extended error information, call GetLastError. ResNote that the values obtained by this function are of type ULARGE_INTEGER. Be careful not to truncate these values to 32 bits.
    The GetDiskFreeSpaceEx function lets you avoid the arithmetic required by the GetDiskFreeSpace function.See AlsoGetDiskFreeSpace