Re: physical hard disk ...
- Posted by cklester <cklester at yahoo.com> Sep 29, 2005
- 554 views
This should work:
--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) global function getVolSerial( object 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 if atom(root_dir) then root_dir = root_dir & ":\\" end if rootPathName = allocate_string( root_dir ) volSerNum = allocate( 4 ) if not c_func( xGetVolumeInfo, { rootPathName, NULL, NULL, volSerNum, NULL, NULL, NULL, NULL } ) then puts( 1, "\n**xGetVolumeInfo failed in function getVolSerial**\n" ) puts(1, root_dir) end if ret_val = { peek4u( volSerNum ) } free( rootPathName ) free( volSerNum ) return ret_val end function
-=ck "Programming in a state of EUPHORIA." http://www.cklester.com/euphoria/