Seite 1 von 1

Eingelegten Medientyp erkennen?

Verfasst: 01.11.2007 22:33
von Glow
Hi

Weiss zufällig jemand wie man den eingelegten Medientyp erkennen kann?
Ich habe aktuell schon alle möglichen Infos zum eingelegten Typ, wie z.B Größe, Cylinders etc.
Nur frag ich mich wie ich den genauen Typ erkennen kann? Also z.B CD-ROM/DVD-ROM usw.
Kann man das vieleicht anhand der Cylinders berechnen?

Verfasst: 02.11.2007 14:11
von bembulak
Hast du schon auf PureArea.net gekuckt?

http://www.purearea.net/pb/CodeArchiv/W ... iveType.pb

Verfasst: 02.11.2007 14:13
von Kiffi
bembulak hat geschrieben:Hast du schon auf PureArea.net gekuckt?
damit kann man aber nicht unterscheiden, ob eine CD oder eine DVD im
Laufwerk liegt.

Grüße ... Kiffi

Re: Eingelegten Medientyp erkennen?

Verfasst: 02.11.2007 16:59
von scholly
Glow hat geschrieben:Ich habe aktuell schon alle möglichen Infos zum eingelegten Typ, wie z.B Größe, Cylinders etc.
Über welchen Weg hast Du diese Angabe bisher bezogen?
Nur frag ich mich wie ich den genauen Typ erkennen kann? Also z.B CD-ROM/DVD-ROM usw.
Ich hab vor längerer Zeit mal vergeblich versucht, über WMI und da speziell die Win32_PhysicalMedia-Klasse an diese Informationen zu kommen, weil es dort den "MediaType" gibt, der genau solche Angaben liefern soll.
Da ich nicht so der PB-Freak bin, habe ich auf das zurückgegriffen, was so an Sourcen etc zu finden war, z.B. Droopys Lib und im CodeArchiv unter Windows-System/Settings das WMI_Parameters.pb.

Ich bin aber wohl mal wieder zu doof, denn ich bekomme immer nur "CD-ROM" heraus, auch wenns eine DVD ist :(

Letztendlich habe ich mich mit folgendem beholfen:

Code: Alles auswählen

Procedure.s CheckOptical(cdvdLW.s)
  TotalNumberOfBytes.q
  GetDiskFreeSpaceEx_(@cdvdLW, @egal1, @TotalNumberOfBytes, @egal2)
  Debug " "
  Debug cdvdLW
  Debug "TotalNumberOfBytes     : " + StrU(TotalNumberOfBytes,#Quad)
  
  If TotalNumberOfBytes < (800*1024*1024) ;größte mir bekannte CD
    ProcedureReturn "CD" 
  Else
    ProcedureReturn "DVD"
  EndIf   
EndProcedure

Debug "in LW y: ist eine " + checkoptical("y:")
Debug "in LW z: ist eine " + checkoptical("z:")
bis denne... scholly

Verfasst: 05.11.2007 00:04
von scholly
moin, moin...

Da mich das Thema im Rahmen meiner Video-DB auch schon lange nervt, hab das lange Wochenende mal zur "Grundlagenforschung" :) genutzt.

Es gibt FMPOV 3 Lösungsansätze:

1. WMI / Win32_PhysicalMedia, siehe MSDN hier
Problem: Ich hab es weder mit PB, noch VBS und den von MickySoft angebotenene Hilfsmitteln (Scriptomatic, WMI Code Creator) geschafft, die versprochenen Infos anzuzeigen.

2. IMAPI2, siehe MSDN hier
Mit dem VBS habe ich etwas herumgespielt, aber ich hab nicht genug Ahnung um das von PB aus zu verwerten - an den beiden Libs von PureArea.net zur Scripteinbindung bin ich bisher gescheitert. Das VBS hat allerdings fast alle Infos so ausgegeben, wie ich erwartet habe.
Es stört mich aber doch ein wenig, daß ein leeres LW nicht eindeutig erkannt wird und alle beschriebenen Medien "IMAPI_MEDIA_TYPE_DVDROM" sind. Unterscheidungen machts nur mit leeren Medien.

3. Book Type Field, sieheWikipedia-Eintrag
Ob ich da finde, was ich erwarte, wird sich erst zeigen, wenn mir hier oder englischen Forum jemand mit einem Codeschnipsel hilft, denn ich habe nirgendwo was gefunden, aus dem ich den Zugriff auf diese 4 Bits ableiten könnte.

Somit war meine Suche zwar nicht unbedingt von Erfolg gekrönt, aber vielleicht hat die Erwähnung der Suchergebnisse hier ja zur Folge, daß von irgndwo eine Lösungshilfe kommt.

bis denne... scholly, dem jetzt Snooker wichtiger ist :lurk:

Verfasst: 05.11.2007 22:33
von scholly
Ich hab noch einen gefunden:

4. Windows Driver Kit, siehe MSDN hier
Keine Ahnung, wie man da ran kommt, aber das frag ich im API-Forum gleich nach.

bis denne... scholly

Verfasst: 11.11.2007 01:24
von scholly
moin, moin...

Hab was hinbekommen, siehe hier.

bis denne... scholly