Seite 1 von 2

[erledigt ]Windows Driver Kit Struktur - wie komm ich dran ?

Verfasst: 05.11.2007 22:41
von scholly
moin, moin...

Ich habhier im MSDN diese Struktur gefunden:

Code: Alles auswählen

typedef struct _DVD_LAYER_DESCRIPTOR {
  UCHAR  BookVersion : 4;
  UCHAR  BookType : 4;
  UCHAR  MinimumRate : 4;
  UCHAR  DiskSize : 4;
  UCHAR  LayerType : 4;
  UCHAR  TrackPath : 1;
  UCHAR  NumberOfLayers : 2;
  UCHAR  Reserved1 : 1;
  UCHAR  TrackDensity : 4;
  UCHAR  LinearDensity : 4;
  ULONG  StartingDataSector;
  ULONG  EndDataSector;
  ULONG  EndLayerZeroSector;
  UCHAR  Reserved5 : 7;
  UCHAR  BCAFlag : 1;
  UCHAR  Reserved6;
} DVD_LAYER_DESCRIPTOR, *PDVD_LAYER_DESCRIPTOR
Leider bin ich noch nicht firm genug, um mir selber eine Proc zu schreiben, die den BookType wiedergibt.

Gibt es jemand, der so nett ist und mit einem Code-Schnipsel weiterhilft ?

mdv... scholly

Verfasst: 06.11.2007 17:03
von bingo
ich denke , so ...

Code: Alles auswählen

Structure DVD_LAYER_DESCRIPTOR
BookVersion.b[4]
BookType.b[4]
MinimumRate.b[4]
DiskSize.b[4]
LayerType.b[4]
TrackPath.b[1]
NumberOfLayers.b[2]
Reserved1.b[1]
TrackDensity.b[4]
LinearDensity.b[4]
StartingDataSector.l
EndDataSector.l
EndLayerZeroSector.l
Reserved5.b[7]
BCAFlag.b[1]
Reserved6.b
EndStructure
:wink:

Verfasst: 06.11.2007 18:08
von scholly
bingo hat geschrieben:ich denke , so ...
:wink:
/:-> :cry:
Sowas ähnliches hatte ich dank Freaks Help "How to use Windows API Types with PureBasic" auch hinbekommen, aber eine Procedure, die die Struktur füllt, geht über mein PB-Vermögen.

sich auf den Arm genommen fühlend... scholly

Verfasst: 06.11.2007 19:07
von Thomas
bingo hat geschrieben:ich denke , so ...

Code: Alles auswählen

Structure DVD_LAYER_DESCRIPTOR
BookVersion.b[4]
BookType.b[4]
MinimumRate.b[4]
DiskSize.b[4]
LayerType.b[4]
TrackPath.b[1]
NumberOfLayers.b[2]
Reserved1.b[1]
TrackDensity.b[4]
LinearDensity.b[4]
StartingDataSector.l
EndDataSector.l
EndLayerZeroSector.l
Reserved5.b[7]
BCAFlag.b[1]
Reserved6.b
EndStructure
:wink:
Hi
ist mir fast scho peinlich sowas zu fragen:
was bedeuten diese Zahlen in den Eckigen klammern?
und wieso können diese Structuren nicht aussehen, wie man selbst will?
Was haben die mit dem System zu tun?

Verfasst: 07.11.2007 10:21
von Tafkadasom2k5
@Thomas:
Das sind vordefinierte Strukturen.

Wenn du eine DLL erstellst, und berechnest was mit ihr, und du selber der Meinung bist "In einer Struktur ist das Ergebnis besser aufgehoben" (weil wegen mehrere Werte zB) codierst du diese Struktur ja fest und kompilierst.

Danach versucht jemand deine DLL zu nutzen-> aber woher soll er wissen, wie der Output genau aussieht? Und wie groß dieser ist? Und wo was steht mit welcher Bytelänge?
Indem du zu deiner DLL eine Readme (oder eine Hilfe oder eine Include) hinzufügst, kannst du dort beschreiben, wie die Structure innerhalb deiner DLL aussieht. Der Programmierer "übernimmt" diese Structure, und bringt sie so seinem Programm bei. Erst jetzt kann er mit deiner DLL arbeiten. Er hat sozusagen den von dir erfundenen Datentyp abgeschrieben. Verstehen? ;)

Die eckigen Klammern besagen, dass es sich hierbei nicht um einen einzigen Datentyp, sondern um ein festes Array dieses Datentyps handelt. Da die Arrays aber fest sein müssen (die Structure muss ja eine feste größe haben- sie darf ja nicht variieren-> aber warum ist ja eigentlich logisch, oder?) dimensionierst du sie schon beim Erstellen deiner Structure. In diesem Falle hast du bei "LinearDensity.b[4] " ein eindimensionales 4-BYTE-Array.

Gr33tz
Tafkadasom2k5

Verfasst: 07.11.2007 13:47
von Bisonte
So nun hat man da ne nette Struktur... und was stellt man damit nun an ?

Ich bin der API-Held im Erdbeerfeld... Ne im ernst... Ich hab da kein Plan von, aber es interessiert mich brennend !

Verfasst: 07.11.2007 15:29
von scholly
Bisonte hat geschrieben:So nun hat man da ne nette Struktur... und was stellt man damit nun an ?
Mann füllt sie und kann dann einzelne Teile weiterverwenden.

Verfasst: 07.11.2007 15:38
von Thomas
Ganz hab ich's zwar noch nicht geschnallt, aber mal sehen ...
Danke für's erste! :D

Verfasst: 07.11.2007 19:08
von Bisonte
scholly hat geschrieben:
Bisonte hat geschrieben:So nun hat man da ne nette Struktur... und was stellt man damit nun an ?
Mann füllt sie und kann dann einzelne Teile weiterverwenden.
ja und wie ?

Gib doch einfach mal ein klitzekleines Beispiel, wie man z.B. die Daten liest, um die Struktur zu füllen ... das würd mir vielleicht schon helfen ...

Gibts da eine Anweisung für ? oder wie muss ich das jetzt verstehen... ?

Also was die einzelnen Daten bedeuten (Booktype usw.) ist mir schon klar, nur
wie man an die Daten dann rankommt ist mir noch ein Rätsel... so ganz werd ich aus diesem MSdingens da immer nich schlau...

Verfasst: 07.11.2007 19:34
von scholly
Bisonte hat geschrieben:ja und wie ?

Gib doch einfach mal ein klitzekleines Beispiel, wie man z.B. die Daten liest, um die Struktur zu füllen ... das würd mir vielleicht schon helfen ...
Sagmal, kann man mein Ursprungsposting nicht mehr lesen ?
scholly hat geschrieben:Leider bin ich noch nicht firm genug, um mir selber eine Proc zu schreiben, die den BookType wiedergibt.

Gibt es jemand, der so nett ist und mit einem Code-Schnipsel weiterhilft ?
Oder willste mich auch aufn Arm nehmen ?

mehr als irritiert... scholly