| /* |
| * 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 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; |
| |
| [ |
| uuid(2fdaafa3-7523-4f66-9957-9d5e7fe698f6), |
| version(1.0) |
| ] |
| library MMDeviceAPILib |
| { |
| [ uuid(bcde0395-e52f-467c-8e3d-c4579291692e) ] coclass MMDeviceEnumerator |
| { |
| [default] interface IMMDeviceEnumerator; |
| } |
| } |