1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
| function o_DriveGetInfoKey( const _drive, _key : string): string;
var
f_Label, f_FileSystemName: string;
f_LongName, f_FileSystemFlags: DWORD;
pf_Serial : PDWORD;
f_Serial: integer;
begin
Result:= '';
if _drive = '' then
Exit;
// Initialisation buffers, pointeur
Setlength( f_Label , 255 );
Setlength( f_FileSystemName , 255 );
GetMem( pf_Serial , 255 );
// Retrouve les infos
GetVolumeInformation( PChar( _drive + '\' ) , PChar( f_Label ) , 255 , pf_Serial ,
f_LongName , f_FileSystemFlags , PChar( f_FileSystemName ) , 255);
// Récupère le numéro de série et libère la mémoire
f_Serial:=pf_Serial^;
FreeMem( pf_Serial, 255 );
if _key = 'DLABEL' then // Nom du disque
Result:= string( PChar( f_Label ) )
else if _key = 'DSERIAL' then // Numéro de série du disque : pas en UNC
Result:= o_Lefts( inttohex( f_Serial , 8 ) , 4 ) + '-' +
o_Rights( inttohex( f_Serial , 8 ) , 4 )
else if _key = 'DLONGNAME' then begin // Support des noms longs
if f_LongName = 255 then
Result:= '255'
else
Result:= '0';
end
else if _key = 'DSYSTEM' then // Système de fichiers
Result:= string( PChar( f_FileSystemName ) )
end; |
Partager