Dieses 3-malige
GetHandle(aDeviceIndex)
ist natürlich auch etwas fahrlässig.
Das
Handle muss eigentlich direkt als Membervariable in der Klasse gespeichert sein.
Und natürlich muss schon beim Öffnen sichergestellt werden, dass das
Handle gültig ist.
Das ist jetzt nicht unbedingt die Fehlerursache, aber doch ein bisschen unsauber.