1. 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
2. RE: Disk Serial ID
Brian, big thanks for the code.
3. RE: Disk Serial ID
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
> >
> >
> >
> >
>
>