Was ich immer noch nicht richtig zuordnen kann ist deine Sorge um Return values die der Nutzer vielleicht nicht auswertet und glaubt ein richtiges Ergebnis zu haben. Und glauben die Library sei fehlerhaft und "nicht gut". So etwas ist mir persönlich völlig fremd.
Ich würde, beispielsweise bei einem negativen
Handle einen ordentlich dokumentierten Fehlercode zurückgeben. Wer eine Routine nimmt, ohne Doku zu lesen
glaubt zu wissen was sie tut und sich dann freut dass es immerhin kompiliert - Damit hätte ich kein Mitleid. Wer dann undefinierte Werte in Ausgabeparametern hat und damit weiterarbeitet ist klar selber schuld.