Einzelnen Beitrag anzeigen

Benutzerbild von Assarbad
Assarbad

Registriert seit: 8. Okt 2010
Ort: Frankfurt am Main
1.234 Beiträge
 
#5

AW: Woher weiß ich die Puffergröße für einen Aufruf?

  Alt 8. Nov 2016, 10:45
Herzlichen Glückwunsch. Du hast die Ungereimtheiten zwischen verschiedenen Generationen von Windows-Schnittstellen für dich entdeckt. Das ist ein wunderbar erbauliches Thema welches zu graumeliertem Haar und wunderbaren Falten führen kann.
  • MSDN-Library durchsuchenQueryFullProcessImageName ist eine neue Funktion die erst eingeführt wurde nachdem Windows 9x/Me und Windows NT zu Windows 2000 verschmolzen wurden (und seitdem sind ja noch weitere Stilblüten hinzugekommen).
  • MSDN-Library durchsuchenGetTokenInformation stammt noch aus der guten alten NT-Zeit.
  • MSDN-Library durchsuchenMultiByteToWideChar stammt noch aus Windows-95-Zeiten.

Und alle arbeiten mit ERROR_INSUFFICIENT_BUFFER

Die Doku stimmt: Wenn der Puffer zu klein ist gibt der Aufruf False zurück und GetLastError() liefert ERROR_INSUFFICIENT_BUFFER . Aber der Ausgabeparameter wird nicht gesetzt.
Die Dokumentation behauptet doch aber auch nicht, daß er gesetzt wird, oder?

Zitat:
On success, receives the number of characters written to the buffer, not including the null-terminating character.
Hab den wichtigen Teil mal hervorgehoben.

Ansonsten hat Zacherl deine Frage ja schon beantwortet. Ja, es ist die einzige sinnvolle Methode. Statt verdoppeln kannst du natürlich auch immer einen festen Wert draufschlagen. Und natürlich kannst du auch versuchen auf den von dir unterstützten Systemen einen guten Basiswert zu ermitteln, um die Anzahl der Allozierungen klein zu halten.
Oliver
"... aber vertrauen Sie uns, die Physik stimmt." (Prof. Harald Lesch)
  Mit Zitat antworten Zitat