Hallo AutoIt Gurus,
auf dem engl. Forum wurde ich mit der Frage konfrontiert, wie man bei einem DLL Aufruf einen Puffer mit dynamischer Länge angibt. Beispiel in Funktion _ClipBoard_GetFormatName:
[autoit]Local $aResult = DllCall("user32.dll", "int", "GetClipboardFormatNameW", "uint", $iFormat, "wstr", "", "int", 4096)
[/autoit]Ich sehe nur folgende Möglichkeiten
- DIe Länge des Puffers vorab berechnen (wird aber nicht immer möglich sein)
- Angeben, dass die aufgerufene DLL die Pufferlänge selbst bestimmt und einen entsprechend großen Puffer zurückgibt
- Es wird eine fixe Pufferlänge angegeben und die DLL gibt mit einem Returncode an, dass noch mehr Daten vorhanden sind und die DLL nochmals aufgerufen werden muss um weitere Daten zu übergeben
An der Beschreibung seht Ihr schon, dass ich von DLLs etc. nicht viel Ahnung habe.
Gibt's eine Möglichkeit die fixe Pufferlänge zu umgehen?
Vielen Dank!