[WINAPI] CoInitializeEx ?
Verfasst: 08.12.2011, 16:43
Hallo alle,
ich brauch mal eure Hilfe mit diesem CoInitializeEx !
Diese Thread-Apartments sind für mich schwarze Magie, ich hab noch nicht vollständig begriffen was da passiert.
Und zwar muss der aufrufende Thread, der meine Musik-Library initialisiert, laut Doku mindestens einmal CoInitializeEx aufrufen, weil ich intern XACT benutze. Der Code meiner library ist thread-safe, deshalb wohl am besten mit
hr = CoInitializeEx(NULL, COINIT_MULTITHREADED);
Weil mein Projekt aber nun eine Library ist, weiß ich ja nicht, ob die aufrufende Applikation das vorher schonmal aufgerufen hat, evtl auch mit abweichenden Parametern. Was mach ich da am besten ? Stur nochmal aufrufen und ggf den Fehlercode ignorieren ? Wenn ich die Doku richtig verstehe, kann ich damit ja wenigstens nicht die aufrufende Threadverwaltung ändern (und damit u.U. die Host-Applikation verpfuschen), aber vielleicht bremse ich damit ja auch meine Lib aus. Oder sollte ich stattdessen lieber selber intern nen eigenen Thread aufmachen ? Das würde die Kapselung meiner Audioschicht dann wahrscheinlich komplizierter machen, in sofern würd ich's gerne vermeiden.
Und zu guter letzt: Die Doku schweigt sich aus, wenn ich im Gegenzug dieses CoUninitialize() aufrufen muss. Während mein Thread noch läuft, will ich ja nix uninitializen.. bzw was wird da dann überhaupt freigegeben ? Wie gesagt - Böhmische Dörfer.. :/
wie immer dankbar für jede Hilfe:
ponx
ich brauch mal eure Hilfe mit diesem CoInitializeEx !
Diese Thread-Apartments sind für mich schwarze Magie, ich hab noch nicht vollständig begriffen was da passiert.
Und zwar muss der aufrufende Thread, der meine Musik-Library initialisiert, laut Doku mindestens einmal CoInitializeEx aufrufen, weil ich intern XACT benutze. Der Code meiner library ist thread-safe, deshalb wohl am besten mit
hr = CoInitializeEx(NULL, COINIT_MULTITHREADED);
Weil mein Projekt aber nun eine Library ist, weiß ich ja nicht, ob die aufrufende Applikation das vorher schonmal aufgerufen hat, evtl auch mit abweichenden Parametern. Was mach ich da am besten ? Stur nochmal aufrufen und ggf den Fehlercode ignorieren ? Wenn ich die Doku richtig verstehe, kann ich damit ja wenigstens nicht die aufrufende Threadverwaltung ändern (und damit u.U. die Host-Applikation verpfuschen), aber vielleicht bremse ich damit ja auch meine Lib aus. Oder sollte ich stattdessen lieber selber intern nen eigenen Thread aufmachen ? Das würde die Kapselung meiner Audioschicht dann wahrscheinlich komplizierter machen, in sofern würd ich's gerne vermeiden.
Und zu guter letzt: Die Doku schweigt sich aus, wenn ich im Gegenzug dieses CoUninitialize() aufrufen muss. Während mein Thread noch läuft, will ich ja nix uninitializen.. bzw was wird da dann überhaupt freigegeben ? Wie gesagt - Böhmische Dörfer.. :/
wie immer dankbar für jede Hilfe:
ponx