Seite 1 von 1
Bug in Structure RAWINPUTDEVICELIST
Verfasst: 21.09.2018 12:30
von hjbremer
Da ich mich im englischem Forum mit meinem deutschem Usernamen/Passwort nicht anmelden kann, warum auch immer
möge doch einer der Mods diesen Fehler melden, der mindestens seit 5.60 existiert
Structure RAWINPUTDEVICELIST
hDevice.i
dwType.l
EndStructure
für x64 muß es dwType.i heißen
mit dwType.l funktioniert GetRawInputDeviceList() unter x64 nicht.
Re: Bug in Structure RAWINPUTDEVICELIST
Verfasst: 21.09.2018 12:35
von RSBasic
hjbremer hat geschrieben:Da ich mich im englischem Forum mit meinem deutschem Usernamen/Passwort nicht anmelden kann, warum auch immer
Ich habe nachgeschaut und es existiert kein User mit dem Namen "hjbremer". Hast du dich da überhaupt jemals registriert? Das deutsche und englische Forum sind zwei getrennte Foren.
Re: Bug in Structure RAWINPUTDEVICELIST
Verfasst: 21.09.2018 12:48
von hjbremer
nein, früher glaube ich hieß es man braucht es nicht
also habe ich es gelassen und wegen meinen mäßigen Englisch Kenntnissen kann ich dort eh keine sinnvollen Beiträge posten
Re: Bug in Structure RAWINPUTDEVICELIST
Verfasst: 21.09.2018 13:03
von RSBasic
hjbremer hat geschrieben:nein, früher glaube ich hieß es man braucht es nicht
Hm, davon weiß ich nichts.
hjbremer hat geschrieben:also habe ich es gelassen und wegen meinen mäßigen Englisch Kenntnissen kann ich dort eh keine sinnvollen Beiträge posten
Mit deepl.com klappt es aber ganz gut.
Ich hab den Fehler für dich im englischen Forum gemeldet.
Re: Bug in Structure RAWINPUTDEVICELIST
Verfasst: 21.09.2018 14:57
von _JON_
dwType.l ist schon richtig, nur muss die Struktur aligned werden.
Code: Alles auswählen
Structure RAWINPUTDEVICELIST Align #PB_Structure_AlignC
hDevice.i
dwType.l
EndStructure
Gibt sicher hunderte solcher Bugs, Fred sollte endlich mal seine "Residents.pb" veröffentlichen.
Re: Bug in Structure RAWINPUTDEVICELIST
Verfasst: 21.09.2018 19:29
von hjbremer
_JON_ hat geschrieben:dwType.l ist schon richtig, nur muss die Struktur aligned werden.
Code: Alles auswählen
Structure RAWINPUTDEVICELIST Align #PB_Structure_AlignC
hDevice.i
dwType.l
EndStructure
Gibt sicher hunderte solcher Bugs, Fred sollte endlich mal seine "Residents.pb" veröffentlichen.
du hast recht, habe es gerade getestet. Mit Align geht es.
Aber so wie die Structure nun mal ist, ist es halt ein Bug. Denn woher soll der NormalUser wie ich das wissen.
Heraus zu bekommen, warum es nicht funktionierte, hat mich immerhin 1 Stunde gekostet. Denn da komm mal drauf.
Re: Bug in Structure RAWINPUTDEVICELIST
Verfasst: 21.09.2018 19:36
von ¯\_(ツ)_/¯
_JON_ hat geschrieben:Code: Alles auswählen
Structure RAWINPUTDEVICELIST Align #PB_Structure_AlignC
Das macht Align #PB_Structure_AlignC genau? Was ist der Unterschied zwischen mit Align und ohne Align? Wird die Struktur verändert oder erweitert oder wie muss ich das verstehen? Danke im Vorraus
Re: Bug in Structure RAWINPUTDEVICELIST
Verfasst: 21.09.2018 20:22
von DePe
Die Felder in der Stuktur werden an den 32/64-Bit bw. 4/8 Byte Grenzen ausgerichtet. Ich glaube es gibt aber auch Unterschiede bei den Compilern.
Hier ein Bespiel:
Code: Alles auswählen
Structure Test
a1.a
l.l
a2.a
i.i
EndStructure
Structure TestAlign Align #PB_Structure_AlignC
a1.a
l.l
a2.a
i.i
EndStructure
Debug "a1: " + Str(OffsetOf(Test\a1)) + " - " + Str(OffsetOf(TestAlign\a1))
Debug " l: " + Str(OffsetOf(Test\l)) + " - " + Str(OffsetOf(TestAlign\l))
Debug "a2: " + Str(OffsetOf(Test\a2)) + " - " + Str(OffsetOf(TestAlign\a2))
Debug " i: " + Str(OffsetOf(Test\i)) + " - " + Str(OffsetOf(TestAlign\i))
;Executable type: Windows - x64 (64bit, Unicode, Thread, Purifier)
;[Debug] a1: 0 - 0
;[Debug] l: 1 - 4
;[Debug] a2: 5 - 8
;[Debug] i: 6 - 16
;Executable type: Windows - x86 (32bit, Unicode, Thread, Purifier)
;[Debug] a1: 0 - 0
;[Debug] l: 1 - 4
;[Debug] a2: 5 - 8
;[Debug] i: 6 - 12
Peter
Re: Bug in Structure RAWINPUTDEVICELIST
Verfasst: 21.09.2018 22:09
von Josh
¯\_(ツ)_/¯ hat geschrieben:Das macht Align #PB_Structure_AlignC genau? Was ist der Unterschied zwischen mit Align und ohne Align? Wird die Struktur verändert oder erweitert oder wie muss ich das verstehen? Danke im Vorraus
Meistens wird die Struktur durch Align verändert, muss aber nicht zwangsweise.
1) Zuerst wird der größte Typ innerhalb der Struktur gesucht. Die Ausrichtungsgrenzen sind dann immer ein vielfaches dieses Typs.
2) Die einzelnen Strukturfelder werden wie ohne Align geschrieben, allerdings, wenn eine einzelne Variable über die Ausgrenzungsgrenze hinausgeht, wird diese so ausgerichtet, dass sie mit der Ausrichtungsgrenze beginnt.
3) Zum Schluss wird das ganze am Ende noch aufgefüllt, dass die Größe der Struktur immer ein vielfaches des unter Punkt 1 ermittelten Wertes ergibt.