| /* | |
| * Copyright (C) 2009 Maarten Lankhorst | |
| * | |
| * This library is free software; you can redistribute it and/or | |
| * modify it under the terms of the GNU Lesser General Public | |
| * License as published by the Free Software Foundation; either | |
| * version 2.1 of the License, or (at your option) any later version. | |
| * | |
| * This library is distributed in the hope that it will be useful, | |
| * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
| * Lesser General Public License for more details. | |
| * | |
| * You should have received a copy of the GNU Lesser General Public | |
| * License along with this library; if not, write to the Free Software | |
| * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA | |
| */ | |
| import "unknwn.idl"; | |
| import "propsys.idl"; | |
| cpp_quote("#ifndef E_NOTFOUND") | |
| cpp_quote("#define E_NOTFOUND HRESULT_FROM_WIN32(ERROR_NOT_FOUND)") | |
| cpp_quote("#endif") | |
| cpp_quote("#ifndef E_UNSUPPORTED_TYPE") | |
| cpp_quote("#define E_UNSUPPORTED_TYPE HRESULT_FROM_WIN32(ERROR_UNSUPPORTED_TYPE)") | |
| cpp_quote("#endif") | |
| cpp_quote("DEFINE_GUID(DEVINTERFACE_AUDIO_RENDER, 0xe6327cad,0xdcec,0x4949,0xae,0x8a,0x99,0x1e,0x97,0x6a,0x79,0xd2);") | |
| cpp_quote("DEFINE_GUID(DEVINTERFACE_AUDIO_CAPTURE, 0x2eef81be,0x33fa,0x4800,0x96,0x70,0x1c,0xd4,0x74,0x97,0x2c,0x3f);") | |
| cpp_quote("#define DEVICE_STATE_ACTIVE 0x1") | |
| cpp_quote("#define DEVICE_STATE_DISABLED 0x2") | |
| cpp_quote("#define DEVICE_STATE_NOTPRESENT 0x4") | |
| cpp_quote("#define DEVICE_STATE_UNPLUGGED 0x8") | |
| cpp_quote("#define DEVICE_STATEMASK_ALL 0xf") | |
| /* Generic PKEY_AudioEndPoint ID for grepping: {1da5d803-d492-4edd-8c23-e0c0ffee7f0e} */ | |
| cpp_quote("DEFINE_PROPERTYKEY(PKEY_AudioEndpoint_FormFactor,0x1da5d803,0xd492,0x4edd,0x8c,0x23,0xe0,0xc0,0xff,0xee,0x7f,0x0e,0);") | |
| cpp_quote("DEFINE_PROPERTYKEY(PKEY_AudioEndpoint_ControlPanelPageProvider,0x1da5d803,0xd492,0x4edd,0x8c,0x23,0xe0,0xc0,0xff,0xee,0x7f,0x0e,1);") | |
| cpp_quote("DEFINE_PROPERTYKEY(PKEY_AudioEndpoint_Association,0x1da5d803,0xd492,0x4edd,0x8c,0x23,0xe0,0xc0,0xff,0xee,0x7f,0x0e,2);") | |
| cpp_quote("DEFINE_PROPERTYKEY(PKEY_AudioEndpoint_PhysicalSpeakers,0x1da5d803,0xd492,0x4edd,0x8c,0x23,0xe0,0xc0,0xff,0xee,0x7f,0x0e,3);") | |
| cpp_quote("DEFINE_PROPERTYKEY(PKEY_AudioEndpoint_GUID,0x1da5d803,0xd492,0x4edd,0x8c,0x23,0xe0,0xc0,0xff,0xee,0x7f,0x0e,4);") | |
| cpp_quote("DEFINE_PROPERTYKEY(PKEY_AudioEndpoint_Disable_SysFx,0x1da5d803,0xd492,0x4edd,0x8c,0x23,0xe0,0xc0,0xff,0xee,0x7f,0x0e,5);") | |
| cpp_quote("#define ENDPOINT_SYSFX_ENABLED 0") | |
| cpp_quote("#define ENDPOINT_SYSFX_DISABLED 1") | |
| cpp_quote("DEFINE_PROPERTYKEY(PKEY_AudioEndpoint_FullRangeSpeakers,0x1da5d803,0xd492,0x4edd,0x8c,0x23,0xe0,0xc0,0xff,0xee,0x7f,0x0e,6);") | |
| cpp_quote("DEFINE_PROPERTYKEY(PKEY_AudioEndpoint_Supports_EventDriven_Mode,0x1da5d803,0xd492,0x4edd,0x8c,0x23,0xe0,0xc0,0xff,0xee,0x7f,0x0e,7);") | |
| cpp_quote("DEFINE_PROPERTYKEY(PKEY_AudioEndpoint_JackSubType,0x1da5d803,0xd492,0x4edd,0x8c,0x23,0xe0,0xc0,0xff,0xee,0x7f,0x0e,8);") | |
| cpp_quote("DEFINE_PROPERTYKEY(PKEY_AudioEngine_DeviceFormat,0xf19f064d,0x082c,0x4e27,0xbc,0x73,0x68,0x82,0xa1,0xbb,0x8e,0x4c,0);") | |
| cpp_quote("DEFINE_PROPERTYKEY(PKEY_AudioEngine_OEMFormat,0xe4870e26,0x3cc5,0x4cd2,0xba,0x46,0xca,0x0a,0x9a,0x70,0xed,0x04,3);") | |
| typedef struct tagDIRECTX_AUDIO_ACTIVATION_PARAMS | |
| { | |
| DWORD cbDirectXAudioActivationParams; | |
| GUID guidAudioSession; | |
| DWORD dwAudioStreamFlags; | |
| } DIRECTX_AUDIO_ACTIVATION_PARAMS, *PDIRECTX_AUDIO_ACTIVATION_PARAMS; | |
| typedef enum _EDataFlow | |
| { | |
| eRender, | |
| eCapture, | |
| eAll, | |
| EDataFlow_enum_count | |
| } EDataFlow; | |
| typedef enum _ERole | |
| { | |
| eConsole, | |
| eMultimedia, | |
| eCommunications, | |
| ERole_enum_count | |
| } ERole; | |
| typedef enum _EndpointFormFactor | |
| { | |
| RemoteNetworkDevice, | |
| Speakers, | |
| LineLevel, | |
| Headphones, | |
| Microphone, | |
| Headset, | |
| Handset, | |
| UnknownDigitalPassthrough, | |
| SPDIF, | |
| DigitalAudioDisplayDevice, | |
| UnknownFormFactor, | |
| EndpointFormFactor_enum_count | |
| } EndpointFormFactor; | |
| cpp_quote("#define HDMI DigitalAudioDisplayDevice") | |
| [ | |
| object, | |
| local, | |
| uuid(7991eec9-7e89-4d85-8390-6c703cec60c0), | |
| nonextensible, | |
| pointer_default(unique) | |
| ] | |
| interface IMMNotificationClient : IUnknown | |
| { | |
| [id(1)] HRESULT OnDeviceStateChanged( | |
| [in] LPCWSTR pwstrDeviceId, | |
| [in] DWORD dwNewState | |
| ); | |
| [id(2)] HRESULT OnDeviceAdded( | |
| [in] LPCWSTR pwstrDeviceId | |
| ); | |
| [id(3)] HRESULT OnDeviceRemoved( | |
| [in] LPCWSTR pwstrDeviceId | |
| ); | |
| [id(4)] HRESULT OnDefaultDeviceChanged( | |
| [in] EDataFlow flow, | |
| [in] ERole role, | |
| [in] LPCWSTR pwstrDeviceId | |
| ); | |
| [id(5)] HRESULT OnPropertyValueChanged( | |
| [in] LPCWSTR pwstrDeviceId, | |
| [in] const PROPERTYKEY key | |
| ); | |
| } | |
| [ | |
| object, | |
| local, | |
| uuid(d666063f-1587-4e43-81f1-b948e807363f), | |
| nonextensible, | |
| pointer_default(unique) | |
| ] | |
| interface IMMDevice : IUnknown | |
| { | |
| [id(1)] HRESULT Activate( | |
| [in] REFIID iid, | |
| [in] DWORD dwClsCtx, | |
| [in,unique] PROPVARIANT *pActivationParams, | |
| [out,iid_is(iid)] void **ppv | |
| ); | |
| [id(2)] HRESULT OpenPropertyStore( | |
| [in] DWORD stgmAccess, | |
| [out] IPropertyStore **ppProperties | |
| ); | |
| [id(3)] HRESULT GetId( | |
| [out] LPWSTR *ppstrId | |
| ); | |
| [id(4)] HRESULT GetState( | |
| [out] DWORD *pdwState | |
| ); | |
| } | |
| [ | |
| object, | |
| local, | |
| uuid(0bd7a1be-7a1a-44db-8397-cc5392387b5e), | |
| nonextensible, | |
| pointer_default(unique) | |
| ] | |
| interface IMMDeviceCollection : IUnknown | |
| { | |
| [id(1)] HRESULT GetCount( | |
| [out] UINT *pcDevices | |
| ); | |
| [id(2)] HRESULT Item( | |
| [in] UINT nDevice, | |
| [out] IMMDevice **ppdevice | |
| ); | |
| } | |
| [ | |
| object, | |
| local, | |
| uuid(1be09788-6894-4089-8586-9a2a6c265ac5), | |
| nonextensible, | |
| pointer_default(unique) | |
| ] | |
| interface IMMEndpoint : IUnknown | |
| { | |
| [id(1)] HRESULT GetDataFlow( | |
| [out] EDataFlow *pDataFlow | |
| ); | |
| } | |
| [ | |
| object, | |
| local, | |
| uuid(a95664d2-9614-4f35-a746-de8db63617e6), | |
| nonextensible, | |
| pointer_default(unique) | |
| ] | |
| interface IMMDeviceEnumerator : IUnknown | |
| { | |
| [id(1)] HRESULT EnumAudioEndpoints( | |
| [in] EDataFlow dataFlow, | |
| [in] DWORD dwStateMask, | |
| [out] IMMDeviceCollection **ppDevices | |
| ); | |
| [id(2)] HRESULT GetDefaultAudioEndpoint( | |
| [in] EDataFlow dataFlow, | |
| [in] ERole role, | |
| [out] IMMDevice **ppEndpoint | |
| ); | |
| [id(3)] HRESULT GetDevice( | |
| [in] LPCWSTR pwstrId, | |
| [out] IMMDevice **ppDevice | |
| ); | |
| [id(4)] HRESULT RegisterEndpointNotificationCallback( | |
| [in] IMMNotificationClient *pClient | |
| ); | |
| [id(5)] HRESULT UnregisterEndpointNotificationCallback( | |
| [in] IMMNotificationClient *pClient | |
| ); | |
| } | |
| [ | |
| object, | |
| local, | |
| uuid(3b0d0ea4-d0a9-4b0e-935b-09516746fac0), | |
| nonextensible, | |
| pointer_default(unique) | |
| ] | |
| interface IMMDeviceActivator : IUnknown | |
| { | |
| [id(1)] HRESULT Activate( | |
| [in] REFIID iid, | |
| [in] IMMDevice *pDevice, | |
| [in] PROPVARIANT *pActivationParams, | |
| [out,iid_is(iid)] void **ppv | |
| ); | |
| } | |
| typedef struct _AudioExtensionParams | |
| { | |
| LPARAM AddPageParam; | |
| IMMDevice *pEndPoint; | |
| IMMDevice *pPnpInterface; | |
| IMMDevice *pPnpDevnode; | |
| } AudioExtensionParams; | |
| [ | |
| object, | |
| local, | |
| uuid(72a22d78-cde4-431d-b8cc-843a71199b6d), | |
| nonextensible, | |
| pointer_default(unique) | |
| ] | |
| interface IActivateAudioInterfaceAsyncOperation : IUnknown | |
| { | |
| HRESULT GetActivateResult( | |
| [out] HRESULT *result, | |
| [out] IUnknown **iface | |
| ); | |
| } | |
| [ | |
| object, | |
| local, | |
| uuid(41d949ab-9862-444a-80f6-c261334da5eb), | |
| nonextensible, | |
| pointer_default(unique) | |
| ] | |
| interface IActivateAudioInterfaceCompletionHandler : IUnknown | |
| { | |
| HRESULT ActivateCompleted( | |
| [in] IActivateAudioInterfaceAsyncOperation *op | |
| ); | |
| } | |
| cpp_quote("HRESULT WINAPI ActivateAudioInterfaceAsync(") | |
| cpp_quote(" const WCHAR *path, REFIID riid, PROPVARIANT *params,") | |
| cpp_quote(" IActivateAudioInterfaceCompletionHandler *done_handler,") | |
| cpp_quote(" IActivateAudioInterfaceAsyncOperation **op);") | |
| [ | |
| uuid(2fdaafa3-7523-4f66-9957-9d5e7fe698f6), | |
| version(1.0) | |
| ] | |
| library MMDeviceAPILib | |
| { | |
| [ uuid(bcde0395-e52f-467c-8e3d-c4579291692e) ] coclass MMDeviceEnumerator | |
| { | |
| [default] interface IMMDeviceEnumerator; | |
| } | |
| } |