Date sent: Tue, 2 Oct 2001 10:37:26 +0200
Subject: Re: [fpc-pascal]Reading and writing volume IDs From: "Aitor Santamaría"
To:
Send reply to:
Ooops!! You're right, sorry.
In fact, you should use:
FindFirst ('c:\*.*', VolumeID, SR);
while (DosError = 0) and SR.Attr and VolumeID VolumeID do
FindNext (SR);
This is because you can get ordinary files (with no attributes set at all) with this mask as well.
Well, what about writing labels?
In theory you could create a zero-length file in the root directory and call SetFAttr afterwards. I haven't checked it, so I don't know, whether it really works. Anyway, there are at least two problems with this solution. First, you should make sure no other item with this attribute exists there (and delete it first otherwise). Second, the preferred (more universal - can be used on non-FAT volumes as well) way of setting volume labeles is using the BPB (i.e. in the boot sector). However, you can't avoid calling DOS or BIOS function calls for this.
Tomas