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);
void MMDevEnum_Free(void)
static const IClassFactoryVtbl MMCF_Vtbl
static IClassFactoryImpl * impl_from_IClassFactory(IClassFactory *iface)
HRESULT MMDevEnum_Create(REFIID riid, void **ppv)
static ULONG WINAPI MMCF_Release(LPCLASSFACTORY iface)
HRESULT __wine_register_resources(HMODULE module) DECLSPEC_HIDDEN
WINE_DEFAULT_DEBUG_CHANNEL(wmic)
char * wine_dbgstr_w(const wchar_t *wstr)
#define HKEY_CURRENT_USER
#define INIT_ONCE_STATIC_INIT
static BOOL WINAPI init_driver(INIT_ONCE *once, void *param, void **context)
BOOL WINAPI DisableThreadLibraryCalls(IN HMODULE hLibModule)
DWORD WINAPI GetLastError(VOID)
#define DLL_PROCESS_ATTACH
#define CLASS_E_CLASSNOTAVAILABLE
static IN DWORD IN LPVOID lpvReserved
struct tagIClassFactoryImpl IClassFactoryImpl
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
LONG WINAPI RegCloseKey(HKEY hKey)
HRESULT WINAPI DllRegisterServer(void)
HRESULT WINAPI DllUnregisterServer(void)
LONG WINAPI RegOpenKeyW(HKEY hKey, LPCWSTR lpSubKey, PHKEY phkResult)
PFLT_MESSAGE_WAITER_QUEUE CONTAINING_RECORD(Csq, DEVICE_EXTENSION, IrpQueue)) -> WaiterQ.mLock) _IRQL_raises_(DISPATCH_LEVEL) VOID NTAPI FltpAcquireMessageWaiterLock(_In_ PIO_CSQ Csq, _Out_ PKIRQL Irql)
#define DLL_PROCESS_DETACH
BOOL NTAPI InitOnceExecuteOnce(INIT_ONCE *once, PINIT_ONCE_FN func, void *param, void **context)
_CONST_RETURN wchar_t *__cdecl wcschr(_In_z_ const wchar_t *_Str, wchar_t _Ch)
LONG WINAPI RegQueryValueExW(_In_ HKEY hkeyorg, _In_ LPCWSTR name, _In_ LPDWORD reserved, _In_ LPDWORD type, _In_ LPBYTE data, _In_ LPDWORD count)
static HRESULT WINAPI MMCF_QueryInterface(IClassFactory *iface, REFIID riid, void **ppobj)
HRESULT __wine_unregister_resources(HMODULE module) DECLSPEC_HIDDEN
#define CLASS_E_NOAGGREGATION
struct @1623::@1624 driver
static ULONG WINAPI MMCF_AddRef(LPCLASSFACTORY iface)
static unsigned __int64 next
static HRESULT WINAPI MMCF_CreateInstance(LPCLASSFACTORY iface, LPUNKNOWN pOuter, REFIID riid, LPVOID *ppobj)
HRESULT WINAPI DllCanUnloadNow(void)
BOOL WINAPI IsEqualGUID(REFGUID rguid1, REFGUID rguid2)
static const char * get_priority_string(int prio)
static HINSTANCE instance
HRESULT(* FnCreateInstance)(REFIID riid, LPVOID *ppobj)
#define GetProcAddress(x, y)
LPWSTR WINAPI lstrcatW(LPWSTR lpString1, LPCWSTR lpString2)
const GUID IID_IClassFactory
static BOOL load_driver(const WCHAR *name, DriverFuncs *driver)
#define IsEqualIID(riid1, riid2)
static IClassFactoryImpl MMDEVAPI_CF[]
HRESULT WINAPI DllGetClassObject(REFCLSID rclsid, REFIID riid, LPVOID *ppv)
BOOL WINAPI DllMain(HINSTANCE hInstance, DWORD dwReason, LPVOID lpReserved)
static HRESULT WINAPI MMCF_LockServer(LPCLASSFACTORY iface, BOOL dolock)