Beefy Boxes and Bandwidth Generously Provided by pair Networks
Do you know where your variables are?
 
PerlMonks  

Re^4: USB Drive Letter Assignment in Win32

by traveler (Parson)
on Jun 08, 2004 at 17:30 UTC ( #362449=note: print w/replies, xml ) Need Help??


in reply to Re^3: USB Drive Letter Assignment in Win32
in thread USB Drive Letter Assignment in Win32

I installed the ppd and then ran this code. Perl whined about no GetVolume and I could not find it either. I have version 2003.07.14

Thanks!

  • Comment on Re^4: USB Drive Letter Assignment in Win32

Replies are listed 'Best First'.
Re^5: USB Drive Letter Assignment in Win32
by Zero_Flop (Pilgrim) on Jun 08, 2004 at 19:49 UTC
    From the information at the Roth site, you will need probably two calls, 
    GetDrives to get an array of all drives and GetVolumeInfo. (sorry not GetVolume)
    
    
    GetDrives($Type)
    This will return an array of drive roots. If no parameters are passed then the list will be all drives 
    (cdroms, floppy, fixed, net, etc.).
    If you specify $Type the list will only contain drive roots
     that are of the specified type.
    The types are:
    
    DRIVE_FIXED
    DRIVE_REMOVABLE
    DRIVE_REMOTE
    DRIVE_CDROM
    DRIVE_RAMDISK
    
    Example:
    
    @Drives = Win32::AdminMisc::GetDrives();
    @CDROMs = Win32::AdminMisc::GetDrives( DRIVE_CDROM );
    Returns:
    
    nothing if unsuccessful
    array if successful
    
    
    
    
    GetVolumeInfo( $Drive )
    This will return a hash of drive volume information for the $Drive drive. 
    $Drive must be a root directory such as "c:\\" or "X:/". $Drive may be a UNC.
    Returned keys are:
    
    $Volume...............The volume label for the drive.
    $Serial...............The serial number for the drive (in decimal)
    $MaxFileNameLength....The max number of chars a file name can be for drive.
    SystemFlag...........System flags which can be combination of:
    
    FS_CASE_IS_PRESERVED....The case of filenames are stored on the disk.
    (for example DOS makes file names uppercase)
    FS_CASE_SENSITIVE ......File system supports case sensitive filenames.
    FS_UNICODE_STORED_ON_DISK...File system supports unicode filenames.
    FS_PERSISTENT_ACLS......File System saves and enforces access control
    lists (aka file permissions)
    FS_FILE_COMPRESSION ....File system supports file based compression.
    FS_VOL_IS_COMPRESSED....Volume is compressed (as in using DoubleSpace).
    
    $::ThisPageSystemName.......The name of the format of the drive (eg. NTFS, FAT)
    
    
    Example:
    
    if( %Volume = Win32::AdminMisc::GetVolume("//server1/c\$") )
    {
        my $Serial = uc( sprintf( "%x", $Volume{Serial} ) );
        $Serial =~ s/(....)(....)/$1-$2/;
        print "The drive is formatted with the $Volume{FileSystemName} format.\n";
        print "The volume serial number is: $Serial\n%quot;;
    
    }
    Returns:
    
     hash if successful
     undef if not successful
    
      Great. Thank you. I have a short demo working:
      use Win32::AdminMisc; @drives = Win32::AdminMisc::GetDrives( DRIVE_REMOVABLE ); foreach $drive (@drives){ %Info = Win32::AdminMisc::GetVolumeInfo($drive); # print "Drive $drive label is $Info{Volume}\n"; print "Found USBDRIVE at $drive\n" if $Info{Volume} eq 'USBDRIVE'; }

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://362449]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others wandering the Monastery: (3)
As of 2022-06-30 07:38 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?
    My most frequent journeys are powered by:









    Results (97 votes). Check out past polls.

    Notices?