Module: wine Branch: master Commit: 850c6347e27fd3443a4f40e13754cfaba6a7bf89 URL: http://source.winehq.org/git/wine.git/?a=commit;h=850c6347e27fd3443a4f40e137...
Author: Maarten Lankhorst m.b.lankhorst@gmail.com Date: Tue Dec 8 13:20:19 2009 +0100
include: Add mmdeviceapi.idl.
---
.gitignore | 1 + include/Makefile.in | 1 + include/devicetopology.idl | 3 + include/mmdeviceapi.idl | 250 ++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 255 insertions(+), 0 deletions(-)
diff --git a/.gitignore b/.gitignore index 3cae649..b39a7f0 100644 --- a/.gitignore +++ b/.gitignore @@ -156,6 +156,7 @@ include/mediaobj.h include/mimeinfo.h include/mimeole.h include/mlang.h +include/mmdeviceapi.h include/mmstream.h include/mscoree.h include/msctf.h diff --git a/include/Makefile.in b/include/Makefile.in index 0bc1864..b640428 100644 --- a/include/Makefile.in +++ b/include/Makefile.in @@ -45,6 +45,7 @@ PUBLIC_IDL_H_SRCS = \ mimeinfo.idl \ mimeole.idl \ mlang.idl \ + mmdeviceapi.idl \ mmstream.idl \ mscoree.idl \ msctf.idl \ diff --git a/include/devicetopology.idl b/include/devicetopology.idl index d373b2a..4dc182b 100644 --- a/include/devicetopology.idl +++ b/include/devicetopology.idl @@ -31,7 +31,10 @@ import "oaidl.idl"; import "ocidl.idl"; import "propidl.idl";
+cpp_quote("#ifndef E_NOTFOUND") cpp_quote("#define E_NOTFOUND HRESULT_FROM_WIN32(ERROR_NOT_FOUND)") +cpp_quote("#endif") + cpp_quote("#define DEVTOPO_HARDWARE_INITIATED_EVENTCONTEXT 'draH'") cpp_quote("DEFINE_GUID(EVENTCONTEXT_VOLUMESLIDER, 0xe2c2e9de, 0x09b1, 0x4b04,0x84,0xe5, 0x07, 0x93, 0x12, 0x25, 0xee, 0x04);")
diff --git a/include/mmdeviceapi.idl b/include/mmdeviceapi.idl new file mode 100644 index 0000000..e452e89 --- /dev/null +++ b/include/mmdeviceapi.idl @@ -0,0 +1,250 @@ +/* + * 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; + } +}