Para obtener el tamano fisico de un disco duro debes usar el siguiente codigo de control IOCTL_DISK_GET_DRIVE_GEOMETRY
BOOL DeviceIoControl(
(HANDLE)
hDevice, // handle to device
IOCTL_DISK_GET_DRIVE_GEOMETRY, //
dwIoControlCode
NULL, //
lpInBuffer
0, //
nInBufferSize
(LPVOID)
lpOutBuffer, // output buffer
(DWORD)
nOutBufferSize, // size of output buffer
(LPDWORD)
lpBytesReturned, // number of bytes returned
(LPOVERLAPPED)
lpOverlapped // OVERLAPPED structure
);
busca en este link
http://msdn2.microsoft.com/en-us/library/aa365169.aspx
Si tienes problemas para escribir el codigo en Delphi dimelo y te lo posteo.
Saludos