On 6/17/07, Fabio P. [email protected] wrote:
grazie ragazzi, siete MITICI!! era proprio quello di cui avevo bisogno, il
passo successivo sarebbe stato distinguere i dischi removibili da quelli
fissi… non mi resta che fare delle prove
Utilizzando il modulo windows-pr puoi sfruttare la funzione
GetDriveType per ottenere il tipo dell’unità . Espando il primo esempio
che ho fatto giusto per darti più idee su come potresti utilizzare nel
caso questo modulo, poi la sperimentazione è tutta tua
require ‘windows/volume’
include Windows::Volume
def get_drive_letters
buffer = " " * 1024
length = GetLogicalDriveStrings(buffer.length, buffer)
buffer[0…length].split(0.chr)
end
def get_drive_type(root_path_name)
GetDriveType(root_path_name)
end
def drive_types_hash(drives)
get_drive_letters.inject({}) do |hash, drive|
hash[drive.delete(‘:\’)] = get_drive_type(drive)
hash
end
end
p drive_types_hash(get_drive_letters)
#=> {“A”=>2, “C”=>3, “D”=>3, “E”=>5, “F”=>5, “G”=>2, “H”=>2}
Aprendo lib\windows\volume.rb puoi trovare all’inizio la definizione
delle costanti che rappresentano il tipo di volume, comunque sono:
DRIVE_UNKNOWN = 0
DRIVE_NO_ROOT_DIR = 1
DRIVE_REMOVABLE = 2
DRIVE_FIXED = 3
DRIVE_REMOTE = 4
DRIVE_CDROM = 5
DRIVE_RAMDISK = 6
Se invece intendi usare l’ultimo esempio, quello con WMI, per
recuperare tutti i tipi di unità , come nell’esempio di windows-pr,
ti basta modificare la query in:
SELECT * FROM Win32_LogicalDisk
e poi iterando sul set di risultati controlli il valore di
device.DriveType per risalire al suo tipo. I valori sono gli stessi
delle costanti che hai visto sopra, comunque c’è tutta la
documentazione estesa sulla classe WMI Win32_LogicalDisk all’indirizzo
p.s.
…che cacchio è WMI?
Daniele, dove posso trovare documentazione in merito?
WMI è l’acronimo di Windows Management Instrumentation ed è
un’infrastruttura per la gestione di dati e operazioni in sistemi
Windows attraverso un’interfaccia pesantemente semplificata (più
astratta e generica), torna molto utile per automatizzare operazioni
e/o task di amministrazione oppure per ricavare eventi o informazioni
di sistema, il tutto da computer locale o da postazioni remote.
Sempre su MSDN trovi tutte le informazioni che vuoi su WMI partendo da
qui: Windows Management Instrumentation - Win32 apps | Microsoft Learn