Met Delphi - code kan je makkelijk het schijf-nummer lezen vanuit je applicatie. Deze code werkt niet in Lazarus.
Ik wil met een Lazarus progje zowel met Linux als met Windows het schijf - nummer uitlezen.
Kan mij iemand hiermee helpen ?
Dank
Met Delphi - code kan je makkelijk het schijf-nummer lezen vanuit je applicatie. Deze code werkt niet in Lazarus.
Ik wil met een Lazarus progje zowel met Linux als met Windows het schijf - nummer uitlezen.
Kan mij iemand hiermee helpen ?
Dank
Welke code werkt niet met Lazarus?
Deze code werkt met Delphi :
Code:Var :Dummy1, Dummy2,VolSerNum: DWORD; begin GetVolumeInformation('c:\', NIL, 0, @VolSerNum, Dummy1, Dummy2, NIL, 0); Label1.Caption := FloatToStr(VolSerNum); End;
Ik heb letterlijk de code in Lazarus 1.0.12 gekopiepeest, Windows (als eerste) in de uses gezet, en ik krijg een 10 cijferig getal.
Windows als laatste (in ieder geval na Graphics) gaf een bende foutmeldingen bij een - tot nu toe nog niet werkend - grafisch deel.
In ($fpc)\source\rtl\win\wininc\redef.inc
(een includefile van de Windows unit)
VZIW is er geen cross-platform oplossing hiervoor.Code:function GetVolumeInformation(lpRootPathName: PChar; lpVolumeNameBuffer: PChar; nVolumeNameSize: DWORD; lpVolumeSerialNumber: PDWORD; var lpMaximumComponentLength, lpFileSystemFlags: DWORD; lpFileSystemNameBuffer: PChar; nFileSystemNameSize: DWORD): BOOL; external 'kernel32' name 'GetVolumeInformationA'; function GetVolumeInformationA(lpRootPathName: LPCSTR; lpVolumeNameBuffer: LPCSTR; nVolumeNameSize: DWORD; lpVolumeSerialNumber: PDWORD; var lpMaximumComponentLength, lpFileSystemFlags: DWORD; lpFileSystemNameBuffer: LPCSTR; nFileSystemNameSize: DWORD): BOOL; external 'kernel32' name 'GetVolumeInformationA'; function GetVolumeInformationW(lpRootPathName: LPWSTR; lpVolumeNameBuffer: LPWSTR; nVolumeNameSize: DWORD; lpVolumeSerialNumber: PDWORD; var lpMaximumComponentLength, lpFileSystemFlags: DWORD; lpFileSystemNameBuffer: LPWSTR; nFileSystemNameSize: DWORD): BOOL; external 'kernel32' name 'GetVolumeInformationW';
Bart
Wellicht zinvolle info voor Linux:
http://www.cyberciti.biz/faq/linux-g...k-information/
Alternatief is om de info te halen uit /dev/disk/by-id/, zie
http://superuser.com/questions/46038...nux-disk-drive
Bart
MaartenW :
Ja dit klopt, onder Windows werkt dit prima, maar mijn vraag stelling was onvolledig, ik zoek achter de Lazarus code om het schijf nummer te lezen op een Linux machine ...
Er zal waarschijnlijk geen API voor zijn. (in theorie is er sysctl, maar Linux stopt daar niet zo veel in) Uit /proc halen zoals Bart zegt is je beste optie.
There are currently 1 users browsing this thread. (0 members and 1 guests)
Bookmarks