PortAudio 2.0

mmdeviceapi.h

Go to the documentation of this file.
00001 
00002 
00003 /* this ALWAYS GENERATED file contains the definitions for the interfaces */
00004 
00005 
00006  /* File created by MIDL compiler version 7.00.0499 */
00007 /* Compiler settings for mmdeviceapi.idl:
00008     Oicf, W1, Zp8, env=Win32 (32b run)
00009     protocol : dce , ms_ext, c_ext, robust
00010     error checks: allocation ref bounds_check enum stub_data 
00011     VC __declspec() decoration level: 
00012          __declspec(uuid()), __declspec(selectany), __declspec(novtable)
00013          DECLSPEC_UUID(), MIDL_INTERFACE()
00014 */
00015 //@@MIDL_FILE_HEADING(  )
00016 
00017 #pragma warning( disable: 4049 )  /* more than 64k source lines */
00018 
00019 
00020 /* verify that the <rpcndr.h> version is high enough to compile this file*/
00021 #ifndef __REQUIRED_RPCNDR_H_VERSION__
00022 #define __REQUIRED_RPCNDR_H_VERSION__ 500
00023 #endif
00024 
00025 /* verify that the <rpcsal.h> version is high enough to compile this file*/
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 /*COM_NO_WINDOWS_H*/
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 /* Forward Declarations */ 
00054 
00055 #ifndef __IMMNotificationClient_FWD_DEFINED__
00056 #define __IMMNotificationClient_FWD_DEFINED__
00057 typedef interface IMMNotificationClient IMMNotificationClient;
00058 #endif  /* __IMMNotificationClient_FWD_DEFINED__ */
00059 
00060 
00061 #ifndef __IMMDevice_FWD_DEFINED__
00062 #define __IMMDevice_FWD_DEFINED__
00063 typedef interface IMMDevice IMMDevice;
00064 #endif  /* __IMMDevice_FWD_DEFINED__ */
00065 
00066 
00067 #ifndef __IMMDeviceCollection_FWD_DEFINED__
00068 #define __IMMDeviceCollection_FWD_DEFINED__
00069 typedef interface IMMDeviceCollection IMMDeviceCollection;
00070 #endif  /* __IMMDeviceCollection_FWD_DEFINED__ */
00071 
00072 
00073 #ifndef __IMMEndpoint_FWD_DEFINED__
00074 #define __IMMEndpoint_FWD_DEFINED__
00075 typedef interface IMMEndpoint IMMEndpoint;
00076 #endif  /* __IMMEndpoint_FWD_DEFINED__ */
00077 
00078 
00079 #ifndef __IMMDeviceEnumerator_FWD_DEFINED__
00080 #define __IMMDeviceEnumerator_FWD_DEFINED__
00081 typedef interface IMMDeviceEnumerator IMMDeviceEnumerator;
00082 #endif  /* __IMMDeviceEnumerator_FWD_DEFINED__ */
00083 
00084 
00085 #ifndef __IMMDeviceActivator_FWD_DEFINED__
00086 #define __IMMDeviceActivator_FWD_DEFINED__
00087 typedef interface IMMDeviceActivator IMMDeviceActivator;
00088 #endif  /* __IMMDeviceActivator_FWD_DEFINED__ */
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 /* __cplusplus */
00099 
00100 #endif  /* __MMDeviceEnumerator_FWD_DEFINED__ */
00101 
00102 
00103 /* header files for imported files */
00104 #include "unknwn.h"
00105 #include "propsys.h"
00106 
00107 #ifdef __cplusplus
00108 extern "C"{
00109 #endif 
00110 
00111 
00112 /* interface __MIDL_itf_mmdeviceapi_0000_0000 */
00113 /* [local] */ 
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 /* [public][public][public][public][public] */ 
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 /* [public][public][public] */ 
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 /* [public] */ 
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 /* interface IMMNotificationClient */
00189 /* [unique][helpstring][nonextensible][uuid][local][object] */ 
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 /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE OnDeviceStateChanged( 
00201             /* [in] */ 
00202             __in  LPCWSTR pwstrDeviceId,
00203             /* [in] */ 
00204             __in  DWORD dwNewState) = 0;
00205         
00206         virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE OnDeviceAdded( 
00207             /* [in] */ 
00208             __in  LPCWSTR pwstrDeviceId) = 0;
00209         
00210         virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE OnDeviceRemoved( 
00211             /* [in] */ 
00212             __in  LPCWSTR pwstrDeviceId) = 0;
00213         
00214         virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE OnDefaultDeviceChanged( 
00215             /* [in] */ 
00216             __in  EDataFlow flow,
00217             /* [in] */ 
00218             __in  ERole role,
00219             /* [in] */ 
00220             __in  LPCWSTR pwstrDefaultDeviceId) = 0;
00221         
00222         virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE OnPropertyValueChanged( 
00223             /* [in] */ 
00224             __in  LPCWSTR pwstrDeviceId,
00225             /* [in] */ 
00226             __in  const PROPERTYKEY key) = 0;
00227         
00228     };
00229     
00230 #else   /* C style interface */
00231 
00232     typedef struct IMMNotificationClientVtbl
00233     {
00234         BEGIN_INTERFACE
00235         
00236         HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
00237             IMMNotificationClient * This,
00238             /* [in] */ REFIID riid,
00239             /* [iid_is][out] */ 
00240             __RPC__deref_out  void **ppvObject);
00241         
00242         ULONG ( STDMETHODCALLTYPE *AddRef )( 
00243             IMMNotificationClient * This);
00244         
00245         ULONG ( STDMETHODCALLTYPE *Release )( 
00246             IMMNotificationClient * This);
00247         
00248         /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *OnDeviceStateChanged )( 
00249             IMMNotificationClient * This,
00250             /* [in] */ 
00251             __in  LPCWSTR pwstrDeviceId,
00252             /* [in] */ 
00253             __in  DWORD dwNewState);
00254         
00255         /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *OnDeviceAdded )( 
00256             IMMNotificationClient * This,
00257             /* [in] */ 
00258             __in  LPCWSTR pwstrDeviceId);
00259         
00260         /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *OnDeviceRemoved )( 
00261             IMMNotificationClient * This,
00262             /* [in] */ 
00263             __in  LPCWSTR pwstrDeviceId);
00264         
00265         /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *OnDefaultDeviceChanged )( 
00266             IMMNotificationClient * This,
00267             /* [in] */ 
00268             __in  EDataFlow flow,
00269             /* [in] */ 
00270             __in  ERole role,
00271             /* [in] */ 
00272             __in  LPCWSTR pwstrDefaultDeviceId);
00273         
00274         /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *OnPropertyValueChanged )( 
00275             IMMNotificationClient * This,
00276             /* [in] */ 
00277             __in  LPCWSTR pwstrDeviceId,
00278             /* [in] */ 
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 /* COBJMACROS */
00320 
00321 
00322 #endif  /* C style interface */
00323 
00324 
00325 
00326 
00327 #endif  /* __IMMNotificationClient_INTERFACE_DEFINED__ */
00328 
00329 
00330 #ifndef __IMMDevice_INTERFACE_DEFINED__
00331 #define __IMMDevice_INTERFACE_DEFINED__
00332 
00333 /* interface IMMDevice */
00334 /* [unique][helpstring][nonextensible][uuid][local][object] */ 
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 /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE Activate( 
00346             /* [in] */ 
00347             __in  REFIID iid,
00348             /* [in] */ 
00349             __in  DWORD dwClsCtx,
00350             /* [unique][in] */ 
00351             __in_opt  PROPVARIANT *pActivationParams,
00352             /* [iid_is][out] */ 
00353             __out  void **ppInterface) = 0;
00354         
00355         virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE OpenPropertyStore( 
00356             /* [in] */ 
00357             __in  DWORD stgmAccess,
00358             /* [out] */ 
00359             __out  IPropertyStore **ppProperties) = 0;
00360         
00361         virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE GetId( 
00362             /* [out] */ 
00363             __deref_out  LPWSTR *ppstrId) = 0;
00364         
00365         virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE GetState( 
00366             /* [out] */ 
00367             __out  DWORD *pdwState) = 0;
00368         
00369     };
00370     
00371 #else   /* C style interface */
00372 
00373     typedef struct IMMDeviceVtbl
00374     {
00375         BEGIN_INTERFACE
00376         
00377         HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
00378             IMMDevice * This,
00379             /* [in] */ REFIID riid,
00380             /* [iid_is][out] */ 
00381             __RPC__deref_out  void **ppvObject);
00382         
00383         ULONG ( STDMETHODCALLTYPE *AddRef )( 
00384             IMMDevice * This);
00385         
00386         ULONG ( STDMETHODCALLTYPE *Release )( 
00387             IMMDevice * This);
00388         
00389         /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Activate )( 
00390             IMMDevice * This,
00391             /* [in] */ 
00392             __in  REFIID iid,
00393             /* [in] */ 
00394             __in  DWORD dwClsCtx,
00395             /* [unique][in] */ 
00396             __in_opt  PROPVARIANT *pActivationParams,
00397             /* [iid_is][out] */ 
00398             __out  void **ppInterface);
00399         
00400         /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *OpenPropertyStore )( 
00401             IMMDevice * This,
00402             /* [in] */ 
00403             __in  DWORD stgmAccess,
00404             /* [out] */ 
00405             __out  IPropertyStore **ppProperties);
00406         
00407         /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *GetId )( 
00408             IMMDevice * This,
00409             /* [out] */ 
00410             __deref_out  LPWSTR *ppstrId);
00411         
00412         /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *GetState )( 
00413             IMMDevice * This,
00414             /* [out] */ 
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 /* COBJMACROS */
00453 
00454 
00455 #endif  /* C style interface */
00456 
00457 
00458 
00459 
00460 #endif  /* __IMMDevice_INTERFACE_DEFINED__ */
00461 
00462 
00463 #ifndef __IMMDeviceCollection_INTERFACE_DEFINED__
00464 #define __IMMDeviceCollection_INTERFACE_DEFINED__
00465 
00466 /* interface IMMDeviceCollection */
00467 /* [unique][helpstring][nonextensible][uuid][local][object] */ 
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 /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE GetCount( 
00479             /* [out] */ 
00480             __out  UINT *pcDevices) = 0;
00481         
00482         virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE Item( 
00483             /* [in] */ 
00484             __in  UINT nDevice,
00485             /* [out] */ 
00486             __out  IMMDevice **ppDevice) = 0;
00487         
00488     };
00489     
00490 #else   /* C style interface */
00491 
00492     typedef struct IMMDeviceCollectionVtbl
00493     {
00494         BEGIN_INTERFACE
00495         
00496         HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
00497             IMMDeviceCollection * This,
00498             /* [in] */ REFIID riid,
00499             /* [iid_is][out] */ 
00500             __RPC__deref_out  void **ppvObject);
00501         
00502         ULONG ( STDMETHODCALLTYPE *AddRef )( 
00503             IMMDeviceCollection * This);
00504         
00505         ULONG ( STDMETHODCALLTYPE *Release )( 
00506             IMMDeviceCollection * This);
00507         
00508         /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *GetCount )( 
00509             IMMDeviceCollection * This,
00510             /* [out] */ 
00511             __out  UINT *pcDevices);
00512         
00513         /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Item )( 
00514             IMMDeviceCollection * This,
00515             /* [in] */ 
00516             __in  UINT nDevice,
00517             /* [out] */ 
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 /* COBJMACROS */
00550 
00551 
00552 #endif  /* C style interface */
00553 
00554 
00555 
00556 
00557 #endif  /* __IMMDeviceCollection_INTERFACE_DEFINED__ */
00558 
00559 
00560 #ifndef __IMMEndpoint_INTERFACE_DEFINED__
00561 #define __IMMEndpoint_INTERFACE_DEFINED__
00562 
00563 /* interface IMMEndpoint */
00564 /* [unique][helpstring][nonextensible][uuid][local][object] */ 
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 /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE GetDataFlow( 
00576             /* [out] */ 
00577             __out  EDataFlow *pDataFlow) = 0;
00578         
00579     };
00580     
00581 #else   /* C style interface */
00582 
00583     typedef struct IMMEndpointVtbl
00584     {
00585         BEGIN_INTERFACE
00586         
00587         HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
00588             IMMEndpoint * This,
00589             /* [in] */ REFIID riid,
00590             /* [iid_is][out] */ 
00591             __RPC__deref_out  void **ppvObject);
00592         
00593         ULONG ( STDMETHODCALLTYPE *AddRef )( 
00594             IMMEndpoint * This);
00595         
00596         ULONG ( STDMETHODCALLTYPE *Release )( 
00597             IMMEndpoint * This);
00598         
00599         /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *GetDataFlow )( 
00600             IMMEndpoint * This,
00601             /* [out] */ 
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 /* COBJMACROS */
00631 
00632 
00633 #endif  /* C style interface */
00634 
00635 
00636 
00637 
00638 #endif  /* __IMMEndpoint_INTERFACE_DEFINED__ */
00639 
00640 
00641 #ifndef __IMMDeviceEnumerator_INTERFACE_DEFINED__
00642 #define __IMMDeviceEnumerator_INTERFACE_DEFINED__
00643 
00644 /* interface IMMDeviceEnumerator */
00645 /* [unique][helpstring][nonextensible][uuid][local][object] */ 
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 /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE EnumAudioEndpoints( 
00657             /* [in] */ 
00658             __in  EDataFlow dataFlow,
00659             /* [in] */ 
00660             __in  DWORD dwStateMask,
00661             /* [out] */ 
00662             __out  IMMDeviceCollection **ppDevices) = 0;
00663         
00664         virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE GetDefaultAudioEndpoint( 
00665             /* [in] */ 
00666             __in  EDataFlow dataFlow,
00667             /* [in] */ 
00668             __in  ERole role,
00669             /* [out] */ 
00670             __out  IMMDevice **ppEndpoint) = 0;
00671         
00672         virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE GetDevice( 
00673             /*  */ 
00674             __in  LPCWSTR pwstrId,
00675             /* [out] */ 
00676             __out  IMMDevice **ppDevice) = 0;
00677         
00678         virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE RegisterEndpointNotificationCallback( 
00679             /* [in] */ 
00680             __in  IMMNotificationClient *pClient) = 0;
00681         
00682         virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE UnregisterEndpointNotificationCallback( 
00683             /* [in] */ 
00684             __in  IMMNotificationClient *pClient) = 0;
00685         
00686     };
00687     
00688 #else   /* C style interface */
00689 
00690     typedef struct IMMDeviceEnumeratorVtbl
00691     {
00692         BEGIN_INTERFACE
00693         
00694         HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
00695             IMMDeviceEnumerator * This,
00696             /* [in] */ REFIID riid,
00697             /* [iid_is][out] */ 
00698             __RPC__deref_out  void **ppvObject);
00699         
00700         ULONG ( STDMETHODCALLTYPE *AddRef )( 
00701             IMMDeviceEnumerator * This);
00702         
00703         ULONG ( STDMETHODCALLTYPE *Release )( 
00704             IMMDeviceEnumerator * This);
00705         
00706         /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *EnumAudioEndpoints )( 
00707             IMMDeviceEnumerator * This,
00708             /* [in] */ 
00709             __in  EDataFlow dataFlow,
00710             /* [in] */ 
00711             __in  DWORD dwStateMask,
00712             /* [out] */ 
00713             __out  IMMDeviceCollection **ppDevices);
00714         
00715         /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *GetDefaultAudioEndpoint )( 
00716             IMMDeviceEnumerator * This,
00717             /* [in] */ 
00718             __in  EDataFlow dataFlow,
00719             /* [in] */ 
00720             __in  ERole role,
00721             /* [out] */ 
00722             __out  IMMDevice **ppEndpoint);
00723         
00724         /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *GetDevice )( 
00725             IMMDeviceEnumerator * This,
00726             /*  */ 
00727             __in  LPCWSTR pwstrId,
00728             /* [out] */ 
00729             __out  IMMDevice **ppDevice);
00730         
00731         /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *RegisterEndpointNotificationCallback )( 
00732             IMMDeviceEnumerator * This,
00733             /* [in] */ 
00734             __in  IMMNotificationClient *pClient);
00735         
00736         /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *UnregisterEndpointNotificationCallback )( 
00737             IMMDeviceEnumerator * This,
00738             /* [in] */ 
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 /* COBJMACROS */
00780 
00781 
00782 #endif  /* C style interface */
00783 
00784 
00785 
00786 
00787 #endif  /* __IMMDeviceEnumerator_INTERFACE_DEFINED__ */
00788 
00789 
00790 #ifndef __IMMDeviceActivator_INTERFACE_DEFINED__
00791 #define __IMMDeviceActivator_INTERFACE_DEFINED__
00792 
00793 /* interface IMMDeviceActivator */
00794 /* [unique][helpstring][nonextensible][uuid][local][object] */ 
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 /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE Activate( 
00806             /* [in] */ 
00807             __in  REFIID iid,
00808             /* [in] */ 
00809             __in  IMMDevice *pDevice,
00810             /* [in] */ 
00811             __in_opt  PROPVARIANT *pActivationParams,
00812             /* [iid_is][out] */ 
00813             __out  void **ppInterface) = 0;
00814         
00815     };
00816     
00817 #else   /* C style interface */
00818 
00819     typedef struct IMMDeviceActivatorVtbl
00820     {
00821         BEGIN_INTERFACE
00822         
00823         HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
00824             IMMDeviceActivator * This,
00825             /* [in] */ REFIID riid,
00826             /* [iid_is][out] */ 
00827             __RPC__deref_out  void **ppvObject);
00828         
00829         ULONG ( STDMETHODCALLTYPE *AddRef )( 
00830             IMMDeviceActivator * This);
00831         
00832         ULONG ( STDMETHODCALLTYPE *Release )( 
00833             IMMDeviceActivator * This);
00834         
00835         /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Activate )( 
00836             IMMDeviceActivator * This,
00837             /* [in] */ 
00838             __in  REFIID iid,
00839             /* [in] */ 
00840             __in  IMMDevice *pDevice,
00841             /* [in] */ 
00842             __in_opt  PROPVARIANT *pActivationParams,
00843             /* [iid_is][out] */ 
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 /* COBJMACROS */
00873 
00874 
00875 #endif  /* C style interface */
00876 
00877 
00878 
00879 
00880 #endif  /* __IMMDeviceActivator_INTERFACE_DEFINED__ */
00881 
00882 
00883 /* interface __MIDL_itf_mmdeviceapi_0000_0006 */
00884 /* [local] */ 
00885 
00886 typedef /* [public] */ 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 /* library MMDeviceAPILib */
00904 /* [helpstring][version][uuid] */ 
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 /* __MMDeviceAPILib_LIBRARY_DEFINED__ */
00917 
00918 /* Additional Prototypes for ALL interfaces */
00919 
00920 /* end of Additional Prototypes */
00921 
00922 #ifdef __cplusplus
00923 }
00924 #endif
00925 
00926 #endif
00927 
00928 
00929