var
  VolumeNameBuf: array [0..MAX_PATH] of Char;
  FSNameBuf: array [0..32] of char;
  SerialNo: longInt;
  MaxPathLen: Cardinal;
  FSFlag: Cardinal;
begin
   GetVolumeInformation( PChar('C:\'),VolumeNameBuf,MAX_PATH,  @SerialNo, MaxPathLen,FSFlag, FSNameBuf,32);
end;

解决方案 »

  1.   

    var
    var 
      VolumeNameBuf: array [0..MAX_PATH] of Char;
      FSNameBuf: array [0..32] of char;
      SerialNo: longInt;
      MaxPathLen: Cardinal;
      FSFlag: Cardinal;
    begin
       GetVolumeInformation( PChar('C:\'),VolumeNameBuf,MAX_PATH, @SerialNo, MaxPathLen,FSFlag, FSNameBuf,32);
    end;
      

  2.   

    我已做出来了
    function f_try():word;
    var
        lpRootPathName:pchar;
        lpVolumeNameBuffer:array [0..256] of char;
        nVolumeNameSize:cardinal;
        pVolumeSerialNumber:pdword;
        lpMaximumComponentLength:cardinal;
        lpFileSystemFlags:cardinal;
        //lpFileSystemNameBuffer:pchar;
        lpFileSystemNameBuffer:array [0..256] of char;
        nFileSystemNameSize:cardinal;
        lasterror:integer;
    begin
      lpRootPathName:=pchar('c:\');
      fillchar(lpVolumeNameBuffer,256,ord(' '));
      fillchar(lpFileSystemNameBuffer,256,ord(' '));
      nVolumeNameSize:=256;
      nFileSystemNameSize:=256;
      new(pVolumeSerialNumber);
      pVolumeSerialNumber^:=0;
      GetVolumeInformation(lpRootPathName,lpVolumeNameBuffer,nVolumeNameSize,
      pVolumeSerialNumber,lpMaximumComponentLength,lpFileSystemFlags,
      lpFileSystemNameBuffer,nFileSystemNameSize);
      lasterror:=getlasterror();
      if lasterror<>0 then
         showmessage('error');
      showmessage(intToStr(pVolumeSerialNumber^));
      dispose(pVolumeSerialNumber);
      f_try:=pVolumeSerialNumber^;
    end;