
A mellékelt példaprogram megnyitása előtt a FileID.pas-ban lévő komponenst telepítenie kell a Delphi alá. Ehhez válassza a Component - Install Component menüpontot.
A komponens használatához a FileName property-ben kell megadni azt az állományt elérési úttal, melynek azonosítójára kíváncsiak vagyunk. Az azonosítót az ID property-ből olvashatjuk ki, illetve ugyanezt a számot hexadecimális formában az IDHex property-ből tudhatjuk meg.
Annak a meghajtónak az azonosítóját, ahol az állomány található a Volume property-ből olvashatjuk ki, míg ugyanezt a számot hexadecimálisként a VolumeHex property-ből.
Az azonosítószámokat tehát akkor kell a komponensünknek meghatároznia, amikor a FileName property változik. Ekkor fut a SetFileName eljárás.
procedure TFileID.SetFileName(const Value: string);
begin
...
try
Az adatok lekérdezéséhez megnyitjuk az állományt a CreateFile függvény hívásával.
h:=CreateFile(PChar(FFileName), 0, FILE_SHARE_READ, nil, OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS, 0);
if h<>INVALID_HANDLE_VALUE then begin
Ha a megnyitás sikeres volt, akkor a GetFileInformationByHandle függvénnyel lekérdezhetjük a szükséges információkat egy BY_HANDLE_FILE_INFORMATION struktúrába. Ennek nFileIndexHigh mezője tartalmazza az állomány egyedi azonosítójának felső 32 bitjét, míg az nFileIndexLow mezőben az alsó 32 bit található.
if GetFileInformationByHandle(h, hfi) then begin
FID:=hfi.nFileIndexHigh shl 32 + hfi.nFileIndexLow;
A meghajtó egyedi 32 bites azonosítóját a dwVolumeSerialNumber mező tartalmazza.
FVolume:=hfi.dwVolumeSerialNumber;
Végül a két számot hexadecimálissá alakítjuk, majd zárjuk az állományt.
FIDHex:=IntToHex(FID, 16);
FVolumeHex:=IntToHex(FVolume, 8);
end;
end;
CloseHandle(h);
except
end;
end;