Windows - CD és DVD meghajtók információinak lekérdezése

WMI 5. rész

forráskód letöltése
Cikksorozatunk jelen részében referenciaszerűen ismertetjük a Windows Management Instrumentation (WMI) által kezelt "Win32_CDROMDrive" osztályt. Az osztály a Windows-ba telepített CD-ROM és DVD meghajtókról szolgáltat információkat. Készítünk egy szkriptet, amely lekérdezi ezen eszközök néhány tulajdonságát (név, meghajtóbetűjel, kötetnév, sorozatszám, van-e benne lemez, lemez mérete, adatátviteli sebessége). Ezenkívül lehetőségünk nyílik olyan információkhoz jutni, hogy az adott eszköz képes-e írni a lemezre, mikor lett telepítve vagy milyen SCSI paraméterekkel rendelkezik.
Cikkünkhöz mellékeltük a példában szereplő szkriptet "CDROM.vbs" néven. Futtatva megjeleníti a fenti információkat a képernyőn.
A CDROM, DVD és CD író meghajtókat a WMI egyetlen közös osztályba helyezi. Helyileg a \root\cimv2 névtérben található, "Win32_CDROMDrive" nevűben. Az osztály egy öröklődési folyamat eredménye: csúcson a "CIM_LogicalDevice" található, ebből származik a "CIM_MediaAccessDevice", ebből a "CIM_CDROMDrive" és ebből a "Win32_LogicalDevice". Metódusokat nem, de tulajdonságot annál többet tartalmaz. Ezek elérése VBScript-ből például az alábbi módon lehetséges:
Text=""
for each CD in GetObject("winmgmts:{impersonationLevel=impersonate}!root/cimv2").ExecQuery ("select * from Win32_CDROMDrive")
   Text = Text & CD.Name & Chr (13)
   Text = Text & "Meghajtóbetűjel: " & CD.Drive & Chr (13)
   Text = Text & "Kötet neve: " & CD.VolumeName & Chr (13)
   Text = Text & "Kötet sorozatszáma: " & CD.VolumeSerialNumber & Chr (13)
   Text = Text & "Van bent lemez: " & CD.MediaLoaded & Chr (13)
   Text = Text & "Lemez mérete: " & CD.Size & " bájt" & Chr (13)
   Text = Text & "Átviteli sebesség: " & CD.TransferRate & " Kilóbájt/másodperc" & Chr (13)
   Text = Text & "------------------------------" & Chr (13)
Next
   WScript.Echo Text
A "!root/cimv2" bejegyzésen látható a névtér elérése. Alapesetben ez az alapértelmezett névtér a WMI-ban, ekkor elhagyható a hivatkozás. A lekérdezésben az osztály összes ("*") tulajdonságát kérjük, de ezek közül a későbbiekben csak néhányat (CD.X) használunk fel. Végül az eredményt megjelenítjük a képernyőn. A teljes osztályreferencia a következőképpen néz ki:
CIM_CDROMDrive
Osztály: Win32_CDROMDrive:CIM_CDROMDrive
Win32_CDROMDrive
{
uint16 Availability ;
uint16 Capabilities[] ;
string CapabilityDescriptions[] ;
string Caption ;
string CompressionMethod ;
uint32 ConfigManagerErrorCode ;
boolean ConfigManagerUserConfig ;
string CreationClassName ;
uint64 DefaultBlockSize ;
string Description ;
string DeviceID ;
string Drive ;
boolean DriveIntegrity ;
boolean ErrorCleared ;
string ErrorDescription ;
string ErrorMethodology ;
uint16 FileSystemFlags ;
uint32 FileSystemFlagsEx ;
string Id ;
datetime InstallDate ;
uint32 LastErrorCode ;
string Manufacturer ;
uint64 MaxBlockSize ;
uint32 MaximumComponentLength ;
uint64 MaxMediaSize ;
boolean MediaLoaded ;
string MediaType ;
string MfrAssignedRevisionLevel ;
uint64 MinBlockSize ;
string Name ;
boolean NeedsCleaning ;
uint32 NumberOfMediaSupported ;
string PNPDeviceID ;
uint16 PowerManagementCapabilities[] ;
boolean PowerManagementSupported ;
string RevisionLevel ;
uint32 SCSIBus ;
uint16 SCSILogicalUnit ;
uint16 SCSIPort ;
uint16 SCSITargetId ;
uint64 Size ;
string Status ;
uint16 StatusInfo ;
string SystemCreationClassName ;
string SystemName ;
real64 TransferRate ;
string VolumeName ;
string VolumeSerialNumber ;
};
Paraméterek
{
uint16 Availability
Az eszköz hozzáférhetőségi és állapotinformációi. 1-től 21-ig terjedő számot kapunk eredményül az alábbiak szerint:
Érték Jelentés
1 Egyéb
2 Ismeretlen
3 Running/Full Power - Használatban
4 Warning - Figyelmeztetés
5 Tesztállapot
6 Nem használható
7 Kikacsolva
8 Off Line
9 Használaton kívül
10 Csökkentett üzemmód
11 Nincs telepítve
12 Telepítési hiba
13 Power Save - Ismeretlen
14 Power Save - Alacsony áramfelvételű állapot
15 Power Save - Készenlétben
16 Power Cycle
17 Power Save - Figyelmeztetés
18 Pause
19 Nincs kész
20 Nincs konfigurálva
21 Üresjárat
uint16 Capabilities[]
Az eszköz képességeiről, lehetőségeiről szolgáltat információkat egy szám formájában, amely 0 és 12 közé eshet:
Érték Jelentés
0 Ismeretlen
1 Egyéb
2 Soros adatelérés támogatott
3 Véletlenszerű adatelérés támogatott
4 Írás támogatás
5 Adattitkosítás
6 Adattömörítés
7 Támogatás eltávolítható eszközként
8 Kézi tisztítási lehetőség
9 Automatikus tisztítási lehetőség
10 SMART funkció
11 Kétoldalas média támogatás (DVD-nél)
12 A lemez kivétele előtt nem szükséges a rendszerből a kötetet eltávolítani (dismount)
string CapabilityDescriptions[]
A fenti eszközfunkciókról szolgáltat részletes(ebb) magyarázatot.
string Caption
Egysoros rövid megjegyzés az eszközről. Tartalma gyakran megegyezik a "Name" tulajdonságéval.
string CompressionMethod
Az adattömörítést támogató eszközök tömörítési algoritmusának neve. Ha nem képes ezt felismerni, akkor "Compressed" vagy "Unknown" eredményeket szolgáltatja. Abban az esetben, ha nincs hardveres tömörítési lehetőség, nem ad eredményt.
uint32 ConfigManagerErrorCode
A "CIM_LogicalDevice" osztályból öröklődik ez a tulajdonság és a beállítás kezelő által visszaadott hibakódot tartalmazza egy 0-tól 31-ig terjedő szám formájában:
Hibakód Leírás
0 Az eszköz megfelelően működik.
1 Az eszköz nincs megfelelően konfigurálva.
2 A Windows nem tudta betölteni az eszköz illesztőprogramját.
3 Az eszköz illesztőprogramja hibás vagy nincs elég erőforrás (pl.: memória) a használatához.
4 Az eszköz nem működik megfelelően. Ennek oka fizikai meghibásodás vagy Registry sérülés lehet.
5 Az eszköz olyan erőforrásokat használ(na), amelyeket a Windows nem tud kezelni.
6 Erőforrás ütközés történt a boot-olás fázisában.
7 Nem lehetséges a szűrések megvalósítása.
8 Az eszköz illesztőprogramjának betöltője hiányzik.
9 Az eszközbe épített Firmware hibát jelzett.
10 Az eszköz nem indult el.
11 Az eszköz hibás.
12 Nincs elég szabad erőforrás a használatához.
13 Windows cannot verify this device's resources.
14 A megfelelő működéshez újra kell indítani a gépet.
15 Az eszköz hibát jelzett vissza.
16 A Windows nem képes felismerni a szükséges erőforrásokat.
17 Ismeretlen erőforrás típus.
18 Meghajtó újratelepítése szükséges.
19 A VXD betöltője hibát jelzett.
20 Hibás a Windows Registry.
21 Rendszerhiba: a Windows eltávolítja az eszközt. Meg kell kísérelni az illesztőprogram cseréjét.
22 Az eszköz le van tiltva.
23 Rendszerhiba: Meg kell kísérelni az illesztőprogram cseréjét.
24 Az eszköz nincs jelen, nem működik megfelelően vagy nincs megfelelően telepítve.
25 A Windows most állítja be az erőforrásokat.
26 Ugyanaz, mint az előző.
27 Nem érvényesek a naplózási beállítások.
28 Nincs eszközmeghajtó telepítve.
29 Az eszköz Firmware-e további erőforrásigényekkel állt elő.
30 Megszakítás (IRQ) ütközés lépett fel.
31 A Windows nem tudja betölteni a meghajtó programot.
boolean ConfigManagerUserConfig
Ha az értéke TRUE akkor az eszköz a felhasználó és nem a Windows által definiált konfigurációt használ.
string CreationClassName
Az öröklődési folyamatból származó osztály neve.
uint64 DefaultBlockSize
Az eszköz által alapértelmezésben használt blokk méret, bájtban kifejezve.
string Description
Rövid leírás az eszközről.
string DeviceID
A CD-ROM egyedi azonosítója.
string Drive
Hozzárendelt meghajtó betűjel. Például: C:, D:.
boolean DriveIntegrity
Ha az értéke TRUE, akkor hibátlanul olvasott minden adatot a lemezről.
boolean ErrorCleared
Csak olvasható paraméter. Ha értéke TRUE, akkor a LastErrorCode tartalma törlésre került.
string ErrorDescription
A LastErrorCode-ban tárolt hiba rövid leírása.
string ErrorMethodology
Az eszköz által ismert hibajavító és felderítő eljárások leírása.
uint16 FileSystemFlags
Ma már nem használt, csak kompatibilitási okokból maradt meg. Helyette a következő tulajdonság lépett életbe.
uint32 FileSystemFlagsEx
Fájlrendszer flag. Eredményül egy számot ad vissza, ami a flag-ek kombinációját is jelentheti.
string Id
Szintén a meghajtó betűjelét adja eredményül.
datetime InstallDate
Az eszköz telepítésének dátuma és ideje.
uint32 LastErrorCode
A logikai meghajtó által szolgáltatott utolsó hiba kódja.
string Manufacturer
Gyártó neve (például: "SONY"). Nem minden CD-ROM-nál töltik fel ezt a tulajdonságot.
uint64 MaxBlockSize
Maximális blokkméret bájtban kifejezve, amelyet a lemez olvasásakor használni lehet.
uint32 MaximumComponentLength
Az eszköz által kezelt legnagyobb fájlméret. Tulajdonképpen az jelöli, hogy képes-e a Windows hosszú fájlneveinek kezelésére.
uint64 MaxMediaSize
A behelyezett média maximális mérete kilóbájtban kifejezve.
boolean MediaLoaded
Ha értéke TRUE, akkor van a meghajtóban lemez.
string MediaType
Médiatípus. Ez az érték mindig CD-ROM.
string MfrAssignedRevisionLevel
Csak Windows XP alatt használható ez a tulajdonság. A Firmware-ben tárolt eszköz verziószámot olvassa ki.
uint64 MinBlockSize
Csak olvasható. Azt a minimális blokkméretet fejezik ki bájtban, amelyet a CD-ROM egy lemezhez való hozzáférésnél használni tud.
string Name
Egysornyi szöveg, általában az eszköz nevét és típusát tartalmazza.
boolean NeedsCleaning
Megfelelő hardver támogatás mellett, TRUE értékkel jelzi, ha szükségessé vált az optika tisztítása.
uint32 NumberOfMediaSupported
Egyszerre behelyezhető lemezek száma. 1-nél nagyobb értéket csak az úgynevezett CD Changer-ek adnak.
string PNPDeviceID
A logikai eszköz Plug and Play eszközazonosítója.
uint16 PowerManagementCapabilities[]
0-től 7-ig egy számot ad vissza arról, hogy milyen energiatakarékos üzemmódokat támogat.
Érték Jelentés
0 Ismeretlen
1 Nem támogatott az energiatakarékos mód
2 Mód letiltva
3 Mód Engedélyezve
4 Mód automatikus használata
5 Nincs beállítva - beállítás szükséges
6 Power Cycling támogatás
7 Időzített bekapcsolás támogatás
boolean PowerManagementSupported
Csak olvasható. Ha értéke TRUE, akkor az eszköz támogatja az energiatakarékos üzemmódokat. Ez még nem jelenti azt, hogy be is van kapcsolva.
string RevisionLevel
Firmware verziószáma.
uint32 SCSIBus
SCSI busz szám.
uint16 SCSILogicalUnit
SCSI Logical Unit Number (LUN) szám.
uint16 SCSIPort
A SCSI vezérlő ezen portjára csatlakozik.
uint16 SCSITargetId
SCSI azonosító szám.
uint64 Size
Csak olvasható. A lemez mérete bájtban megadva.
string Status
Állapot információk. Az alábbi értékeket veheti fel:
"OK", "Error", "Degraded", "Unknown", "Pred Fail", "Starting", "Stopping", "Service", "Stressed", "NonRecover", "No Contact", "Lost Comm"
uint16 StatusInfo
Logikai meghajtó állapot információi.1-től 5-ig terjedő számot eredményez:
Érték Jelentés
1 Egyéb
2 Ismeretlen
3 Engedélyezett
4 Tiltott
5 Nincs támogatva
string SystemCreationClassName
Csak olvasható. A "CreationClassName" tulajdonság érvényességi köre.
string SystemName
Csak olvasható. A előbbi hatókör rendszer neve.
real64 TransferRate
Csak olvasható. Adatátviteli sebességet jelöli kilóbájt/másodpercben mérve. Ha -1 az eredmény, akkor nem tudta a Windows meghatározni.
string VolumeName
Csak olvasható. A behelyezett lemez kötetinformációja.
string VolumeSerialNumber
Csak olvasható. A behelyezett lemez kötet-sorozatszáma.
Megjegyzés
Az osztály a \root\cimv2 névtérben helyezkedik el. Fontos, hogy nem minden tulajdonság kitöltött, hogy melyik az, az függ a hardvertől és a Windows verziójától is.
Minimális feltételek
Windows NT 4.0 SP4, Windows 2000/XP

WMI cikksorozat