COMConstructEXT - Entry point for improved compatibility with COM wrappers About ----- This entry point is needed for scenarios when you need to create the FAudio object, but are unable to provide the parameters that FAudioCreate asks for by default. This is typical in COM wrappers where XAudio2 (<= 2.7) programs will first construct the object (as requested by CoCreateInstance), then call IXAudio2_Initialize with the 'Flags' and 'XAudio2Processor' parameters afterward. Dependencies ------------ This extension does not interact with any non-standard XAudio features. New Procedures and Functions ---------------------------- FAUDIOAPI uint32_t FAudioCOMConstructEXT(FAudio **ppFAudio, uint8_t version); How to Use ---------- Instead of initializing FAudio with the traditional method... FAudio *audio; FAudioCreate(&audio, 0, FAUDIO_PROCESSOR_DEFAULT); ... you construct and then initialize as two separate function calls: FAudio *audio; FAudioCOMConstructEXT(&audio, FAUDIO_TARGET_VERSION); FAudio_Initialize(audio, 0, FAUDIO_PROCESSOR_DEFAULT); FAQ: ---- Q: Should we create similar functions for other XAudio subsystems (such as XACT, XAPOFX, and XAudio2FX)? A: No. While other objects in XAudio 2.7 (or lower) are initialized via COM on Windows, XAudio2 has a unique situation where the 'XAudio2Create' macro calls Initialize in addition to CoCreateInstance. All other creation macros simply call CoCreateInstance with no further activity, so it is easy to support them with the one exported 'Create' function.