32#include "mmdeviceapi.h"
35#include "audioclient.h"
36#include "endpointvolume.h"
37#include "audiopolicy.h"
51 'W',
'i',
'n',
'e',
'\\',
'D',
'r',
'i',
'v',
'e',
'r',
's',0};
70 WCHAR driver_module[264];
71 static const WCHAR wineW[] = {
'w',
'i',
'n',
'e',0};
72 static const WCHAR dotdrvW[] = {
'.',
'd',
'r',
'v',0};
87#define LDFC(n) do { driver->p##n = (void*)GetProcAddress(driver->module, #n);\
88 if(!driver->p##n) { FreeLibrary(driver->module); return FALSE; } } while(0)
91 LDFC(GetAudioEndpoint);
92 LDFC(GetAudioSessionManager);
101 TRACE(
"Successfully loaded %s with priority %s\n",
109 static const WCHAR drv_value[] = {
'A',
'u',
'd',
'i',
'o',0};
111 static WCHAR default_list[] = {
'p',
'u',
'l',
's',
'e',
',',
'a',
'l',
's',
'a',
',',
'o',
's',
's',
',',
112 'c',
'o',
'r',
'e',
'a',
'u',
'd',
'i',
'o',
',',
'a',
'n',
'd',
'r',
'o',
'i',
'd',0};
116 WCHAR reg_list[256], *
p, *
next, *driver_list = default_list;
123 if(reg_list[0] ==
'\0'){
124 TRACE(
"User explicitly chose no driver\n");
129 driver_list = reg_list;
146 TRACE(
"Selecting driver %s with priority %s\n",
212 IClassFactory_AddRef(iface);
231 LPCLASSFACTORY iface,
243 WARN(
"invalid parameter\n");
247 return This->pfnCreateInstance(
riid, ppobj);
276 ERR(
"Driver initialization failed\n");
281 WARN(
"invalid parameter\n");
296 IClassFactory_AddRef(&
MMDEVAPI_CF[
i].IClassFactory_iface);
#define WINE_DEFAULT_DEBUG_CHANNEL(t)
const GUID IID_IClassFactory
#define RegCloseKey(hKey)
BOOL WINAPI DllMain(HINSTANCE hInstance, DWORD dwReason, LPVOID lpReserved)
HRESULT WINAPI DllRegisterServer(void)
static HINSTANCE instance
HRESULT WINAPI DllUnregisterServer(void)
HRESULT WINAPI DllGetClassObject(REFCLSID rclsid, REFIID riid, LPVOID *ppv)
HRESULT WINAPI DllCanUnloadNow(void)
static IClassFactoryImpl * impl_from_IClassFactory(IClassFactory *iface)
LONG WINAPI RegOpenKeyW(HKEY hKey, LPCWSTR lpSubKey, PHKEY phkResult)
LONG WINAPI RegQueryValueExW(_In_ HKEY hkeyorg, _In_ LPCWSTR name, _In_ LPDWORD reserved, _In_ LPDWORD type, _In_ LPBYTE data, _In_ LPDWORD count)
#define DLL_PROCESS_ATTACH
#define DLL_PROCESS_DETACH
#define GetProcAddress(x, y)
BOOL WINAPI DisableThreadLibraryCalls(IN HMODULE hLibModule)
BOOL WINAPI InitOnceExecuteOnce(_Inout_ PINIT_ONCE InitOnce, _In_ __callback PINIT_ONCE_FN InitFn, _Inout_opt_ PVOID Parameter, _Outptr_opt_result_maybenull_ LPVOID *Context)
void MMDevEnum_Free(void)
HRESULT MMDevEnum_Create(REFIID riid, void **ppv)
static BOOL load_driver(const WCHAR *name, DriverFuncs *driver)
static BOOL WINAPI init_driver(INIT_ONCE *once, void *param, void **context)
static ULONG WINAPI MMCF_AddRef(LPCLASSFACTORY iface)
static HRESULT WINAPI MMCF_QueryInterface(IClassFactory *iface, REFIID riid, void **ppobj)
static HRESULT WINAPI MMCF_CreateInstance(LPCLASSFACTORY iface, LPUNKNOWN pOuter, REFIID riid, LPVOID *ppobj)
static ULONG WINAPI MMCF_Release(LPCLASSFACTORY iface)
static HRESULT WINAPI MMCF_LockServer(LPCLASSFACTORY iface, BOOL dolock)
static const char * get_priority_string(int prio)
HRESULT(* FnCreateInstance)(REFIID riid, LPVOID *ppobj)
static IClassFactoryImpl MMDEVAPI_CF[]
static const IClassFactoryVtbl MMCF_Vtbl
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
static IN DWORD IN LPVOID lpvReserved
LPWSTR WINAPI lstrcatW(LPWSTR lpString1, LPCWSTR lpString2)
struct @1678::@1679 driver
#define IsEqualGUID(rguid1, rguid2)
#define IsEqualIID(riid1, riid2)
static unsigned __int64 next
HRESULT __wine_unregister_resources(HMODULE module) DECLSPEC_HIDDEN
HRESULT __wine_register_resources(HMODULE module) DECLSPEC_HIDDEN
#define CONTAINING_RECORD(address, type, field)
DWORD WINAPI GetLastError(void)
#define INIT_ONCE_STATIC_INIT
#define CLASS_E_NOAGGREGATION
#define CLASS_E_CLASSNOTAVAILABLE
#define HKEY_CURRENT_USER