123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286 |
- /*
- * 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;
- }
- }
|