1. RE: Disk Serial ID
- Posted by Brian Broker <bkb at cnw.com> Mar 21, 2001
- 466 views
CK Lester wrote: > > Thanks, Irv, but I forgot to specify that I need it for a Windows > program... > CK, This it something I posted to the old list. It does not require Win32Lib. -- start tested program -- include dll.e include machine.e include get.e constant kernel32 = open_dll( "kernel32.dll" ), xGetVolumeInfo = define_c_func( kernel32, "GetVolumeInformationA", {C_POINTER, C_POINTER, C_UINT, C_POINTER, C_POINTER, C_POINTER, C_POINTER, C_UINT }, C_INT) function getVolSerial( sequence root_dir ) -- Input: A string that contains the root directory of the volume to be described. -- A trailing backslash is required. For example, you would specify -- \\MyServer\MyShare as "\\\\MyServer\\MyShare\\", or the C drive as "C:\\". -- Output: Volume Serial Number atom rootPathName, volSerNum sequence ret_val rootPathName = allocate_string( root_dir ) volSerNum = allocate( 4 ) if not c_func( xGetVolumeInfo, { rootPathName, NULL, NULL, volSerNum, NULL, NULL, NULL, NULL } ) then puts( 1, "xGetVolumeInfo failed in function getVolSerial" ) end if ret_val = { peek4u( volSerNum ) } free( rootPathName ) free( volSerNum ) return ret_val end function sn = sprintf( "%08x", getVolSerial( "C:\\" ) ) printf( 1, "Volume Serial Number is %s-%s", {sn[1..4],sn[5..8]} ) -- this can be verified by typing "vol" at the C: prompt if wait_key() then end if -- end tested program -- -- Brian
2. RE: Disk Serial ID
- Posted by CK Lester <cklester at yahoo.com> Mar 21, 2001
- 494 views
Brian, big thanks for the code.
3. RE: Disk Serial ID
- Posted by Chris Bensler <bensler at mailops.com> Mar 23, 2001
- 452 views
Save it as test.exw, and try again.. open_dll() is a windows routine. It's not supported in EX.EXE By saving the file as test.exw, it will use EXW.EXE, which is for windows.. Chris Tony Steward wrote: > Hi all, > Reading the forum often gives you great ideas. I tried the file supplied > by > Brian and got the following error, any idea why. I saved the file a > test.ex > > C:\EUPHORIA\include\dll.e:27 in function open_dll() > open_dll() is not supported in Euphoria for DOS32 > file_name = {107'k',101'e',114'r',110'n',101'e',108'l',51'3',50'2', > 46'.',100'd',108'l',108'l'} > > ... called from C:\PROGRA~2\TEMP\TEST2.EX:7 > > Global & Local Variables > > C:\EUPHORIA\include\machine.e: > check_calls = 1 > > C:\EUPHORIA\include\get.e: > input_file = <no value> > input_string = <no value> > string_next = <no value> > ch = <no value> > > Thanks > Tony > Come Visit Me At www.locksdownunder.com > > ----- Original Message ----- > From: "Brian Broker" <bkb at cnw.com> > To: "EUforum" <EUforum at topica.com> > Sent: Thursday, March 22, 2001 9:33 AM > Subject: RE: Disk Serial ID > > > > > > > > CK Lester wrote: > > > > > > Thanks, Irv, but I forgot to specify that I need it for a Windows > > > program... > > > > > > > CK, > > > > This it something I posted to the old list. It does not require > > Win32Lib. > > > > -- start tested program -- > > include dll.e > > include machine.e > > include get.e > > > > constant > > kernel32 = open_dll( "kernel32.dll" ), > > xGetVolumeInfo = define_c_func( kernel32, "GetVolumeInformationA", > > {C_POINTER, C_POINTER, C_UINT, C_POINTER, C_POINTER, > > C_POINTER, C_POINTER, C_UINT }, C_INT) > > > > function getVolSerial( sequence root_dir ) > > -- Input: A string that contains the root directory of the volume to be > > described. > > -- A trailing backslash is required. For example, you would > > specify > > -- \\MyServer\MyShare as "\\\\MyServer\\MyShare\\", or the C > > drive as "C:\\". > > -- Output: Volume Serial Number > > > > atom rootPathName, volSerNum > > sequence ret_val > > > > rootPathName = allocate_string( root_dir ) > > volSerNum = allocate( 4 ) > > > > if not c_func( xGetVolumeInfo, { rootPathName, NULL, NULL, volSerNum, > > NULL, NULL, NULL, NULL } ) then > > puts( 1, "xGetVolumeInfo failed in function getVolSerial" ) > > end if > > > > ret_val = { peek4u( volSerNum ) } > > free( rootPathName ) > > free( volSerNum ) > > > > return ret_val > > > > end function > > > > sn = sprintf( "%08x", getVolSerial( "C:\\" ) ) > > printf( 1, "Volume Serial Number is %s-%s", {sn[1..4],sn[5..8]} ) > > -- this can be verified by typing "vol" at the C: prompt > > if wait_key() then end if > > > > -- end tested program -- > > > > -- Brian > > > > > > > > > >