Contributor: SWAG SUPPORT TEAM { >I am having difficulty changing a disk volume Label using Turbo Pascal. >Does anyone know how to acComplish this? } Uses Dos; Type fcbType = Record drive : Byte; name : Array[1..8] of Char; ext : Array[1..3] of Char; fpos : Word; recsize : Word; fsize : LongInt; fdate : Word; ftime : Word; reserv : Array[1..8] of Byte; currec : Byte; relrec : LongInt; end; extfcb = Record flag : Byte; { must be $ff! } reserv : Array[1..5] of Byte; attrib : Byte; fcb : fcbType; end; Function GetVolLabel(drive:Char):String; Var sr : SearchRec; begin findfirst(drive+':\*.*',VolumeID,sr); if Doserror=0 then GetVolLabel:=sr.name else GetVolLabel:=''; end; Procedure setfcbname(Var fcb:fcbType; name:String); Var p : Byte; begin p:=pos('.',name); if p=0 then begin p:=length(name)+1; name:=name+'.'; end; fillChar(fcb.name,11,' '); move(name[1],fcb.name,p-1); move(name[p+1],fcb.ext,length(name)-p); end; Procedure SetVolLabel(drive:Char; vLabel:String); Var fcb : extfcb; vl : PathStr; regs : Registers; f : File; begin vl:=GetVolLabel(drive); fcb.flag:=$ff; fcb.attrib:=VolumeID; if vl<>'' then begin setfcbname(fcb.fcb,vl); fcb.fcb.drive:=ord(UpCase(drive))-64; regs.ah:=$13; { Delete File } regs.ds:=seg(fcb); regs.dx:=ofs(fcb); msDos(regs); end; if vLabel<>'' then begin fcb.fcb.drive:=ord(UpCase(drive))-64; setfcbname(fcb.fcb,vLabel); With regs do begin ah:=$16; { Create File } ds:=seg(fcb); dx:=ofs(fcb); msDos(regs); ah:=$10; { Close File } ds:=seg(fcb); dx:=ofs(fcb); msDos(regs); end; end; end;