Re: Serial ID from Win32
	
	
	
	
On Mon, 4 Dec 2000 15:04:16 -0500, Ck Lester wrote:
>Brian,
>
>Yes, Volume Serial Number. Since I have no idea how to wrap a DLL function,
>I'll need an existing function from an existing library...
>
>If you can provide some code I can just plug into my app, please do!  >
>Thanks!
>ck
OK, here you go... plug and chug away:
---------------------------------------
include win32lib.ew
constant
  xGetVolumeInfo = linkFunc( 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 mset, rootPathName, volSerNum, ret_val
  mset = new_memset()
  rootPathName = acquire_mem( mset, root_dir )
  volSerNum    = acquire_mem( mset, DWord )
  if not c_func( xGetVolumeInfo, { rootPathName, NULL, NULL, volSerNum,
                                   NULL, NULL, NULL, NULL } ) then
    warnErr( "xGetVolumeInfo failed in function getVolSerial" )
  end if
  ret_val = peek4u( volSerNum )
  release_mem( mset )
  return ret_val
end function
-- the following two lines are a test and can be deleted --
printf( 1, "Volume Serial Number: %x", getVolSerial( "C:\\" ) )
-- this can be verified by typing "vol" at the C: prompt
if wait_key() then end if
---------------------------------------
-- Questions?  Comments?
-- just let me know...
-- Brian
>
>Thanks!
>ck
OK, here you go... plug and chug away:
---------------------------------------
include win32lib.ew
constant
  xGetVolumeInfo = linkFunc( 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 mset, rootPathName, volSerNum, ret_val
  mset = new_memset()
  rootPathName = acquire_mem( mset, root_dir )
  volSerNum    = acquire_mem( mset, DWord )
  if not c_func( xGetVolumeInfo, { rootPathName, NULL, NULL, volSerNum,
                                   NULL, NULL, NULL, NULL } ) then
    warnErr( "xGetVolumeInfo failed in function getVolSerial" )
  end if
  ret_val = peek4u( volSerNum )
  release_mem( mset )
  return ret_val
end function
-- the following two lines are a test and can be deleted --
printf( 1, "Volume Serial Number: %x", getVolSerial( "C:\\" ) )
-- this can be verified by typing "vol" at the C: prompt
if wait_key() then end if
---------------------------------------
-- Questions?  Comments?
-- just let me know...
-- Brian
	
	
		| 
									Not Categorized, Please Help
						 |  |