Ich versuche eine dll für den COM Port zugriff zu schreiben.
Die funktion CreateFile() öffnet den COM Port und gibt eine HANDLE
zurück.
HANDLE ist definiert als void*.
Meine Frage ist, wie speichere ich den void* in einem Array, so das ich
mehrere geöffnete Ports besser organisieren kann (sie mit einer id (int
wert) aufrufen kann).
Ich habe bisher folgendes versucht.
Für die Initialisierung des Arrays:
1 | static void* openPorts[25] = { 0 };
|
2 | static HANDLE openPorts[25] = { 0 };
|
3 | static HANDLE* openPorts[25] = { 0 };
|
Zum speichern eines HANDELs hab ich versucht:
1 | openPorts[i] = CreateFile(...);
|
2 | openPorts[i] = (void*) CreateFile(...);
|
3 | openPorts[i] = (HANDLE*) CreateFile(...);
|
4 | openPorts[i] = &CreateFile(...);
|
Ich weis sehr wohl das einige dieser Versuche absolut keinen sinn
machen, aber mir sind irgendwann die Ideen ausgegangen ...
Kann mir jemand sagen, wie ich diese HANDLEs/void* in einem Array
speichern kann (Egal ob als Pointer, oder als das reale struct hinter
dem Pointer).
Der Fehler der kommt (wenn es nicht schon einen erwartbaren
compile-error gab) ist auf dem angehängten Bild zu sehen.
Ich verstehe das so, das er den Inhalt des structs zu dem der pointer
zeigt schreiben will, und das Array dafür zu klein ist weil es nur für
den Pointer ausgelegt ist.
Wobei ich nur vermute das das ein struct ist zu dem der pointer zeigt,
weil die restlichen Befehle alle mit structs als input arbeiten
Aber es ist nirgends definiert was ein HANDLE wirklich ist.
Ich hab noch nicht so viel Erfahrung mit C, bisher hab ich damit
hauptsächlich Microcontroller programmiert wo ich eher selten mit
structs und void* arbeite.