00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 #pragma warning( disable: 4049 )
00018
00019
00020
00021 #ifndef __REQUIRED_RPCNDR_H_VERSION__
00022 #define __REQUIRED_RPCNDR_H_VERSION__ 500
00023 #endif
00024
00025
00026 #ifndef __REQUIRED_RPCSAL_H_VERSION__
00027 #define __REQUIRED_RPCSAL_H_VERSION__ 100
00028 #endif
00029
00030 #include "rpc.h"
00031 #include "rpcndr.h"
00032
00033 #ifndef __RPCNDR_H_VERSION__
00034 #error this stub requires an updated version of <rpcndr.h>
00035 #endif // __RPCNDR_H_VERSION__
00036
00037 #ifndef COM_NO_WINDOWS_H
00038 #include "windows.h"
00039 #include "ole2.h"
00040 #endif
00041
00042 #ifndef __mmdeviceapi_h__
00043 #define __mmdeviceapi_h__
00044
00045 #if __GNUC__ >=3
00046 #pragma GCC system_header
00047 #endif
00048
00049 #if defined(_MSC_VER) && (_MSC_VER >= 1020)
00050 #pragma once
00051 #endif
00052
00053
00054
00055 #ifndef __IMMNotificationClient_FWD_DEFINED__
00056 #define __IMMNotificationClient_FWD_DEFINED__
00057 typedef interface IMMNotificationClient IMMNotificationClient;
00058 #endif
00059
00060
00061 #ifndef __IMMDevice_FWD_DEFINED__
00062 #define __IMMDevice_FWD_DEFINED__
00063 typedef interface IMMDevice IMMDevice;
00064 #endif
00065
00066
00067 #ifndef __IMMDeviceCollection_FWD_DEFINED__
00068 #define __IMMDeviceCollection_FWD_DEFINED__
00069 typedef interface IMMDeviceCollection IMMDeviceCollection;
00070 #endif
00071
00072
00073 #ifndef __IMMEndpoint_FWD_DEFINED__
00074 #define __IMMEndpoint_FWD_DEFINED__
00075 typedef interface IMMEndpoint IMMEndpoint;
00076 #endif
00077
00078
00079 #ifndef __IMMDeviceEnumerator_FWD_DEFINED__
00080 #define __IMMDeviceEnumerator_FWD_DEFINED__
00081 typedef interface IMMDeviceEnumerator IMMDeviceEnumerator;
00082 #endif
00083
00084
00085 #ifndef __IMMDeviceActivator_FWD_DEFINED__
00086 #define __IMMDeviceActivator_FWD_DEFINED__
00087 typedef interface IMMDeviceActivator IMMDeviceActivator;
00088 #endif
00089
00090
00091 #ifndef __MMDeviceEnumerator_FWD_DEFINED__
00092 #define __MMDeviceEnumerator_FWD_DEFINED__
00093
00094 #ifdef __cplusplus
00095 typedef class MMDeviceEnumerator MMDeviceEnumerator;
00096 #else
00097 typedef struct MMDeviceEnumerator MMDeviceEnumerator;
00098 #endif
00099
00100 #endif
00101
00102
00103
00104 #include "unknwn.h"
00105 #include "propsys.h"
00106
00107 #ifdef __cplusplus
00108 extern "C"{
00109 #endif
00110
00111
00112
00113
00114
00115 #define E_NOTFOUND HRESULT_FROM_WIN32(ERROR_NOT_FOUND)
00116 #define E_UNSUPPORTED_TYPE HRESULT_FROM_WIN32(ERROR_UNSUPPORTED_TYPE)
00117 #define DEVICE_STATE_ACTIVE 0x00000001
00118 #define DEVICE_STATE_DISABLED 0x00000002
00119 #define DEVICE_STATE_NOTPRESENT 0x00000004
00120 #define DEVICE_STATE_UNPLUGGED 0x00000008
00121 #define DEVICE_STATEMASK_ALL 0x0000000f
00122 #ifdef DEFINE_PROPERTYKEY
00123 #undef DEFINE_PROPERTYKEY
00124 #endif
00125 #ifdef INITGUID
00126 #define DEFINE_PROPERTYKEY(name, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8, pid) EXTERN_C const PROPERTYKEY name = { { l, w1, w2, { b1, b2, b3, b4, b5, b6, b7, b8 } }, pid }
00127 #else
00128 #define DEFINE_PROPERTYKEY(name, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8, pid) EXTERN_C const PROPERTYKEY name
00129 #endif // INITGUID
00130 DEFINE_PROPERTYKEY(PKEY_AudioEndpoint_FormFactor, 0x1da5d803, 0xd492, 0x4edd, 0x8c, 0x23, 0xe0, 0xc0, 0xff, 0xee, 0x7f, 0x0e, 0);
00131 DEFINE_PROPERTYKEY(PKEY_AudioEndpoint_ControlPanelPageProvider, 0x1da5d803, 0xd492, 0x4edd, 0x8c, 0x23, 0xe0, 0xc0, 0xff, 0xee, 0x7f, 0x0e, 1);
00132 DEFINE_PROPERTYKEY(PKEY_AudioEndpoint_Association, 0x1da5d803, 0xd492, 0x4edd, 0x8c, 0x23, 0xe0, 0xc0, 0xff, 0xee, 0x7f, 0x0e, 2);
00133 DEFINE_PROPERTYKEY(PKEY_AudioEndpoint_PhysicalSpeakers, 0x1da5d803, 0xd492, 0x4edd, 0x8c, 0x23, 0xe0, 0xc0, 0xff, 0xee, 0x7f, 0x0e, 3);
00134 DEFINE_PROPERTYKEY(PKEY_AudioEndpoint_GUID, 0x1da5d803, 0xd492, 0x4edd, 0x8c, 0x23, 0xe0, 0xc0, 0xff, 0xee, 0x7f, 0x0e, 4);
00135 DEFINE_PROPERTYKEY(PKEY_AudioEndpoint_Disable_SysFx, 0x1da5d803, 0xd492, 0x4edd, 0x8c, 0x23, 0xe0, 0xc0, 0xff, 0xee, 0x7f, 0x0e, 5);
00136 #define ENDPOINT_SYSFX_ENABLED 0x00000000 // System Effects are enabled.
00137 #define ENDPOINT_SYSFX_DISABLED 0x00000001 // System Effects are disabled.
00138 DEFINE_PROPERTYKEY(PKEY_AudioEndpoint_FullRangeSpeakers, 0x1da5d803, 0xd492, 0x4edd, 0x8c, 0x23, 0xe0, 0xc0, 0xff, 0xee, 0x7f, 0x0e, 6);
00139 DEFINE_PROPERTYKEY(PKEY_AudioEngine_DeviceFormat, 0xf19f064d, 0x82c, 0x4e27, 0xbc, 0x73, 0x68, 0x82, 0xa1, 0xbb, 0x8e, 0x4c, 0);
00140 typedef struct tagDIRECTX_AUDIO_ACTIVATION_PARAMS
00141 {
00142 DWORD cbDirectXAudioActivationParams;
00143 GUID guidAudioSession;
00144 DWORD dwAudioStreamFlags;
00145 } DIRECTX_AUDIO_ACTIVATION_PARAMS;
00146
00147 typedef struct tagDIRECTX_AUDIO_ACTIVATION_PARAMS *PDIRECTX_AUDIO_ACTIVATION_PARAMS;
00148
00149 typedef
00150 enum __MIDL___MIDL_itf_mmdeviceapi_0000_0000_0001
00151 { eRender = 0,
00152 eCapture = ( eRender + 1 ) ,
00153 eAll = ( eCapture + 1 ) ,
00154 EDataFlow_enum_count = ( eAll + 1 )
00155 } EDataFlow;
00156
00157 typedef
00158 enum __MIDL___MIDL_itf_mmdeviceapi_0000_0000_0002
00159 { eConsole = 0,
00160 eMultimedia = ( eConsole + 1 ) ,
00161 eCommunications = ( eMultimedia + 1 ) ,
00162 ERole_enum_count = ( eCommunications + 1 )
00163 } ERole;
00164
00165 typedef
00166 enum __MIDL___MIDL_itf_mmdeviceapi_0000_0000_0003
00167 { RemoteNetworkDevice = 0,
00168 Speakers = ( RemoteNetworkDevice + 1 ) ,
00169 LineLevel = ( Speakers + 1 ) ,
00170 Headphones = ( LineLevel + 1 ) ,
00171 Microphone = ( Headphones + 1 ) ,
00172 Headset = ( Microphone + 1 ) ,
00173 Handset = ( Headset + 1 ) ,
00174 UnknownDigitalPassthrough = ( Handset + 1 ) ,
00175 SPDIF = ( UnknownDigitalPassthrough + 1 ) ,
00176 HDMI = ( SPDIF + 1 ) ,
00177 UnknownFormFactor = ( HDMI + 1 )
00178 } EndpointFormFactor;
00179
00180
00181
00182 extern RPC_IF_HANDLE __MIDL_itf_mmdeviceapi_0000_0000_v0_0_c_ifspec;
00183 extern RPC_IF_HANDLE __MIDL_itf_mmdeviceapi_0000_0000_v0_0_s_ifspec;
00184
00185 #ifndef __IMMNotificationClient_INTERFACE_DEFINED__
00186 #define __IMMNotificationClient_INTERFACE_DEFINED__
00187
00188
00189
00190
00191
00192 EXTERN_C const IID IID_IMMNotificationClient;
00193
00194 #if defined(__cplusplus) && !defined(CINTERFACE)
00195
00196 MIDL_INTERFACE("7991EEC9-7E89-4D85-8390-6C703CEC60C0")
00197 IMMNotificationClient : public IUnknown
00198 {
00199 public:
00200 virtual HRESULT STDMETHODCALLTYPE OnDeviceStateChanged(
00201
00202 __in LPCWSTR pwstrDeviceId,
00203
00204 __in DWORD dwNewState) = 0;
00205
00206 virtual HRESULT STDMETHODCALLTYPE OnDeviceAdded(
00207
00208 __in LPCWSTR pwstrDeviceId) = 0;
00209
00210 virtual HRESULT STDMETHODCALLTYPE OnDeviceRemoved(
00211
00212 __in LPCWSTR pwstrDeviceId) = 0;
00213
00214 virtual HRESULT STDMETHODCALLTYPE OnDefaultDeviceChanged(
00215
00216 __in EDataFlow flow,
00217
00218 __in ERole role,
00219
00220 __in LPCWSTR pwstrDefaultDeviceId) = 0;
00221
00222 virtual HRESULT STDMETHODCALLTYPE OnPropertyValueChanged(
00223
00224 __in LPCWSTR pwstrDeviceId,
00225
00226 __in const PROPERTYKEY key) = 0;
00227
00228 };
00229
00230 #else
00231
00232 typedef struct IMMNotificationClientVtbl
00233 {
00234 BEGIN_INTERFACE
00235
00236 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
00237 IMMNotificationClient * This,
00238 REFIID riid,
00239
00240 __RPC__deref_out void **ppvObject);
00241
00242 ULONG ( STDMETHODCALLTYPE *AddRef )(
00243 IMMNotificationClient * This);
00244
00245 ULONG ( STDMETHODCALLTYPE *Release )(
00246 IMMNotificationClient * This);
00247
00248 HRESULT ( STDMETHODCALLTYPE *OnDeviceStateChanged )(
00249 IMMNotificationClient * This,
00250
00251 __in LPCWSTR pwstrDeviceId,
00252
00253 __in DWORD dwNewState);
00254
00255 HRESULT ( STDMETHODCALLTYPE *OnDeviceAdded )(
00256 IMMNotificationClient * This,
00257
00258 __in LPCWSTR pwstrDeviceId);
00259
00260 HRESULT ( STDMETHODCALLTYPE *OnDeviceRemoved )(
00261 IMMNotificationClient * This,
00262
00263 __in LPCWSTR pwstrDeviceId);
00264
00265 HRESULT ( STDMETHODCALLTYPE *OnDefaultDeviceChanged )(
00266 IMMNotificationClient * This,
00267
00268 __in EDataFlow flow,
00269
00270 __in ERole role,
00271
00272 __in LPCWSTR pwstrDefaultDeviceId);
00273
00274 HRESULT ( STDMETHODCALLTYPE *OnPropertyValueChanged )(
00275 IMMNotificationClient * This,
00276
00277 __in LPCWSTR pwstrDeviceId,
00278
00279 __in const PROPERTYKEY key);
00280
00281 END_INTERFACE
00282 } IMMNotificationClientVtbl;
00283
00284 interface IMMNotificationClient
00285 {
00286 CONST_VTBL struct IMMNotificationClientVtbl *lpVtbl;
00287 };
00288
00289
00290
00291 #ifdef COBJMACROS
00292
00293
00294 #define IMMNotificationClient_QueryInterface(This,riid,ppvObject) \
00295 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
00296
00297 #define IMMNotificationClient_AddRef(This) \
00298 ( (This)->lpVtbl -> AddRef(This) )
00299
00300 #define IMMNotificationClient_Release(This) \
00301 ( (This)->lpVtbl -> Release(This) )
00302
00303
00304 #define IMMNotificationClient_OnDeviceStateChanged(This,pwstrDeviceId,dwNewState) \
00305 ( (This)->lpVtbl -> OnDeviceStateChanged(This,pwstrDeviceId,dwNewState) )
00306
00307 #define IMMNotificationClient_OnDeviceAdded(This,pwstrDeviceId) \
00308 ( (This)->lpVtbl -> OnDeviceAdded(This,pwstrDeviceId) )
00309
00310 #define IMMNotificationClient_OnDeviceRemoved(This,pwstrDeviceId) \
00311 ( (This)->lpVtbl -> OnDeviceRemoved(This,pwstrDeviceId) )
00312
00313 #define IMMNotificationClient_OnDefaultDeviceChanged(This,flow,role,pwstrDefaultDeviceId) \
00314 ( (This)->lpVtbl -> OnDefaultDeviceChanged(This,flow,role,pwstrDefaultDeviceId) )
00315
00316 #define IMMNotificationClient_OnPropertyValueChanged(This,pwstrDeviceId,key) \
00317 ( (This)->lpVtbl -> OnPropertyValueChanged(This,pwstrDeviceId,key) )
00318
00319 #endif
00320
00321
00322 #endif
00323
00324
00325
00326
00327 #endif
00328
00329
00330 #ifndef __IMMDevice_INTERFACE_DEFINED__
00331 #define __IMMDevice_INTERFACE_DEFINED__
00332
00333
00334
00335
00336
00337 EXTERN_C const IID IID_IMMDevice;
00338
00339 #if defined(__cplusplus) && !defined(CINTERFACE)
00340
00341 MIDL_INTERFACE("D666063F-1587-4E43-81F1-B948E807363F")
00342 IMMDevice : public IUnknown
00343 {
00344 public:
00345 virtual HRESULT STDMETHODCALLTYPE Activate(
00346
00347 __in REFIID iid,
00348
00349 __in DWORD dwClsCtx,
00350
00351 __in_opt PROPVARIANT *pActivationParams,
00352
00353 __out void **ppInterface) = 0;
00354
00355 virtual HRESULT STDMETHODCALLTYPE OpenPropertyStore(
00356
00357 __in DWORD stgmAccess,
00358
00359 __out IPropertyStore **ppProperties) = 0;
00360
00361 virtual HRESULT STDMETHODCALLTYPE GetId(
00362
00363 __deref_out LPWSTR *ppstrId) = 0;
00364
00365 virtual HRESULT STDMETHODCALLTYPE GetState(
00366
00367 __out DWORD *pdwState) = 0;
00368
00369 };
00370
00371 #else
00372
00373 typedef struct IMMDeviceVtbl
00374 {
00375 BEGIN_INTERFACE
00376
00377 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
00378 IMMDevice * This,
00379 REFIID riid,
00380
00381 __RPC__deref_out void **ppvObject);
00382
00383 ULONG ( STDMETHODCALLTYPE *AddRef )(
00384 IMMDevice * This);
00385
00386 ULONG ( STDMETHODCALLTYPE *Release )(
00387 IMMDevice * This);
00388
00389 HRESULT ( STDMETHODCALLTYPE *Activate )(
00390 IMMDevice * This,
00391
00392 __in REFIID iid,
00393
00394 __in DWORD dwClsCtx,
00395
00396 __in_opt PROPVARIANT *pActivationParams,
00397
00398 __out void **ppInterface);
00399
00400 HRESULT ( STDMETHODCALLTYPE *OpenPropertyStore )(
00401 IMMDevice * This,
00402
00403 __in DWORD stgmAccess,
00404
00405 __out IPropertyStore **ppProperties);
00406
00407 HRESULT ( STDMETHODCALLTYPE *GetId )(
00408 IMMDevice * This,
00409
00410 __deref_out LPWSTR *ppstrId);
00411
00412 HRESULT ( STDMETHODCALLTYPE *GetState )(
00413 IMMDevice * This,
00414
00415 __out DWORD *pdwState);
00416
00417 END_INTERFACE
00418 } IMMDeviceVtbl;
00419
00420 interface IMMDevice
00421 {
00422 CONST_VTBL struct IMMDeviceVtbl *lpVtbl;
00423 };
00424
00425
00426
00427 #ifdef COBJMACROS
00428
00429
00430 #define IMMDevice_QueryInterface(This,riid,ppvObject) \
00431 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
00432
00433 #define IMMDevice_AddRef(This) \
00434 ( (This)->lpVtbl -> AddRef(This) )
00435
00436 #define IMMDevice_Release(This) \
00437 ( (This)->lpVtbl -> Release(This) )
00438
00439
00440 #define IMMDevice_Activate(This,iid,dwClsCtx,pActivationParams,ppInterface) \
00441 ( (This)->lpVtbl -> Activate(This,iid,dwClsCtx,pActivationParams,ppInterface) )
00442
00443 #define IMMDevice_OpenPropertyStore(This,stgmAccess,ppProperties) \
00444 ( (This)->lpVtbl -> OpenPropertyStore(This,stgmAccess,ppProperties) )
00445
00446 #define IMMDevice_GetId(This,ppstrId) \
00447 ( (This)->lpVtbl -> GetId(This,ppstrId) )
00448
00449 #define IMMDevice_GetState(This,pdwState) \
00450 ( (This)->lpVtbl -> GetState(This,pdwState) )
00451
00452 #endif
00453
00454
00455 #endif
00456
00457
00458
00459
00460 #endif
00461
00462
00463 #ifndef __IMMDeviceCollection_INTERFACE_DEFINED__
00464 #define __IMMDeviceCollection_INTERFACE_DEFINED__
00465
00466
00467
00468
00469
00470 EXTERN_C const IID IID_IMMDeviceCollection;
00471
00472 #if defined(__cplusplus) && !defined(CINTERFACE)
00473
00474 MIDL_INTERFACE("0BD7A1BE-7A1A-44DB-8397-CC5392387B5E")
00475 IMMDeviceCollection : public IUnknown
00476 {
00477 public:
00478 virtual HRESULT STDMETHODCALLTYPE GetCount(
00479
00480 __out UINT *pcDevices) = 0;
00481
00482 virtual HRESULT STDMETHODCALLTYPE Item(
00483
00484 __in UINT nDevice,
00485
00486 __out IMMDevice **ppDevice) = 0;
00487
00488 };
00489
00490 #else
00491
00492 typedef struct IMMDeviceCollectionVtbl
00493 {
00494 BEGIN_INTERFACE
00495
00496 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
00497 IMMDeviceCollection * This,
00498 REFIID riid,
00499
00500 __RPC__deref_out void **ppvObject);
00501
00502 ULONG ( STDMETHODCALLTYPE *AddRef )(
00503 IMMDeviceCollection * This);
00504
00505 ULONG ( STDMETHODCALLTYPE *Release )(
00506 IMMDeviceCollection * This);
00507
00508 HRESULT ( STDMETHODCALLTYPE *GetCount )(
00509 IMMDeviceCollection * This,
00510
00511 __out UINT *pcDevices);
00512
00513 HRESULT ( STDMETHODCALLTYPE *Item )(
00514 IMMDeviceCollection * This,
00515
00516 __in UINT nDevice,
00517
00518 __out IMMDevice **ppDevice);
00519
00520 END_INTERFACE
00521 } IMMDeviceCollectionVtbl;
00522
00523 interface IMMDeviceCollection
00524 {
00525 CONST_VTBL struct IMMDeviceCollectionVtbl *lpVtbl;
00526 };
00527
00528
00529
00530 #ifdef COBJMACROS
00531
00532
00533 #define IMMDeviceCollection_QueryInterface(This,riid,ppvObject) \
00534 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
00535
00536 #define IMMDeviceCollection_AddRef(This) \
00537 ( (This)->lpVtbl -> AddRef(This) )
00538
00539 #define IMMDeviceCollection_Release(This) \
00540 ( (This)->lpVtbl -> Release(This) )
00541
00542
00543 #define IMMDeviceCollection_GetCount(This,pcDevices) \
00544 ( (This)->lpVtbl -> GetCount(This,pcDevices) )
00545
00546 #define IMMDeviceCollection_Item(This,nDevice,ppDevice) \
00547 ( (This)->lpVtbl -> Item(This,nDevice,ppDevice) )
00548
00549 #endif
00550
00551
00552 #endif
00553
00554
00555
00556
00557 #endif
00558
00559
00560 #ifndef __IMMEndpoint_INTERFACE_DEFINED__
00561 #define __IMMEndpoint_INTERFACE_DEFINED__
00562
00563
00564
00565
00566
00567 EXTERN_C const IID IID_IMMEndpoint;
00568
00569 #if defined(__cplusplus) && !defined(CINTERFACE)
00570
00571 MIDL_INTERFACE("1BE09788-6894-4089-8586-9A2A6C265AC5")
00572 IMMEndpoint : public IUnknown
00573 {
00574 public:
00575 virtual HRESULT STDMETHODCALLTYPE GetDataFlow(
00576
00577 __out EDataFlow *pDataFlow) = 0;
00578
00579 };
00580
00581 #else
00582
00583 typedef struct IMMEndpointVtbl
00584 {
00585 BEGIN_INTERFACE
00586
00587 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
00588 IMMEndpoint * This,
00589 REFIID riid,
00590
00591 __RPC__deref_out void **ppvObject);
00592
00593 ULONG ( STDMETHODCALLTYPE *AddRef )(
00594 IMMEndpoint * This);
00595
00596 ULONG ( STDMETHODCALLTYPE *Release )(
00597 IMMEndpoint * This);
00598
00599 HRESULT ( STDMETHODCALLTYPE *GetDataFlow )(
00600 IMMEndpoint * This,
00601
00602 __out EDataFlow *pDataFlow);
00603
00604 END_INTERFACE
00605 } IMMEndpointVtbl;
00606
00607 interface IMMEndpoint
00608 {
00609 CONST_VTBL struct IMMEndpointVtbl *lpVtbl;
00610 };
00611
00612
00613
00614 #ifdef COBJMACROS
00615
00616
00617 #define IMMEndpoint_QueryInterface(This,riid,ppvObject) \
00618 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
00619
00620 #define IMMEndpoint_AddRef(This) \
00621 ( (This)->lpVtbl -> AddRef(This) )
00622
00623 #define IMMEndpoint_Release(This) \
00624 ( (This)->lpVtbl -> Release(This) )
00625
00626
00627 #define IMMEndpoint_GetDataFlow(This,pDataFlow) \
00628 ( (This)->lpVtbl -> GetDataFlow(This,pDataFlow) )
00629
00630 #endif
00631
00632
00633 #endif
00634
00635
00636
00637
00638 #endif
00639
00640
00641 #ifndef __IMMDeviceEnumerator_INTERFACE_DEFINED__
00642 #define __IMMDeviceEnumerator_INTERFACE_DEFINED__
00643
00644
00645
00646
00647
00648 EXTERN_C const IID IID_IMMDeviceEnumerator;
00649
00650 #if defined(__cplusplus) && !defined(CINTERFACE)
00651
00652 MIDL_INTERFACE("A95664D2-9614-4F35-A746-DE8DB63617E6")
00653 IMMDeviceEnumerator : public IUnknown
00654 {
00655 public:
00656 virtual HRESULT STDMETHODCALLTYPE EnumAudioEndpoints(
00657
00658 __in EDataFlow dataFlow,
00659
00660 __in DWORD dwStateMask,
00661
00662 __out IMMDeviceCollection **ppDevices) = 0;
00663
00664 virtual HRESULT STDMETHODCALLTYPE GetDefaultAudioEndpoint(
00665
00666 __in EDataFlow dataFlow,
00667
00668 __in ERole role,
00669
00670 __out IMMDevice **ppEndpoint) = 0;
00671
00672 virtual HRESULT STDMETHODCALLTYPE GetDevice(
00673
00674 __in LPCWSTR pwstrId,
00675
00676 __out IMMDevice **ppDevice) = 0;
00677
00678 virtual HRESULT STDMETHODCALLTYPE RegisterEndpointNotificationCallback(
00679
00680 __in IMMNotificationClient *pClient) = 0;
00681
00682 virtual HRESULT STDMETHODCALLTYPE UnregisterEndpointNotificationCallback(
00683
00684 __in IMMNotificationClient *pClient) = 0;
00685
00686 };
00687
00688 #else
00689
00690 typedef struct IMMDeviceEnumeratorVtbl
00691 {
00692 BEGIN_INTERFACE
00693
00694 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
00695 IMMDeviceEnumerator * This,
00696 REFIID riid,
00697
00698 __RPC__deref_out void **ppvObject);
00699
00700 ULONG ( STDMETHODCALLTYPE *AddRef )(
00701 IMMDeviceEnumerator * This);
00702
00703 ULONG ( STDMETHODCALLTYPE *Release )(
00704 IMMDeviceEnumerator * This);
00705
00706 HRESULT ( STDMETHODCALLTYPE *EnumAudioEndpoints )(
00707 IMMDeviceEnumerator * This,
00708
00709 __in EDataFlow dataFlow,
00710
00711 __in DWORD dwStateMask,
00712
00713 __out IMMDeviceCollection **ppDevices);
00714
00715 HRESULT ( STDMETHODCALLTYPE *GetDefaultAudioEndpoint )(
00716 IMMDeviceEnumerator * This,
00717
00718 __in EDataFlow dataFlow,
00719
00720 __in ERole role,
00721
00722 __out IMMDevice **ppEndpoint);
00723
00724 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
00725 IMMDeviceEnumerator * This,
00726
00727 __in LPCWSTR pwstrId,
00728
00729 __out IMMDevice **ppDevice);
00730
00731 HRESULT ( STDMETHODCALLTYPE *RegisterEndpointNotificationCallback )(
00732 IMMDeviceEnumerator * This,
00733
00734 __in IMMNotificationClient *pClient);
00735
00736 HRESULT ( STDMETHODCALLTYPE *UnregisterEndpointNotificationCallback )(
00737 IMMDeviceEnumerator * This,
00738
00739 __in IMMNotificationClient *pClient);
00740
00741 END_INTERFACE
00742 } IMMDeviceEnumeratorVtbl;
00743
00744 interface IMMDeviceEnumerator
00745 {
00746 CONST_VTBL struct IMMDeviceEnumeratorVtbl *lpVtbl;
00747 };
00748
00749
00750
00751 #ifdef COBJMACROS
00752
00753
00754 #define IMMDeviceEnumerator_QueryInterface(This,riid,ppvObject) \
00755 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
00756
00757 #define IMMDeviceEnumerator_AddRef(This) \
00758 ( (This)->lpVtbl -> AddRef(This) )
00759
00760 #define IMMDeviceEnumerator_Release(This) \
00761 ( (This)->lpVtbl -> Release(This) )
00762
00763
00764 #define IMMDeviceEnumerator_EnumAudioEndpoints(This,dataFlow,dwStateMask,ppDevices) \
00765 ( (This)->lpVtbl -> EnumAudioEndpoints(This,dataFlow,dwStateMask,ppDevices) )
00766
00767 #define IMMDeviceEnumerator_GetDefaultAudioEndpoint(This,dataFlow,role,ppEndpoint) \
00768 ( (This)->lpVtbl -> GetDefaultAudioEndpoint(This,dataFlow,role,ppEndpoint) )
00769
00770 #define IMMDeviceEnumerator_GetDevice(This,pwstrId,ppDevice) \
00771 ( (This)->lpVtbl -> GetDevice(This,pwstrId,ppDevice) )
00772
00773 #define IMMDeviceEnumerator_RegisterEndpointNotificationCallback(This,pClient) \
00774 ( (This)->lpVtbl -> RegisterEndpointNotificationCallback(This,pClient) )
00775
00776 #define IMMDeviceEnumerator_UnregisterEndpointNotificationCallback(This,pClient) \
00777 ( (This)->lpVtbl -> UnregisterEndpointNotificationCallback(This,pClient) )
00778
00779 #endif
00780
00781
00782 #endif
00783
00784
00785
00786
00787 #endif
00788
00789
00790 #ifndef __IMMDeviceActivator_INTERFACE_DEFINED__
00791 #define __IMMDeviceActivator_INTERFACE_DEFINED__
00792
00793
00794
00795
00796
00797 EXTERN_C const IID IID_IMMDeviceActivator;
00798
00799 #if defined(__cplusplus) && !defined(CINTERFACE)
00800
00801 MIDL_INTERFACE("3B0D0EA4-D0A9-4B0E-935B-09516746FAC0")
00802 IMMDeviceActivator : public IUnknown
00803 {
00804 public:
00805 virtual HRESULT STDMETHODCALLTYPE Activate(
00806
00807 __in REFIID iid,
00808
00809 __in IMMDevice *pDevice,
00810
00811 __in_opt PROPVARIANT *pActivationParams,
00812
00813 __out void **ppInterface) = 0;
00814
00815 };
00816
00817 #else
00818
00819 typedef struct IMMDeviceActivatorVtbl
00820 {
00821 BEGIN_INTERFACE
00822
00823 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
00824 IMMDeviceActivator * This,
00825 REFIID riid,
00826
00827 __RPC__deref_out void **ppvObject);
00828
00829 ULONG ( STDMETHODCALLTYPE *AddRef )(
00830 IMMDeviceActivator * This);
00831
00832 ULONG ( STDMETHODCALLTYPE *Release )(
00833 IMMDeviceActivator * This);
00834
00835 HRESULT ( STDMETHODCALLTYPE *Activate )(
00836 IMMDeviceActivator * This,
00837
00838 __in REFIID iid,
00839
00840 __in IMMDevice *pDevice,
00841
00842 __in_opt PROPVARIANT *pActivationParams,
00843
00844 __out void **ppInterface);
00845
00846 END_INTERFACE
00847 } IMMDeviceActivatorVtbl;
00848
00849 interface IMMDeviceActivator
00850 {
00851 CONST_VTBL struct IMMDeviceActivatorVtbl *lpVtbl;
00852 };
00853
00854
00855
00856 #ifdef COBJMACROS
00857
00858
00859 #define IMMDeviceActivator_QueryInterface(This,riid,ppvObject) \
00860 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
00861
00862 #define IMMDeviceActivator_AddRef(This) \
00863 ( (This)->lpVtbl -> AddRef(This) )
00864
00865 #define IMMDeviceActivator_Release(This) \
00866 ( (This)->lpVtbl -> Release(This) )
00867
00868
00869 #define IMMDeviceActivator_Activate(This,iid,pDevice,pActivationParams,ppInterface) \
00870 ( (This)->lpVtbl -> Activate(This,iid,pDevice,pActivationParams,ppInterface) )
00871
00872 #endif
00873
00874
00875 #endif
00876
00877
00878
00879
00880 #endif
00881
00882
00883
00884
00885
00886 typedef struct __MIDL___MIDL_itf_mmdeviceapi_0000_0006_0001
00887 {
00888 LPARAM AddPageParam;
00889 IMMDevice *pEndpoint;
00890 IMMDevice *pPnpInterface;
00891 IMMDevice *pPnpDevnode;
00892 } AudioExtensionParams;
00893
00894
00895
00896 extern RPC_IF_HANDLE __MIDL_itf_mmdeviceapi_0000_0006_v0_0_c_ifspec;
00897 extern RPC_IF_HANDLE __MIDL_itf_mmdeviceapi_0000_0006_v0_0_s_ifspec;
00898
00899
00900 #ifndef __MMDeviceAPILib_LIBRARY_DEFINED__
00901 #define __MMDeviceAPILib_LIBRARY_DEFINED__
00902
00903
00904
00905
00906
00907 EXTERN_C const IID LIBID_MMDeviceAPILib;
00908
00909 EXTERN_C const CLSID CLSID_MMDeviceEnumerator;
00910
00911 #ifdef __cplusplus
00912
00913 class DECLSPEC_UUID("BCDE0395-E52F-467C-8E3D-C4579291692E")
00914 MMDeviceEnumerator;
00915 #endif
00916 #endif
00917
00918
00919
00920
00921
00922 #ifdef __cplusplus
00923 }
00924 #endif
00925
00926 #endif
00927
00928
00929