diff options
Diffstat (limited to 'portaudio/src/hostapi/wasapi')
24 files changed, 0 insertions, 29093 deletions
diff --git a/portaudio/src/hostapi/wasapi/mingw-include/AudioSessionTypes.h b/portaudio/src/hostapi/wasapi/mingw-include/AudioSessionTypes.h deleted file mode 100644 index 91e7213..0000000 --- a/portaudio/src/hostapi/wasapi/mingw-include/AudioSessionTypes.h +++ /dev/null @@ -1,58 +0,0 @@ -/** - * This file is part of the mingw-w64 runtime package. - * No warranty is given; refer to the file DISCLAIMER within this package. - */ - -#include <winapifamily.h> - -#ifndef __AUDIOSESSIONTYPES__ -#define __AUDIOSESSIONTYPES__ - -#if WINAPI_FAMILY_PARTITION (WINAPI_PARTITION_APP) -#if defined (__WIDL__) -#define MIDL_SIZE_IS(x) [size_is (x)] -#define MIDL_STRING [string] -#define MIDL_ANYSIZE_ARRAY -#else -#define MIDL_SIZE_IS(x) -#define MIDL_STRING -#define MIDL_ANYSIZE_ARRAY ANYSIZE_ARRAY -#endif - -typedef enum _AudioSessionState { - AudioSessionStateInactive = 0, - AudioSessionStateActive = 1, - AudioSessionStateExpired = 2 -} AudioSessionState; - -typedef enum _AUDCLNT_SHAREMODE { - AUDCLNT_SHAREMODE_SHARED, - AUDCLNT_SHAREMODE_EXCLUSIVE -} AUDCLNT_SHAREMODE; - -typedef enum _AUDIO_STREAM_CATEGORY { - AudioCategory_Other = 0, - AudioCategory_ForegroundOnlyMedia, - AudioCategory_BackgroundCapableMedia, - AudioCategory_Communications, - AudioCategory_Alerts, - AudioCategory_SoundEffects, - AudioCategory_GameEffects, - AudioCategory_GameMedia, - AudioCategory_GameChat, - AudioCategory_Speech, - AudioCategory_Movie, - AudioCategory_Media -} AUDIO_STREAM_CATEGORY; - -#define AUDCLNT_STREAMFLAGS_CROSSPROCESS 0x00010000 -#define AUDCLNT_STREAMFLAGS_LOOPBACK 0x00020000 -#define AUDCLNT_STREAMFLAGS_EVENTCALLBACK 0x00040000 -#define AUDCLNT_STREAMFLAGS_NOPERSIST 0x00080000 -#define AUDCLNT_STREAMFLAGS_RATEADJUST 0x00100000 -#define AUDCLNT_SESSIONFLAGS_EXPIREWHENUNOWNED 0x10000000 -#define AUDCLNT_SESSIONFLAGS_DISPLAY_HIDE 0x20000000 -#define AUDCLNT_SESSIONFLAGS_DISPLAY_HIDEWHENEXPIRED 0x40000000 - -#endif -#endif diff --git a/portaudio/src/hostapi/wasapi/mingw-include/PropIdl.h b/portaudio/src/hostapi/wasapi/mingw-include/PropIdl.h deleted file mode 100644 index 84832d9..0000000 --- a/portaudio/src/hostapi/wasapi/mingw-include/PropIdl.h +++ /dev/null @@ -1,19 +0,0 @@ -/** - * This file has no copyright assigned and is placed in the Public Domain. - * This file is part of the PortAudio library. - */ -#ifndef _INC_PROPIDL_PA -#define _INC_PROPIDL_PA - -#ifndef COM_NO_WINDOWS_H -#include "windows.h" -#include "ole2.h" -#endif - -typedef const PROPVARIANT *REFPROPVARIANT; - -#define PropVariantInit(VAR) memset((VAR), 0, sizeof(PROPVARIANT)) -WINOLEAPI PropVariantClear(PROPVARIANT *pvar); - -#endif /* _INC_PROPIDL_PA */ - diff --git a/portaudio/src/hostapi/wasapi/mingw-include/ShTypes.h b/portaudio/src/hostapi/wasapi/mingw-include/ShTypes.h deleted file mode 100644 index cd11186..0000000 --- a/portaudio/src/hostapi/wasapi/mingw-include/ShTypes.h +++ /dev/null @@ -1,359 +0,0 @@ -/*** Autogenerated by WIDL 4.5 from shtypes.idl - Do not edit ***/ - -#ifdef _WIN32 -#ifndef __REQUIRED_RPCNDR_H_VERSION__ -#define __REQUIRED_RPCNDR_H_VERSION__ 475 -#endif -#include <rpc.h> -#include <rpcndr.h> -#endif - -#ifndef COM_NO_WINDOWS_H -#include <windows.h> -#include <ole2.h> -#endif - -#ifndef __shtypes_h__ -#define __shtypes_h__ - -/* Forward declarations */ - -/* Headers for imported files */ - -#include <unknwn.h> -#include <wtypes.h> - -#ifdef __cplusplus -extern "C" { -#endif - -/** - * This file is part of the mingw-w64 runtime package. - * No warranty is given; refer to the file DISCLAIMER within this package. - */ - - -#ifndef DUMMYUNIONNAME -#ifdef NONAMELESSUNION -#define DUMMYUNIONNAME u -#define DUMMYUNIONNAME2 u2 -#define DUMMYUNIONNAME3 u3 -#define DUMMYUNIONNAME4 u4 -#define DUMMYUNIONNAME5 u5 -#else -#define DUMMYUNIONNAME -#define DUMMYUNIONNAME2 -#define DUMMYUNIONNAME3 -#define DUMMYUNIONNAME4 -#define DUMMYUNIONNAME5 -#endif -#endif - -#include <pshpack1.h> -typedef struct _SHITEMID { - USHORT cb; - BYTE abID[1]; -} SHITEMID; -#include <poppack.h> - -#if (defined(_X86_) && !defined(__x86_64)) -#undef __unaligned -#define __unaligned -#endif - -typedef SHITEMID *LPSHITEMID; -typedef const SHITEMID *LPCSHITEMID; - -#include <pshpack1.h> -typedef struct _ITEMIDLIST { - SHITEMID mkid; -} ITEMIDLIST; - -#if defined(STRICT_TYPED_ITEMIDS) && defined(__cplusplus) - typedef struct _ITEMIDLIST_RELATIVE : ITEMIDLIST { } ITEMIDLIST_RELATIVE; - typedef struct _ITEMID_CHILD : ITEMIDLIST_RELATIVE { } ITEMID_CHILD; - typedef struct _ITEMIDLIST_ABSOLUTE : ITEMIDLIST_RELATIVE { } ITEMIDLIST_ABSOLUTE; -#else -typedef ITEMIDLIST ITEMIDLIST_RELATIVE; -typedef ITEMIDLIST ITEMID_CHILD; -typedef ITEMIDLIST ITEMIDLIST_ABSOLUTE; -#endif -#include <poppack.h> - -typedef BYTE_BLOB *wirePIDL; -typedef ITEMIDLIST *LPITEMIDLIST; -typedef const ITEMIDLIST *LPCITEMIDLIST; -#if defined(STRICT_TYPED_ITEMIDS) && defined(__cplusplus) -typedef ITEMIDLIST_ABSOLUTE *PIDLIST_ABSOLUTE; -typedef const ITEMIDLIST_ABSOLUTE *PCIDLIST_ABSOLUTE; -typedef const ITEMIDLIST_ABSOLUTE *PCUIDLIST_ABSOLUTE; -typedef ITEMIDLIST_RELATIVE *PIDLIST_RELATIVE; -typedef const ITEMIDLIST_RELATIVE *PCIDLIST_RELATIVE; -typedef ITEMIDLIST_RELATIVE *PUIDLIST_RELATIVE; -typedef const ITEMIDLIST_RELATIVE *PCUIDLIST_RELATIVE; -typedef ITEMID_CHILD *PITEMID_CHILD; -typedef const ITEMID_CHILD *PCITEMID_CHILD; -typedef ITEMID_CHILD *PUITEMID_CHILD; -typedef const ITEMID_CHILD *PCUITEMID_CHILD; -typedef const PCUITEMID_CHILD *PCUITEMID_CHILD_ARRAY; -typedef const PCUIDLIST_RELATIVE *PCUIDLIST_RELATIVE_ARRAY; -typedef const PCIDLIST_ABSOLUTE *PCIDLIST_ABSOLUTE_ARRAY; -typedef const PCUIDLIST_ABSOLUTE *PCUIDLIST_ABSOLUTE_ARRAY; -#else -#define PIDLIST_ABSOLUTE LPITEMIDLIST -#define PCIDLIST_ABSOLUTE LPCITEMIDLIST -#define PCUIDLIST_ABSOLUTE LPCITEMIDLIST -#define PIDLIST_RELATIVE LPITEMIDLIST -#define PCIDLIST_RELATIVE LPCITEMIDLIST -#define PUIDLIST_RELATIVE LPITEMIDLIST -#define PCUIDLIST_RELATIVE LPCITEMIDLIST -#define PITEMID_CHILD LPITEMIDLIST -#define PCITEMID_CHILD LPCITEMIDLIST -#define PUITEMID_CHILD LPITEMIDLIST -#define PCUITEMID_CHILD LPCITEMIDLIST -#define PCUITEMID_CHILD_ARRAY LPCITEMIDLIST * -#define PCUIDLIST_RELATIVE_ARRAY LPCITEMIDLIST * -#define PCIDLIST_ABSOLUTE_ARRAY LPCITEMIDLIST * -#define PCUIDLIST_ABSOLUTE_ARRAY LPCITEMIDLIST * -#endif - -#if 0 -typedef struct _WIN32_FIND_DATAA { - DWORD dwFileAttributes; - FILETIME ftCreationTime; - FILETIME ftLastAccessTime; - FILETIME ftLastWriteTime; - DWORD nFileSizeHigh; - DWORD nFileSizeLow; - DWORD dwReserved0; - DWORD dwReserved1; - CHAR cFileName[260]; - CHAR cAlternateFileName[14]; -} WIN32_FIND_DATAA; -typedef struct _WIN32_FIND_DATAA *PWIN32_FIND_DATAA; -typedef struct _WIN32_FIND_DATAA *LPWIN32_FIND_DATAA; - -typedef struct _WIN32_FIND_DATAW { - DWORD dwFileAttributes; - FILETIME ftCreationTime; - FILETIME ftLastAccessTime; - FILETIME ftLastWriteTime; - DWORD nFileSizeHigh; - DWORD nFileSizeLow; - DWORD dwReserved0; - DWORD dwReserved1; - WCHAR cFileName[260]; - WCHAR cAlternateFileName[14]; -} WIN32_FIND_DATAW; -typedef struct _WIN32_FIND_DATAW *PWIN32_FIND_DATAW; -typedef struct _WIN32_FIND_DATAW *LPWIN32_FIND_DATAW; -#endif - -typedef enum tagSTRRET_TYPE { - STRRET_WSTR = 0x0, - STRRET_OFFSET = 0x1, - STRRET_CSTR = 0x2 -} STRRET_TYPE; - -#include <pshpack8.h> -typedef struct _STRRET { - UINT uType; - __C89_NAMELESS union { - LPWSTR pOleStr; - UINT uOffset; - char cStr[260]; - } __C89_NAMELESSUNIONNAME; -} STRRET; -#include <poppack.h> - -typedef STRRET *LPSTRRET; - -#include <pshpack1.h> -typedef struct _SHELLDETAILS { - int fmt; - int cxChar; - STRRET str; -} SHELLDETAILS; -typedef struct _SHELLDETAILS *LPSHELLDETAILS; -#include <poppack.h> - -#if _WIN32_IE >= _WIN32_IE_IE60SP2 -typedef enum tagPERCEIVED { - PERCEIVED_TYPE_FIRST = -3, - PERCEIVED_TYPE_CUSTOM = -3, - PERCEIVED_TYPE_UNSPECIFIED = -2, - PERCEIVED_TYPE_FOLDER = -1, - PERCEIVED_TYPE_UNKNOWN = 0, - PERCEIVED_TYPE_TEXT = 1, - PERCEIVED_TYPE_IMAGE = 2, - PERCEIVED_TYPE_AUDIO = 3, - PERCEIVED_TYPE_VIDEO = 4, - PERCEIVED_TYPE_COMPRESSED = 5, - PERCEIVED_TYPE_DOCUMENT = 6, - PERCEIVED_TYPE_SYSTEM = 7, - PERCEIVED_TYPE_APPLICATION = 8, - PERCEIVED_TYPE_GAMEMEDIA = 9, - PERCEIVED_TYPE_CONTACTS = 10, - PERCEIVED_TYPE_LAST = 10 -} PERCEIVED; - -#define PERCEIVEDFLAG_UNDEFINED 0x0000 -#define PERCEIVEDFLAG_SOFTCODED 0x0001 -#define PERCEIVEDFLAG_HARDCODED 0x0002 -#define PERCEIVEDFLAG_NATIVESUPPORT 0x0004 -#define PERCEIVEDFLAG_GDIPLUS 0x0010 -#define PERCEIVEDFLAG_WMSDK 0x0020 -#define PERCEIVEDFLAG_ZIPFOLDER 0x0040 - -typedef DWORD PERCEIVEDFLAG; -#endif - -typedef struct _COMDLG_FILTERSPEC { - LPCWSTR pszName; - LPCWSTR pszSpec; -} COMDLG_FILTERSPEC; - -typedef GUID KNOWNFOLDERID; - -#if 0 -typedef KNOWNFOLDERID *REFKNOWNFOLDERID; -#endif - -#ifdef __cplusplus -#define REFKNOWNFOLDERID const KNOWNFOLDERID & -#else -#define REFKNOWNFOLDERID const KNOWNFOLDERID * __MIDL_CONST -#endif - -typedef DWORD KF_REDIRECT_FLAGS; - -typedef GUID FOLDERTYPEID; - -#if 0 -typedef FOLDERTYPEID *REFFOLDERTYPEID; -#endif - -#ifdef __cplusplus -#define REFFOLDERTYPEID const FOLDERTYPEID & -#else -#define REFFOLDERTYPEID const FOLDERTYPEID * __MIDL_CONST -#endif - -typedef GUID TASKOWNERID; - -#if 0 -typedef TASKOWNERID *REFTASKOWNERID; -#endif - -#ifdef __cplusplus -#define REFTASKOWNERID const TASKOWNERID & -#else -#define REFTASKOWNERID const TASKOWNERID * __MIDL_CONST -#endif - -typedef GUID ELEMENTID; - -#if 0 -typedef ELEMENTID *REFELEMENTID; -#endif - -#ifdef __cplusplus -#define REFELEMENTID const ELEMENTID & -#else -#define REFELEMENTID const ELEMENTID * __MIDL_CONST -#endif - -#ifndef LF_FACESIZE -typedef struct tagLOGFONTA { - LONG lfHeight; - LONG lfWidth; - LONG lfEscapement; - LONG lfOrientation; - LONG lfWeight; - BYTE lfItalic; - BYTE lfUnderline; - BYTE lfStrikeOut; - BYTE lfCharSet; - BYTE lfOutPrecision; - BYTE lfClipPrecision; - BYTE lfQuality; - BYTE lfPitchAndFamily; - CHAR lfFaceName[32]; -} LOGFONTA; - -typedef struct tagLOGFONTW { - LONG lfHeight; - LONG lfWidth; - LONG lfEscapement; - LONG lfOrientation; - LONG lfWeight; - BYTE lfItalic; - BYTE lfUnderline; - BYTE lfStrikeOut; - BYTE lfCharSet; - BYTE lfOutPrecision; - BYTE lfClipPrecision; - BYTE lfQuality; - BYTE lfPitchAndFamily; - WCHAR lfFaceName[32]; -} LOGFONTW; - -typedef LOGFONTA LOGFONT; -#endif - -typedef enum tagSHCOLSTATE { - SHCOLSTATE_DEFAULT = 0x0, - SHCOLSTATE_TYPE_STR = 0x1, - SHCOLSTATE_TYPE_INT = 0x2, - SHCOLSTATE_TYPE_DATE = 0x3, - SHCOLSTATE_TYPEMASK = 0xf, - SHCOLSTATE_ONBYDEFAULT = 0x10, - SHCOLSTATE_SLOW = 0x20, - SHCOLSTATE_EXTENDED = 0x40, - SHCOLSTATE_SECONDARYUI = 0x80, - SHCOLSTATE_HIDDEN = 0x100, - SHCOLSTATE_PREFER_VARCMP = 0x200, - SHCOLSTATE_PREFER_FMTCMP = 0x400, - SHCOLSTATE_NOSORTBYFOLDERNESS = 0x800, - SHCOLSTATE_VIEWONLY = 0x10000, - SHCOLSTATE_BATCHREAD = 0x20000, - SHCOLSTATE_NO_GROUPBY = 0x40000, - SHCOLSTATE_FIXED_WIDTH = 0x1000, - SHCOLSTATE_NODPISCALE = 0x2000, - SHCOLSTATE_FIXED_RATIO = 0x4000, - SHCOLSTATE_DISPLAYMASK = 0xf000 -} SHCOLSTATE; - -typedef DWORD SHCOLSTATEF; -typedef PROPERTYKEY SHCOLUMNID; -typedef const SHCOLUMNID *LPCSHCOLUMNID; - -typedef enum DEVICE_SCALE_FACTOR { - DEVICE_SCALE_FACTOR_INVALID = 0, - SCALE_100_PERCENT = 100, - SCALE_120_PERCENT = 120, - SCALE_125_PERCENT = 125, - SCALE_140_PERCENT = 140, - SCALE_150_PERCENT = 150, - SCALE_160_PERCENT = 160, - SCALE_175_PERCENT = 175, - SCALE_180_PERCENT = 180, - SCALE_200_PERCENT = 200, - SCALE_225_PERCENT = 225, - SCALE_250_PERCENT = 250, - SCALE_300_PERCENT = 300, - SCALE_350_PERCENT = 350, - SCALE_400_PERCENT = 400, - SCALE_450_PERCENT = 450, - SCALE_500_PERCENT = 500 -} DEVICE_SCALE_FACTOR; -/* Begin additional prototypes for all interfaces */ - - -/* End additional prototypes */ - -#ifdef __cplusplus -} -#endif - -#endif /* __shtypes_h__ */ diff --git a/portaudio/src/hostapi/wasapi/mingw-include/audioclient.h b/portaudio/src/hostapi/wasapi/mingw-include/audioclient.h deleted file mode 100644 index 60db0cd..0000000 --- a/portaudio/src/hostapi/wasapi/mingw-include/audioclient.h +++ /dev/null @@ -1,1177 +0,0 @@ - - -/* this ALWAYS GENERATED file contains the definitions for the interfaces */ - - - /* File created by MIDL compiler version 7.00.0499 */ -/* Compiler settings for audioclient.idl: - Oicf, W1, Zp8, env=Win32 (32b run) - protocol : dce , ms_ext, c_ext, robust - error checks: allocation ref bounds_check enum stub_data - VC __declspec() decoration level: - __declspec(uuid()), __declspec(selectany), __declspec(novtable) - DECLSPEC_UUID(), MIDL_INTERFACE() -*/ -//@@MIDL_FILE_HEADING( ) - -#pragma warning( disable: 4049 ) /* more than 64k source lines */ - - -/* verify that the <rpcndr.h> version is high enough to compile this file*/ -#ifndef __REQUIRED_RPCNDR_H_VERSION__ -#define __REQUIRED_RPCNDR_H_VERSION__ 475 -#endif - -/* verify that the <rpcsal.h> version is high enough to compile this file*/ -#ifndef __REQUIRED_RPCSAL_H_VERSION__ -#define __REQUIRED_RPCSAL_H_VERSION__ 100 -#endif - -#include "rpc.h" -#include "rpcndr.h" - -#ifndef __RPCNDR_H_VERSION__ -#error this stub requires an updated version of <rpcndr.h> -#endif // __RPCNDR_H_VERSION__ - -#ifndef COM_NO_WINDOWS_H -#include "windows.h" -#include "ole2.h" -#endif /*COM_NO_WINDOWS_H*/ - -#ifndef __audioclient_h__ -#define __audioclient_h__ - -#if defined(_MSC_VER) && (_MSC_VER >= 1020) -#pragma once -#endif - -/* Forward Declarations */ - -#ifndef __IAudioClient_FWD_DEFINED__ -#define __IAudioClient_FWD_DEFINED__ -typedef interface IAudioClient IAudioClient; -#endif /* __IAudioClient_FWD_DEFINED__ */ - - -#ifndef __IAudioRenderClient_FWD_DEFINED__ -#define __IAudioRenderClient_FWD_DEFINED__ -typedef interface IAudioRenderClient IAudioRenderClient; -#endif /* __IAudioRenderClient_FWD_DEFINED__ */ - - -#ifndef __IAudioCaptureClient_FWD_DEFINED__ -#define __IAudioCaptureClient_FWD_DEFINED__ -typedef interface IAudioCaptureClient IAudioCaptureClient; -#endif /* __IAudioCaptureClient_FWD_DEFINED__ */ - - -#ifndef __IAudioClock_FWD_DEFINED__ -#define __IAudioClock_FWD_DEFINED__ -typedef interface IAudioClock IAudioClock; -#endif /* __IAudioClock_FWD_DEFINED__ */ - - -#ifndef __ISimpleAudioVolume_FWD_DEFINED__ -#define __ISimpleAudioVolume_FWD_DEFINED__ -typedef interface ISimpleAudioVolume ISimpleAudioVolume; -#endif /* __ISimpleAudioVolume_FWD_DEFINED__ */ - - -#ifndef __IAudioStreamVolume_FWD_DEFINED__ -#define __IAudioStreamVolume_FWD_DEFINED__ -typedef interface IAudioStreamVolume IAudioStreamVolume; -#endif /* __IAudioStreamVolume_FWD_DEFINED__ */ - - -#ifndef __IChannelAudioVolume_FWD_DEFINED__ -#define __IChannelAudioVolume_FWD_DEFINED__ -typedef interface IChannelAudioVolume IChannelAudioVolume; -#endif /* __IChannelAudioVolume_FWD_DEFINED__ */ - - -/* header files for imported files */ -#include "wtypes.h" -#include "unknwn.h" -#include "AudioSessionTypes.h" - -#ifdef __cplusplus -extern "C"{ -#endif - - -/* interface __MIDL_itf_audioclient_0000_0000 */ -/* [local] */ - -#if 0 -typedef /* [hidden][restricted] */ struct WAVEFORMATEX - { - WORD wFormatTag; - WORD nChannels; - DWORD nSamplesPerSec; - DWORD nAvgBytesPerSec; - WORD nBlockAlign; - WORD wBitsPerSample; - WORD cbSize; - } WAVEFORMATEX; - -#else -#include <mmreg.h> -#endif -#if 0 -typedef /* [hidden][restricted] */ LONGLONG REFERENCE_TIME; - -#else -#define _IKsControl_ -#include <ks.h> -#include <ksmedia.h> -#endif - -enum _AUDCLNT_BUFFERFLAGS - { AUDCLNT_BUFFERFLAGS_DATA_DISCONTINUITY = 0x1, - AUDCLNT_BUFFERFLAGS_SILENT = 0x2, - AUDCLNT_BUFFERFLAGS_TIMESTAMP_ERROR = 0x4 - } ; - - -extern RPC_IF_HANDLE __MIDL_itf_audioclient_0000_0000_v0_0_c_ifspec; -extern RPC_IF_HANDLE __MIDL_itf_audioclient_0000_0000_v0_0_s_ifspec; - -#ifndef __IAudioClient_INTERFACE_DEFINED__ -#define __IAudioClient_INTERFACE_DEFINED__ - -/* interface IAudioClient */ -/* [local][unique][uuid][object] */ - - -EXTERN_C const IID IID_IAudioClient; - -#if defined(__cplusplus) && !defined(CINTERFACE) - - MIDL_INTERFACE("1CB9AD4C-DBFA-4c32-B178-C2F568A703B2") - IAudioClient : public IUnknown - { - public: - virtual HRESULT STDMETHODCALLTYPE Initialize( - /* [in] */ - __in AUDCLNT_SHAREMODE ShareMode, - /* [in] */ - __in DWORD StreamFlags, - /* [in] */ - __in REFERENCE_TIME hnsBufferDuration, - /* [in] */ - __in REFERENCE_TIME hnsPeriodicity, - /* [in] */ - __in const WAVEFORMATEX *pFormat, - /* [in] */ - __in_opt LPCGUID AudioSessionGuid) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetBufferSize( - /* [out] */ - __out UINT32 *pNumBufferFrames) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetStreamLatency( - /* [out] */ - __out REFERENCE_TIME *phnsLatency) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetCurrentPadding( - /* [out] */ - __out UINT32 *pNumPaddingFrames) = 0; - - virtual HRESULT STDMETHODCALLTYPE IsFormatSupported( - /* [in] */ - __in AUDCLNT_SHAREMODE ShareMode, - /* [in] */ - __in const WAVEFORMATEX *pFormat, - /* [unique][out] */ - __out_opt WAVEFORMATEX **ppClosestMatch) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetMixFormat( - /* [out] */ - __out WAVEFORMATEX **ppDeviceFormat) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetDevicePeriod( - /* [out] */ - __out_opt REFERENCE_TIME *phnsDefaultDevicePeriod, - /* [out] */ - __out_opt REFERENCE_TIME *phnsMinimumDevicePeriod) = 0; - - virtual HRESULT STDMETHODCALLTYPE Start( void) = 0; - - virtual HRESULT STDMETHODCALLTYPE Stop( void) = 0; - - virtual HRESULT STDMETHODCALLTYPE Reset( void) = 0; - - virtual HRESULT STDMETHODCALLTYPE SetEventHandle( - /* [in] */ HANDLE eventHandle) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetService( - /* [in] */ - __in REFIID riid, - /* [iid_is][out] */ - __out void **ppv) = 0; - - }; - -#else /* C style interface */ - - typedef struct IAudioClientVtbl - { - BEGIN_INTERFACE - - HRESULT ( STDMETHODCALLTYPE *QueryInterface )( - IAudioClient * This, - /* [in] */ REFIID riid, - /* [iid_is][out] */ - __RPC__deref_out void **ppvObject); - - ULONG ( STDMETHODCALLTYPE *AddRef )( - IAudioClient * This); - - ULONG ( STDMETHODCALLTYPE *Release )( - IAudioClient * This); - - HRESULT ( STDMETHODCALLTYPE *Initialize )( - IAudioClient * This, - /* [in] */ - __in AUDCLNT_SHAREMODE ShareMode, - /* [in] */ - __in DWORD StreamFlags, - /* [in] */ - __in REFERENCE_TIME hnsBufferDuration, - /* [in] */ - __in REFERENCE_TIME hnsPeriodicity, - /* [in] */ - __in const WAVEFORMATEX *pFormat, - /* [in] */ - __in_opt LPCGUID AudioSessionGuid); - - HRESULT ( STDMETHODCALLTYPE *GetBufferSize )( - IAudioClient * This, - /* [out] */ - __out UINT32 *pNumBufferFrames); - - HRESULT ( STDMETHODCALLTYPE *GetStreamLatency )( - IAudioClient * This, - /* [out] */ - __out REFERENCE_TIME *phnsLatency); - - HRESULT ( STDMETHODCALLTYPE *GetCurrentPadding )( - IAudioClient * This, - /* [out] */ - __out UINT32 *pNumPaddingFrames); - - HRESULT ( STDMETHODCALLTYPE *IsFormatSupported )( - IAudioClient * This, - /* [in] */ - __in AUDCLNT_SHAREMODE ShareMode, - /* [in] */ - __in const WAVEFORMATEX *pFormat, - /* [unique][out] */ - __out_opt WAVEFORMATEX **ppClosestMatch); - - HRESULT ( STDMETHODCALLTYPE *GetMixFormat )( - IAudioClient * This, - /* [out] */ - __out WAVEFORMATEX **ppDeviceFormat); - - HRESULT ( STDMETHODCALLTYPE *GetDevicePeriod )( - IAudioClient * This, - /* [out] */ - __out_opt REFERENCE_TIME *phnsDefaultDevicePeriod, - /* [out] */ - __out_opt REFERENCE_TIME *phnsMinimumDevicePeriod); - - HRESULT ( STDMETHODCALLTYPE *Start )( - IAudioClient * This); - - HRESULT ( STDMETHODCALLTYPE *Stop )( - IAudioClient * This); - - HRESULT ( STDMETHODCALLTYPE *Reset )( - IAudioClient * This); - - HRESULT ( STDMETHODCALLTYPE *SetEventHandle )( - IAudioClient * This, - /* [in] */ HANDLE eventHandle); - - HRESULT ( STDMETHODCALLTYPE *GetService )( - IAudioClient * This, - /* [in] */ - __in REFIID riid, - /* [iid_is][out] */ - __out void **ppv); - - END_INTERFACE - } IAudioClientVtbl; - - interface IAudioClient - { - CONST_VTBL struct IAudioClientVtbl *lpVtbl; - }; - - - -#ifdef COBJMACROS - - -#define IAudioClient_QueryInterface(This,riid,ppvObject) \ - ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) - -#define IAudioClient_AddRef(This) \ - ( (This)->lpVtbl -> AddRef(This) ) - -#define IAudioClient_Release(This) \ - ( (This)->lpVtbl -> Release(This) ) - - -#define IAudioClient_Initialize(This,ShareMode,StreamFlags,hnsBufferDuration,hnsPeriodicity,pFormat,AudioSessionGuid) \ - ( (This)->lpVtbl -> Initialize(This,ShareMode,StreamFlags,hnsBufferDuration,hnsPeriodicity,pFormat,AudioSessionGuid) ) - -#define IAudioClient_GetBufferSize(This,pNumBufferFrames) \ - ( (This)->lpVtbl -> GetBufferSize(This,pNumBufferFrames) ) - -#define IAudioClient_GetStreamLatency(This,phnsLatency) \ - ( (This)->lpVtbl -> GetStreamLatency(This,phnsLatency) ) - -#define IAudioClient_GetCurrentPadding(This,pNumPaddingFrames) \ - ( (This)->lpVtbl -> GetCurrentPadding(This,pNumPaddingFrames) ) - -#define IAudioClient_IsFormatSupported(This,ShareMode,pFormat,ppClosestMatch) \ - ( (This)->lpVtbl -> IsFormatSupported(This,ShareMode,pFormat,ppClosestMatch) ) - -#define IAudioClient_GetMixFormat(This,ppDeviceFormat) \ - ( (This)->lpVtbl -> GetMixFormat(This,ppDeviceFormat) ) - -#define IAudioClient_GetDevicePeriod(This,phnsDefaultDevicePeriod,phnsMinimumDevicePeriod) \ - ( (This)->lpVtbl -> GetDevicePeriod(This,phnsDefaultDevicePeriod,phnsMinimumDevicePeriod) ) - -#define IAudioClient_Start(This) \ - ( (This)->lpVtbl -> Start(This) ) - -#define IAudioClient_Stop(This) \ - ( (This)->lpVtbl -> Stop(This) ) - -#define IAudioClient_Reset(This) \ - ( (This)->lpVtbl -> Reset(This) ) - -#define IAudioClient_SetEventHandle(This,eventHandle) \ - ( (This)->lpVtbl -> SetEventHandle(This,eventHandle) ) - -#define IAudioClient_GetService(This,riid,ppv) \ - ( (This)->lpVtbl -> GetService(This,riid,ppv) ) - -#endif /* COBJMACROS */ - - -#endif /* C style interface */ - - - - -#endif /* __IAudioClient_INTERFACE_DEFINED__ */ - - -#ifndef __IAudioRenderClient_INTERFACE_DEFINED__ -#define __IAudioRenderClient_INTERFACE_DEFINED__ - -/* interface IAudioRenderClient */ -/* [local][unique][helpstring][uuid][object] */ - - -EXTERN_C const IID IID_IAudioRenderClient; - -#if defined(__cplusplus) && !defined(CINTERFACE) - - MIDL_INTERFACE("F294ACFC-3146-4483-A7BF-ADDCA7C260E2") - IAudioRenderClient : public IUnknown - { - public: - virtual HRESULT STDMETHODCALLTYPE GetBuffer( - /* [in] */ - __in UINT32 NumFramesRequested, - /* [out] */ - __out BYTE **ppData) = 0; - - virtual HRESULT STDMETHODCALLTYPE ReleaseBuffer( - /* [in] */ - __in UINT32 NumFramesWritten, - /* [in] */ - __in DWORD dwFlags) = 0; - - }; - -#else /* C style interface */ - - typedef struct IAudioRenderClientVtbl - { - BEGIN_INTERFACE - - HRESULT ( STDMETHODCALLTYPE *QueryInterface )( - IAudioRenderClient * This, - /* [in] */ REFIID riid, - /* [iid_is][out] */ - __RPC__deref_out void **ppvObject); - - ULONG ( STDMETHODCALLTYPE *AddRef )( - IAudioRenderClient * This); - - ULONG ( STDMETHODCALLTYPE *Release )( - IAudioRenderClient * This); - - HRESULT ( STDMETHODCALLTYPE *GetBuffer )( - IAudioRenderClient * This, - /* [in] */ - __in UINT32 NumFramesRequested, - /* [out] */ - __out BYTE **ppData); - - HRESULT ( STDMETHODCALLTYPE *ReleaseBuffer )( - IAudioRenderClient * This, - /* [in] */ - __in UINT32 NumFramesWritten, - /* [in] */ - __in DWORD dwFlags); - - END_INTERFACE - } IAudioRenderClientVtbl; - - interface IAudioRenderClient - { - CONST_VTBL struct IAudioRenderClientVtbl *lpVtbl; - }; - - - -#ifdef COBJMACROS - - -#define IAudioRenderClient_QueryInterface(This,riid,ppvObject) \ - ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) - -#define IAudioRenderClient_AddRef(This) \ - ( (This)->lpVtbl -> AddRef(This) ) - -#define IAudioRenderClient_Release(This) \ - ( (This)->lpVtbl -> Release(This) ) - - -#define IAudioRenderClient_GetBuffer(This,NumFramesRequested,ppData) \ - ( (This)->lpVtbl -> GetBuffer(This,NumFramesRequested,ppData) ) - -#define IAudioRenderClient_ReleaseBuffer(This,NumFramesWritten,dwFlags) \ - ( (This)->lpVtbl -> ReleaseBuffer(This,NumFramesWritten,dwFlags) ) - -#endif /* COBJMACROS */ - - -#endif /* C style interface */ - - - - -#endif /* __IAudioRenderClient_INTERFACE_DEFINED__ */ - - -#ifndef __IAudioCaptureClient_INTERFACE_DEFINED__ -#define __IAudioCaptureClient_INTERFACE_DEFINED__ - -/* interface IAudioCaptureClient */ -/* [local][unique][helpstring][uuid][object] */ - - -EXTERN_C const IID IID_IAudioCaptureClient; - -#if defined(__cplusplus) && !defined(CINTERFACE) - - MIDL_INTERFACE("C8ADBD64-E71E-48a0-A4DE-185C395CD317") - IAudioCaptureClient : public IUnknown - { - public: - virtual HRESULT STDMETHODCALLTYPE GetBuffer( - /* [out] */ - __out BYTE **ppData, - /* [out] */ - __out UINT32 *pNumFramesToRead, - /* [out] */ - __out DWORD *pdwFlags, - /* [unique][out] */ - __out_opt UINT64 *pu64DevicePosition, - /* [unique][out] */ - __out_opt UINT64 *pu64QPCPosition) = 0; - - virtual HRESULT STDMETHODCALLTYPE ReleaseBuffer( - /* [in] */ - __in UINT32 NumFramesRead) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetNextPacketSize( - /* [out] */ - __out UINT32 *pNumFramesInNextPacket) = 0; - - }; - -#else /* C style interface */ - - typedef struct IAudioCaptureClientVtbl - { - BEGIN_INTERFACE - - HRESULT ( STDMETHODCALLTYPE *QueryInterface )( - IAudioCaptureClient * This, - /* [in] */ REFIID riid, - /* [iid_is][out] */ - __RPC__deref_out void **ppvObject); - - ULONG ( STDMETHODCALLTYPE *AddRef )( - IAudioCaptureClient * This); - - ULONG ( STDMETHODCALLTYPE *Release )( - IAudioCaptureClient * This); - - HRESULT ( STDMETHODCALLTYPE *GetBuffer )( - IAudioCaptureClient * This, - /* [out] */ - __out BYTE **ppData, - /* [out] */ - __out UINT32 *pNumFramesToRead, - /* [out] */ - __out DWORD *pdwFlags, - /* [unique][out] */ - __out_opt UINT64 *pu64DevicePosition, - /* [unique][out] */ - __out_opt UINT64 *pu64QPCPosition); - - HRESULT ( STDMETHODCALLTYPE *ReleaseBuffer )( - IAudioCaptureClient * This, - /* [in] */ - __in UINT32 NumFramesRead); - - HRESULT ( STDMETHODCALLTYPE *GetNextPacketSize )( - IAudioCaptureClient * This, - /* [out] */ - __out UINT32 *pNumFramesInNextPacket); - - END_INTERFACE - } IAudioCaptureClientVtbl; - - interface IAudioCaptureClient - { - CONST_VTBL struct IAudioCaptureClientVtbl *lpVtbl; - }; - - - -#ifdef COBJMACROS - - -#define IAudioCaptureClient_QueryInterface(This,riid,ppvObject) \ - ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) - -#define IAudioCaptureClient_AddRef(This) \ - ( (This)->lpVtbl -> AddRef(This) ) - -#define IAudioCaptureClient_Release(This) \ - ( (This)->lpVtbl -> Release(This) ) - - -#define IAudioCaptureClient_GetBuffer(This,ppData,pNumFramesToRead,pdwFlags,pu64DevicePosition,pu64QPCPosition) \ - ( (This)->lpVtbl -> GetBuffer(This,ppData,pNumFramesToRead,pdwFlags,pu64DevicePosition,pu64QPCPosition) ) - -#define IAudioCaptureClient_ReleaseBuffer(This,NumFramesRead) \ - ( (This)->lpVtbl -> ReleaseBuffer(This,NumFramesRead) ) - -#define IAudioCaptureClient_GetNextPacketSize(This,pNumFramesInNextPacket) \ - ( (This)->lpVtbl -> GetNextPacketSize(This,pNumFramesInNextPacket) ) - -#endif /* COBJMACROS */ - - -#endif /* C style interface */ - - - - -#endif /* __IAudioCaptureClient_INTERFACE_DEFINED__ */ - - -/* interface __MIDL_itf_audioclient_0000_0003 */ -/* [local] */ - -#define AUDIOCLOCK_CHARACTERISTIC_FIXED_FREQ 0x00000001 - - -extern RPC_IF_HANDLE __MIDL_itf_audioclient_0000_0003_v0_0_c_ifspec; -extern RPC_IF_HANDLE __MIDL_itf_audioclient_0000_0003_v0_0_s_ifspec; - -#ifndef __IAudioClock_INTERFACE_DEFINED__ -#define __IAudioClock_INTERFACE_DEFINED__ - -/* interface IAudioClock */ -/* [local][unique][uuid][object] */ - - -EXTERN_C const IID IID_IAudioClock; - -#if defined(__cplusplus) && !defined(CINTERFACE) - - MIDL_INTERFACE("CD63314F-3FBA-4a1b-812C-EF96358728E7") - IAudioClock : public IUnknown - { - public: - virtual HRESULT STDMETHODCALLTYPE GetFrequency( - /* [out] */ - __out UINT64 *pu64Frequency) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetPosition( - /* [out] */ - __out UINT64 *pu64Position, - /* [unique][out] */ - __out_opt UINT64 *pu64QPCPosition) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetCharacteristics( - /* [out] */ - __out DWORD *pdwCharacteristics) = 0; - - }; - -#else /* C style interface */ - - typedef struct IAudioClockVtbl - { - BEGIN_INTERFACE - - HRESULT ( STDMETHODCALLTYPE *QueryInterface )( - IAudioClock * This, - /* [in] */ REFIID riid, - /* [iid_is][out] */ - __RPC__deref_out void **ppvObject); - - ULONG ( STDMETHODCALLTYPE *AddRef )( - IAudioClock * This); - - ULONG ( STDMETHODCALLTYPE *Release )( - IAudioClock * This); - - HRESULT ( STDMETHODCALLTYPE *GetFrequency )( - IAudioClock * This, - /* [out] */ - __out UINT64 *pu64Frequency); - - HRESULT ( STDMETHODCALLTYPE *GetPosition )( - IAudioClock * This, - /* [out] */ - __out UINT64 *pu64Position, - /* [unique][out] */ - __out_opt UINT64 *pu64QPCPosition); - - HRESULT ( STDMETHODCALLTYPE *GetCharacteristics )( - IAudioClock * This, - /* [out] */ - __out DWORD *pdwCharacteristics); - - END_INTERFACE - } IAudioClockVtbl; - - interface IAudioClock - { - CONST_VTBL struct IAudioClockVtbl *lpVtbl; - }; - - - -#ifdef COBJMACROS - - -#define IAudioClock_QueryInterface(This,riid,ppvObject) \ - ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) - -#define IAudioClock_AddRef(This) \ - ( (This)->lpVtbl -> AddRef(This) ) - -#define IAudioClock_Release(This) \ - ( (This)->lpVtbl -> Release(This) ) - - -#define IAudioClock_GetFrequency(This,pu64Frequency) \ - ( (This)->lpVtbl -> GetFrequency(This,pu64Frequency) ) - -#define IAudioClock_GetPosition(This,pu64Position,pu64QPCPosition) \ - ( (This)->lpVtbl -> GetPosition(This,pu64Position,pu64QPCPosition) ) - -#define IAudioClock_GetCharacteristics(This,pdwCharacteristics) \ - ( (This)->lpVtbl -> GetCharacteristics(This,pdwCharacteristics) ) - -#endif /* COBJMACROS */ - - -#endif /* C style interface */ - - - - -#endif /* __IAudioClock_INTERFACE_DEFINED__ */ - - -#ifndef __ISimpleAudioVolume_INTERFACE_DEFINED__ -#define __ISimpleAudioVolume_INTERFACE_DEFINED__ - -/* interface ISimpleAudioVolume */ -/* [local][unique][uuid][object] */ - - -EXTERN_C const IID IID_ISimpleAudioVolume; - -#if defined(__cplusplus) && !defined(CINTERFACE) - - MIDL_INTERFACE("87CE5498-68D6-44E5-9215-6DA47EF883D8") - ISimpleAudioVolume : public IUnknown - { - public: - virtual HRESULT STDMETHODCALLTYPE SetMasterVolume( - /* [in] */ - __in float fLevel, - /* [unique][in] */ LPCGUID EventContext) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetMasterVolume( - /* [out] */ - __out float *pfLevel) = 0; - - virtual HRESULT STDMETHODCALLTYPE SetMute( - /* [in] */ - __in const BOOL bMute, - /* [unique][in] */ LPCGUID EventContext) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetMute( - /* [out] */ - __out BOOL *pbMute) = 0; - - }; - -#else /* C style interface */ - - typedef struct ISimpleAudioVolumeVtbl - { - BEGIN_INTERFACE - - HRESULT ( STDMETHODCALLTYPE *QueryInterface )( - ISimpleAudioVolume * This, - /* [in] */ REFIID riid, - /* [iid_is][out] */ - __RPC__deref_out void **ppvObject); - - ULONG ( STDMETHODCALLTYPE *AddRef )( - ISimpleAudioVolume * This); - - ULONG ( STDMETHODCALLTYPE *Release )( - ISimpleAudioVolume * This); - - HRESULT ( STDMETHODCALLTYPE *SetMasterVolume )( - ISimpleAudioVolume * This, - /* [in] */ - __in float fLevel, - /* [unique][in] */ LPCGUID EventContext); - - HRESULT ( STDMETHODCALLTYPE *GetMasterVolume )( - ISimpleAudioVolume * This, - /* [out] */ - __out float *pfLevel); - - HRESULT ( STDMETHODCALLTYPE *SetMute )( - ISimpleAudioVolume * This, - /* [in] */ - __in const BOOL bMute, - /* [unique][in] */ LPCGUID EventContext); - - HRESULT ( STDMETHODCALLTYPE *GetMute )( - ISimpleAudioVolume * This, - /* [out] */ - __out BOOL *pbMute); - - END_INTERFACE - } ISimpleAudioVolumeVtbl; - - interface ISimpleAudioVolume - { - CONST_VTBL struct ISimpleAudioVolumeVtbl *lpVtbl; - }; - - - -#ifdef COBJMACROS - - -#define ISimpleAudioVolume_QueryInterface(This,riid,ppvObject) \ - ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) - -#define ISimpleAudioVolume_AddRef(This) \ - ( (This)->lpVtbl -> AddRef(This) ) - -#define ISimpleAudioVolume_Release(This) \ - ( (This)->lpVtbl -> Release(This) ) - - -#define ISimpleAudioVolume_SetMasterVolume(This,fLevel,EventContext) \ - ( (This)->lpVtbl -> SetMasterVolume(This,fLevel,EventContext) ) - -#define ISimpleAudioVolume_GetMasterVolume(This,pfLevel) \ - ( (This)->lpVtbl -> GetMasterVolume(This,pfLevel) ) - -#define ISimpleAudioVolume_SetMute(This,bMute,EventContext) \ - ( (This)->lpVtbl -> SetMute(This,bMute,EventContext) ) - -#define ISimpleAudioVolume_GetMute(This,pbMute) \ - ( (This)->lpVtbl -> GetMute(This,pbMute) ) - -#endif /* COBJMACROS */ - - -#endif /* C style interface */ - - - - -#endif /* __ISimpleAudioVolume_INTERFACE_DEFINED__ */ - - -#ifndef __IAudioStreamVolume_INTERFACE_DEFINED__ -#define __IAudioStreamVolume_INTERFACE_DEFINED__ - -/* interface IAudioStreamVolume */ -/* [local][unique][uuid][object] */ - - -EXTERN_C const IID IID_IAudioStreamVolume; - -#if defined(__cplusplus) && !defined(CINTERFACE) - - MIDL_INTERFACE("93014887-242D-4068-8A15-CF5E93B90FE3") - IAudioStreamVolume : public IUnknown - { - public: - virtual HRESULT STDMETHODCALLTYPE GetChannelCount( - /* [out] */ - __out UINT32 *pdwCount) = 0; - - virtual HRESULT STDMETHODCALLTYPE SetChannelVolume( - /* [in] */ - __in UINT32 dwIndex, - /* [in] */ - __in const float fLevel) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetChannelVolume( - /* [in] */ - __in UINT32 dwIndex, - /* [out] */ - __out float *pfLevel) = 0; - - virtual HRESULT STDMETHODCALLTYPE SetAllVolumes( - /* [in] */ - __in UINT32 dwCount, - /* [size_is][in] */ - __in_ecount(dwCount) const float *pfVolumes) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetAllVolumes( - /* [in] */ - __in UINT32 dwCount, - /* [size_is][out] */ - __out_ecount(dwCount) float *pfVolumes) = 0; - - }; - -#else /* C style interface */ - - typedef struct IAudioStreamVolumeVtbl - { - BEGIN_INTERFACE - - HRESULT ( STDMETHODCALLTYPE *QueryInterface )( - IAudioStreamVolume * This, - /* [in] */ REFIID riid, - /* [iid_is][out] */ - __RPC__deref_out void **ppvObject); - - ULONG ( STDMETHODCALLTYPE *AddRef )( - IAudioStreamVolume * This); - - ULONG ( STDMETHODCALLTYPE *Release )( - IAudioStreamVolume * This); - - HRESULT ( STDMETHODCALLTYPE *GetChannelCount )( - IAudioStreamVolume * This, - /* [out] */ - __out UINT32 *pdwCount); - - HRESULT ( STDMETHODCALLTYPE *SetChannelVolume )( - IAudioStreamVolume * This, - /* [in] */ - __in UINT32 dwIndex, - /* [in] */ - __in const float fLevel); - - HRESULT ( STDMETHODCALLTYPE *GetChannelVolume )( - IAudioStreamVolume * This, - /* [in] */ - __in UINT32 dwIndex, - /* [out] */ - __out float *pfLevel); - - HRESULT ( STDMETHODCALLTYPE *SetAllVolumes )( - IAudioStreamVolume * This, - /* [in] */ - __in UINT32 dwCount, - /* [size_is][in] */ - __in_ecount(dwCount) const float *pfVolumes); - - HRESULT ( STDMETHODCALLTYPE *GetAllVolumes )( - IAudioStreamVolume * This, - /* [in] */ - __in UINT32 dwCount, - /* [size_is][out] */ - __out_ecount(dwCount) float *pfVolumes); - - END_INTERFACE - } IAudioStreamVolumeVtbl; - - interface IAudioStreamVolume - { - CONST_VTBL struct IAudioStreamVolumeVtbl *lpVtbl; - }; - - - -#ifdef COBJMACROS - - -#define IAudioStreamVolume_QueryInterface(This,riid,ppvObject) \ - ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) - -#define IAudioStreamVolume_AddRef(This) \ - ( (This)->lpVtbl -> AddRef(This) ) - -#define IAudioStreamVolume_Release(This) \ - ( (This)->lpVtbl -> Release(This) ) - - -#define IAudioStreamVolume_GetChannelCount(This,pdwCount) \ - ( (This)->lpVtbl -> GetChannelCount(This,pdwCount) ) - -#define IAudioStreamVolume_SetChannelVolume(This,dwIndex,fLevel) \ - ( (This)->lpVtbl -> SetChannelVolume(This,dwIndex,fLevel) ) - -#define IAudioStreamVolume_GetChannelVolume(This,dwIndex,pfLevel) \ - ( (This)->lpVtbl -> GetChannelVolume(This,dwIndex,pfLevel) ) - -#define IAudioStreamVolume_SetAllVolumes(This,dwCount,pfVolumes) \ - ( (This)->lpVtbl -> SetAllVolumes(This,dwCount,pfVolumes) ) - -#define IAudioStreamVolume_GetAllVolumes(This,dwCount,pfVolumes) \ - ( (This)->lpVtbl -> GetAllVolumes(This,dwCount,pfVolumes) ) - -#endif /* COBJMACROS */ - - -#endif /* C style interface */ - - - - -#endif /* __IAudioStreamVolume_INTERFACE_DEFINED__ */ - - -#ifndef __IChannelAudioVolume_INTERFACE_DEFINED__ -#define __IChannelAudioVolume_INTERFACE_DEFINED__ - -/* interface IChannelAudioVolume */ -/* [local][unique][uuid][object] */ - - -EXTERN_C const IID IID_IChannelAudioVolume; - -#if defined(__cplusplus) && !defined(CINTERFACE) - - MIDL_INTERFACE("1C158861-B533-4B30-B1CF-E853E51C59B8") - IChannelAudioVolume : public IUnknown - { - public: - virtual HRESULT STDMETHODCALLTYPE GetChannelCount( - /* [out] */ - __out UINT32 *pdwCount) = 0; - - virtual HRESULT STDMETHODCALLTYPE SetChannelVolume( - /* [in] */ - __in UINT32 dwIndex, - /* [in] */ - __in const float fLevel, - /* [unique][in] */ LPCGUID EventContext) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetChannelVolume( - /* [in] */ - __in UINT32 dwIndex, - /* [out] */ - __out float *pfLevel) = 0; - - virtual HRESULT STDMETHODCALLTYPE SetAllVolumes( - /* [in] */ - __in UINT32 dwCount, - /* [size_is][in] */ - __in_ecount(dwCount) const float *pfVolumes, - /* [unique][in] */ LPCGUID EventContext) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetAllVolumes( - /* [in] */ - __in UINT32 dwCount, - /* [size_is][out] */ - __out_ecount(dwCount) float *pfVolumes) = 0; - - }; - -#else /* C style interface */ - - typedef struct IChannelAudioVolumeVtbl - { - BEGIN_INTERFACE - - HRESULT ( STDMETHODCALLTYPE *QueryInterface )( - IChannelAudioVolume * This, - /* [in] */ REFIID riid, - /* [iid_is][out] */ - __RPC__deref_out void **ppvObject); - - ULONG ( STDMETHODCALLTYPE *AddRef )( - IChannelAudioVolume * This); - - ULONG ( STDMETHODCALLTYPE *Release )( - IChannelAudioVolume * This); - - HRESULT ( STDMETHODCALLTYPE *GetChannelCount )( - IChannelAudioVolume * This, - /* [out] */ - __out UINT32 *pdwCount); - - HRESULT ( STDMETHODCALLTYPE *SetChannelVolume )( - IChannelAudioVolume * This, - /* [in] */ - __in UINT32 dwIndex, - /* [in] */ - __in const float fLevel, - /* [unique][in] */ LPCGUID EventContext); - - HRESULT ( STDMETHODCALLTYPE *GetChannelVolume )( - IChannelAudioVolume * This, - /* [in] */ - __in UINT32 dwIndex, - /* [out] */ - __out float *pfLevel); - - HRESULT ( STDMETHODCALLTYPE *SetAllVolumes )( - IChannelAudioVolume * This, - /* [in] */ - __in UINT32 dwCount, - /* [size_is][in] */ - __in_ecount(dwCount) const float *pfVolumes, - /* [unique][in] */ LPCGUID EventContext); - - HRESULT ( STDMETHODCALLTYPE *GetAllVolumes )( - IChannelAudioVolume * This, - /* [in] */ - __in UINT32 dwCount, - /* [size_is][out] */ - __out_ecount(dwCount) float *pfVolumes); - - END_INTERFACE - } IChannelAudioVolumeVtbl; - - interface IChannelAudioVolume - { - CONST_VTBL struct IChannelAudioVolumeVtbl *lpVtbl; - }; - - - -#ifdef COBJMACROS - - -#define IChannelAudioVolume_QueryInterface(This,riid,ppvObject) \ - ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) - -#define IChannelAudioVolume_AddRef(This) \ - ( (This)->lpVtbl -> AddRef(This) ) - -#define IChannelAudioVolume_Release(This) \ - ( (This)->lpVtbl -> Release(This) ) - - -#define IChannelAudioVolume_GetChannelCount(This,pdwCount) \ - ( (This)->lpVtbl -> GetChannelCount(This,pdwCount) ) - -#define IChannelAudioVolume_SetChannelVolume(This,dwIndex,fLevel,EventContext) \ - ( (This)->lpVtbl -> SetChannelVolume(This,dwIndex,fLevel,EventContext) ) - -#define IChannelAudioVolume_GetChannelVolume(This,dwIndex,pfLevel) \ - ( (This)->lpVtbl -> GetChannelVolume(This,dwIndex,pfLevel) ) - -#define IChannelAudioVolume_SetAllVolumes(This,dwCount,pfVolumes,EventContext) \ - ( (This)->lpVtbl -> SetAllVolumes(This,dwCount,pfVolumes,EventContext) ) - -#define IChannelAudioVolume_GetAllVolumes(This,dwCount,pfVolumes) \ - ( (This)->lpVtbl -> GetAllVolumes(This,dwCount,pfVolumes) ) - -#endif /* COBJMACROS */ - - -#endif /* C style interface */ - - - - -#endif /* __IChannelAudioVolume_INTERFACE_DEFINED__ */ - - -/* interface __MIDL_itf_audioclient_0000_0007 */ -/* [local] */ - -#define FACILITY_AUDCLNT 0x889 -#define AUDCLNT_ERR(n) MAKE_HRESULT(SEVERITY_ERROR, FACILITY_AUDCLNT, n) -#define AUDCLNT_SUCCESS(n) MAKE_SCODE(SEVERITY_SUCCESS, FACILITY_AUDCLNT, n) -#define AUDCLNT_E_NOT_INITIALIZED AUDCLNT_ERR(0x001) -#define AUDCLNT_E_ALREADY_INITIALIZED AUDCLNT_ERR(0x002) -#define AUDCLNT_E_WRONG_ENDPOINT_TYPE AUDCLNT_ERR(0x003) -#define AUDCLNT_E_DEVICE_INVALIDATED AUDCLNT_ERR(0x004) -#define AUDCLNT_E_NOT_STOPPED AUDCLNT_ERR(0x005) -#define AUDCLNT_E_BUFFER_TOO_LARGE AUDCLNT_ERR(0x006) -#define AUDCLNT_E_OUT_OF_ORDER AUDCLNT_ERR(0x007) -#define AUDCLNT_E_UNSUPPORTED_FORMAT AUDCLNT_ERR(0x008) -#define AUDCLNT_E_INVALID_SIZE AUDCLNT_ERR(0x009) -#define AUDCLNT_E_DEVICE_IN_USE AUDCLNT_ERR(0x00a) -#define AUDCLNT_E_BUFFER_OPERATION_PENDING AUDCLNT_ERR(0x00b) -#define AUDCLNT_E_THREAD_NOT_REGISTERED AUDCLNT_ERR(0x00c) -#define AUDCLNT_E_EXCLUSIVE_MODE_NOT_ALLOWED AUDCLNT_ERR(0x00e) -#define AUDCLNT_E_ENDPOINT_CREATE_FAILED AUDCLNT_ERR(0x00f) -#define AUDCLNT_E_SERVICE_NOT_RUNNING AUDCLNT_ERR(0x010) -#define AUDCLNT_E_EVENTHANDLE_NOT_EXPECTED AUDCLNT_ERR(0x011) -#define AUDCLNT_E_EXCLUSIVE_MODE_ONLY AUDCLNT_ERR(0x012) -#define AUDCLNT_E_BUFDURATION_PERIOD_NOT_EQUAL AUDCLNT_ERR(0x013) -#define AUDCLNT_E_EVENTHANDLE_NOT_SET AUDCLNT_ERR(0x014) -#define AUDCLNT_E_INCORRECT_BUFFER_SIZE AUDCLNT_ERR(0x015) -#define AUDCLNT_E_BUFFER_SIZE_ERROR AUDCLNT_ERR(0x016) -#define AUDCLNT_E_CPUUSAGE_EXCEEDED AUDCLNT_ERR(0x017) -#define AUDCLNT_S_BUFFER_EMPTY AUDCLNT_SUCCESS(0x001) -#define AUDCLNT_S_THREAD_ALREADY_REGISTERED AUDCLNT_SUCCESS(0x002) -#define AUDCLNT_S_POSITION_STALLED AUDCLNT_SUCCESS(0x003) - - -extern RPC_IF_HANDLE __MIDL_itf_audioclient_0000_0007_v0_0_c_ifspec; -extern RPC_IF_HANDLE __MIDL_itf_audioclient_0000_0007_v0_0_s_ifspec; - -/* Additional Prototypes for ALL interfaces */ - -/* end of Additional Prototypes */ - -#ifdef __cplusplus -} -#endif - -#endif - - - diff --git a/portaudio/src/hostapi/wasapi/mingw-include/devicetopology.h b/portaudio/src/hostapi/wasapi/mingw-include/devicetopology.h deleted file mode 100644 index 7a1f75c..0000000 --- a/portaudio/src/hostapi/wasapi/mingw-include/devicetopology.h +++ /dev/null @@ -1,3275 +0,0 @@ - - -/* this ALWAYS GENERATED file contains the definitions for the interfaces */ - - - /* File created by MIDL compiler version 7.00.0499 */ -/* Compiler settings for devicetopology.idl: - Oicf, W1, Zp8, env=Win32 (32b run) - protocol : dce , ms_ext, c_ext, robust - error checks: allocation ref bounds_check enum stub_data - VC __declspec() decoration level: - __declspec(uuid()), __declspec(selectany), __declspec(novtable) - DECLSPEC_UUID(), MIDL_INTERFACE() -*/ -//@@MIDL_FILE_HEADING( ) - -#pragma warning( disable: 4049 ) /* more than 64k source lines */ - - -/* verify that the <rpcndr.h> version is high enough to compile this file*/ -#ifndef __REQUIRED_RPCNDR_H_VERSION__ -#define __REQUIRED_RPCNDR_H_VERSION__ 500 -#endif - -/* verify that the <rpcsal.h> version is high enough to compile this file*/ -#ifndef __REQUIRED_RPCSAL_H_VERSION__ -#define __REQUIRED_RPCSAL_H_VERSION__ 100 -#endif - -#include "rpc.h" -#include "rpcndr.h" - -#ifndef __RPCNDR_H_VERSION__ -#error this stub requires an updated version of <rpcndr.h> -#endif // __RPCNDR_H_VERSION__ - -#ifndef COM_NO_WINDOWS_H -#include "windows.h" -#include "ole2.h" -#endif /*COM_NO_WINDOWS_H*/ - -#ifndef __devicetopology_h__ -#define __devicetopology_h__ - -#if defined(_MSC_VER) && (_MSC_VER >= 1020) -#pragma once -#endif - -/* Forward Declarations */ - -#ifndef __IKsControl_FWD_DEFINED__ -#define __IKsControl_FWD_DEFINED__ -typedef interface IKsControl IKsControl; -#endif /* __IKsControl_FWD_DEFINED__ */ - - -#ifndef __IPerChannelDbLevel_FWD_DEFINED__ -#define __IPerChannelDbLevel_FWD_DEFINED__ -typedef interface IPerChannelDbLevel IPerChannelDbLevel; -#endif /* __IPerChannelDbLevel_FWD_DEFINED__ */ - - -#ifndef __IAudioVolumeLevel_FWD_DEFINED__ -#define __IAudioVolumeLevel_FWD_DEFINED__ -typedef interface IAudioVolumeLevel IAudioVolumeLevel; -#endif /* __IAudioVolumeLevel_FWD_DEFINED__ */ - - -#ifndef __IAudioChannelConfig_FWD_DEFINED__ -#define __IAudioChannelConfig_FWD_DEFINED__ -typedef interface IAudioChannelConfig IAudioChannelConfig; -#endif /* __IAudioChannelConfig_FWD_DEFINED__ */ - - -#ifndef __IAudioLoudness_FWD_DEFINED__ -#define __IAudioLoudness_FWD_DEFINED__ -typedef interface IAudioLoudness IAudioLoudness; -#endif /* __IAudioLoudness_FWD_DEFINED__ */ - - -#ifndef __IAudioInputSelector_FWD_DEFINED__ -#define __IAudioInputSelector_FWD_DEFINED__ -typedef interface IAudioInputSelector IAudioInputSelector; -#endif /* __IAudioInputSelector_FWD_DEFINED__ */ - - -#ifndef __IAudioOutputSelector_FWD_DEFINED__ -#define __IAudioOutputSelector_FWD_DEFINED__ -typedef interface IAudioOutputSelector IAudioOutputSelector; -#endif /* __IAudioOutputSelector_FWD_DEFINED__ */ - - -#ifndef __IAudioMute_FWD_DEFINED__ -#define __IAudioMute_FWD_DEFINED__ -typedef interface IAudioMute IAudioMute; -#endif /* __IAudioMute_FWD_DEFINED__ */ - - -#ifndef __IAudioBass_FWD_DEFINED__ -#define __IAudioBass_FWD_DEFINED__ -typedef interface IAudioBass IAudioBass; -#endif /* __IAudioBass_FWD_DEFINED__ */ - - -#ifndef __IAudioMidrange_FWD_DEFINED__ -#define __IAudioMidrange_FWD_DEFINED__ -typedef interface IAudioMidrange IAudioMidrange; -#endif /* __IAudioMidrange_FWD_DEFINED__ */ - - -#ifndef __IAudioTreble_FWD_DEFINED__ -#define __IAudioTreble_FWD_DEFINED__ -typedef interface IAudioTreble IAudioTreble; -#endif /* __IAudioTreble_FWD_DEFINED__ */ - - -#ifndef __IAudioAutoGainControl_FWD_DEFINED__ -#define __IAudioAutoGainControl_FWD_DEFINED__ -typedef interface IAudioAutoGainControl IAudioAutoGainControl; -#endif /* __IAudioAutoGainControl_FWD_DEFINED__ */ - - -#ifndef __IAudioPeakMeter_FWD_DEFINED__ -#define __IAudioPeakMeter_FWD_DEFINED__ -typedef interface IAudioPeakMeter IAudioPeakMeter; -#endif /* __IAudioPeakMeter_FWD_DEFINED__ */ - - -#ifndef __IDeviceSpecificProperty_FWD_DEFINED__ -#define __IDeviceSpecificProperty_FWD_DEFINED__ -typedef interface IDeviceSpecificProperty IDeviceSpecificProperty; -#endif /* __IDeviceSpecificProperty_FWD_DEFINED__ */ - - -#ifndef __IKsFormatSupport_FWD_DEFINED__ -#define __IKsFormatSupport_FWD_DEFINED__ -typedef interface IKsFormatSupport IKsFormatSupport; -#endif /* __IKsFormatSupport_FWD_DEFINED__ */ - - -#ifndef __IKsJackDescription_FWD_DEFINED__ -#define __IKsJackDescription_FWD_DEFINED__ -typedef interface IKsJackDescription IKsJackDescription; -#endif /* __IKsJackDescription_FWD_DEFINED__ */ - - -#ifndef __IPartsList_FWD_DEFINED__ -#define __IPartsList_FWD_DEFINED__ -typedef interface IPartsList IPartsList; -#endif /* __IPartsList_FWD_DEFINED__ */ - - -#ifndef __IPart_FWD_DEFINED__ -#define __IPart_FWD_DEFINED__ -typedef interface IPart IPart; -#endif /* __IPart_FWD_DEFINED__ */ - - -#ifndef __IConnector_FWD_DEFINED__ -#define __IConnector_FWD_DEFINED__ -typedef interface IConnector IConnector; -#endif /* __IConnector_FWD_DEFINED__ */ - - -#ifndef __ISubunit_FWD_DEFINED__ -#define __ISubunit_FWD_DEFINED__ -typedef interface ISubunit ISubunit; -#endif /* __ISubunit_FWD_DEFINED__ */ - - -#ifndef __IControlInterface_FWD_DEFINED__ -#define __IControlInterface_FWD_DEFINED__ -typedef interface IControlInterface IControlInterface; -#endif /* __IControlInterface_FWD_DEFINED__ */ - - -#ifndef __IControlChangeNotify_FWD_DEFINED__ -#define __IControlChangeNotify_FWD_DEFINED__ -typedef interface IControlChangeNotify IControlChangeNotify; -#endif /* __IControlChangeNotify_FWD_DEFINED__ */ - - -#ifndef __IDeviceTopology_FWD_DEFINED__ -#define __IDeviceTopology_FWD_DEFINED__ -typedef interface IDeviceTopology IDeviceTopology; -#endif /* __IDeviceTopology_FWD_DEFINED__ */ - - -#ifndef __DeviceTopology_FWD_DEFINED__ -#define __DeviceTopology_FWD_DEFINED__ - -#ifdef __cplusplus -typedef class DeviceTopology DeviceTopology; -#else -typedef struct DeviceTopology DeviceTopology; -#endif /* __cplusplus */ - -#endif /* __DeviceTopology_FWD_DEFINED__ */ - - -#ifndef __IPartsList_FWD_DEFINED__ -#define __IPartsList_FWD_DEFINED__ -typedef interface IPartsList IPartsList; -#endif /* __IPartsList_FWD_DEFINED__ */ - - -#ifndef __IPerChannelDbLevel_FWD_DEFINED__ -#define __IPerChannelDbLevel_FWD_DEFINED__ -typedef interface IPerChannelDbLevel IPerChannelDbLevel; -#endif /* __IPerChannelDbLevel_FWD_DEFINED__ */ - - -#ifndef __IAudioVolumeLevel_FWD_DEFINED__ -#define __IAudioVolumeLevel_FWD_DEFINED__ -typedef interface IAudioVolumeLevel IAudioVolumeLevel; -#endif /* __IAudioVolumeLevel_FWD_DEFINED__ */ - - -#ifndef __IAudioLoudness_FWD_DEFINED__ -#define __IAudioLoudness_FWD_DEFINED__ -typedef interface IAudioLoudness IAudioLoudness; -#endif /* __IAudioLoudness_FWD_DEFINED__ */ - - -#ifndef __IAudioInputSelector_FWD_DEFINED__ -#define __IAudioInputSelector_FWD_DEFINED__ -typedef interface IAudioInputSelector IAudioInputSelector; -#endif /* __IAudioInputSelector_FWD_DEFINED__ */ - - -#ifndef __IAudioMute_FWD_DEFINED__ -#define __IAudioMute_FWD_DEFINED__ -typedef interface IAudioMute IAudioMute; -#endif /* __IAudioMute_FWD_DEFINED__ */ - - -#ifndef __IAudioBass_FWD_DEFINED__ -#define __IAudioBass_FWD_DEFINED__ -typedef interface IAudioBass IAudioBass; -#endif /* __IAudioBass_FWD_DEFINED__ */ - - -#ifndef __IAudioMidrange_FWD_DEFINED__ -#define __IAudioMidrange_FWD_DEFINED__ -typedef interface IAudioMidrange IAudioMidrange; -#endif /* __IAudioMidrange_FWD_DEFINED__ */ - - -#ifndef __IAudioTreble_FWD_DEFINED__ -#define __IAudioTreble_FWD_DEFINED__ -typedef interface IAudioTreble IAudioTreble; -#endif /* __IAudioTreble_FWD_DEFINED__ */ - - -#ifndef __IAudioAutoGainControl_FWD_DEFINED__ -#define __IAudioAutoGainControl_FWD_DEFINED__ -typedef interface IAudioAutoGainControl IAudioAutoGainControl; -#endif /* __IAudioAutoGainControl_FWD_DEFINED__ */ - - -#ifndef __IAudioOutputSelector_FWD_DEFINED__ -#define __IAudioOutputSelector_FWD_DEFINED__ -typedef interface IAudioOutputSelector IAudioOutputSelector; -#endif /* __IAudioOutputSelector_FWD_DEFINED__ */ - - -#ifndef __IAudioPeakMeter_FWD_DEFINED__ -#define __IAudioPeakMeter_FWD_DEFINED__ -typedef interface IAudioPeakMeter IAudioPeakMeter; -#endif /* __IAudioPeakMeter_FWD_DEFINED__ */ - - -#ifndef __IDeviceSpecificProperty_FWD_DEFINED__ -#define __IDeviceSpecificProperty_FWD_DEFINED__ -typedef interface IDeviceSpecificProperty IDeviceSpecificProperty; -#endif /* __IDeviceSpecificProperty_FWD_DEFINED__ */ - - -#ifndef __IKsFormatSupport_FWD_DEFINED__ -#define __IKsFormatSupport_FWD_DEFINED__ -typedef interface IKsFormatSupport IKsFormatSupport; -#endif /* __IKsFormatSupport_FWD_DEFINED__ */ - - -/* header files for imported files */ -#include "oaidl.h" -#include "ocidl.h" -#include "propidl.h" - -#ifdef __cplusplus -extern "C"{ -#endif - - -/* interface __MIDL_itf_devicetopology_0000_0000 */ -/* [local] */ - -#define E_NOTFOUND HRESULT_FROM_WIN32(ERROR_NOT_FOUND) -// -// Flag for clients of IControlChangeNotify::OnNotify to allow those clients to identify hardware initiated notifications -// -#define DEVTOPO_HARDWARE_INITIATED_EVENTCONTEXT 'draH' -/* E2C2E9DE-09B1-4B04-84E5-07931225EE04 */ -DEFINE_GUID(EVENTCONTEXT_VOLUMESLIDER, 0xE2C2E9DE,0x09B1,0x4B04,0x84, 0xE5, 0x07, 0x93, 0x12, 0x25, 0xEE, 0x04); -#define _IKsControl_ -#include "ks.h" -#include "ksmedia.h" -#ifndef _KS_ -typedef /* [public] */ struct __MIDL___MIDL_itf_devicetopology_0000_0000_0001 - { - ULONG FormatSize; - ULONG Flags; - ULONG SampleSize; - ULONG Reserved; - GUID MajorFormat; - GUID SubFormat; - GUID Specifier; - } KSDATAFORMAT; - -typedef struct __MIDL___MIDL_itf_devicetopology_0000_0000_0001 *PKSDATAFORMAT; - -typedef /* [public][public][public][public][public][public][public][public][public][public] */ struct __MIDL___MIDL_itf_devicetopology_0000_0000_0002 - { - union - { - struct - { - GUID Set; - ULONG Id; - ULONG Flags; - } ; - LONGLONG Alignment; - } ; - } KSIDENTIFIER; - -typedef struct __MIDL___MIDL_itf_devicetopology_0000_0000_0002 *PKSIDENTIFIER; - -typedef /* [public][public][public][public] */ -enum __MIDL___MIDL_itf_devicetopology_0000_0000_0005 - { ePcxChanMap_FL_FR = 0, - ePcxChanMap_FC_LFE = ( ePcxChanMap_FL_FR + 1 ) , - ePcxChanMap_BL_BR = ( ePcxChanMap_FC_LFE + 1 ) , - ePcxChanMap_FLC_FRC = ( ePcxChanMap_BL_BR + 1 ) , - ePcxChanMap_SL_SR = ( ePcxChanMap_FLC_FRC + 1 ) , - ePcxChanMap_Unknown = ( ePcxChanMap_SL_SR + 1 ) - } EChannelMapping; - -typedef /* [public][public][public][public] */ -enum __MIDL___MIDL_itf_devicetopology_0000_0000_0006 - { eConnTypeUnknown = 0, - eConnTypeEighth = ( eConnTypeUnknown + 1 ) , - eConnTypeQuarter = ( eConnTypeEighth + 1 ) , - eConnTypeAtapiInternal = ( eConnTypeQuarter + 1 ) , - eConnTypeRCA = ( eConnTypeAtapiInternal + 1 ) , - eConnTypeOptical = ( eConnTypeRCA + 1 ) , - eConnTypeOtherDigital = ( eConnTypeOptical + 1 ) , - eConnTypeOtherAnalog = ( eConnTypeOtherDigital + 1 ) , - eConnTypeMultichannelAnalogDIN = ( eConnTypeOtherAnalog + 1 ) , - eConnTypeXlrProfessional = ( eConnTypeMultichannelAnalogDIN + 1 ) , - eConnTypeRJ11Modem = ( eConnTypeXlrProfessional + 1 ) , - eConnTypeCombination = ( eConnTypeRJ11Modem + 1 ) - } EPcxConnectionType; - -typedef /* [public][public][public][public] */ -enum __MIDL___MIDL_itf_devicetopology_0000_0000_0007 - { eGeoLocRear = 0x1, - eGeoLocFront = ( eGeoLocRear + 1 ) , - eGeoLocLeft = ( eGeoLocFront + 1 ) , - eGeoLocRight = ( eGeoLocLeft + 1 ) , - eGeoLocTop = ( eGeoLocRight + 1 ) , - eGeoLocBottom = ( eGeoLocTop + 1 ) , - eGeoLocRearOPanel = ( eGeoLocBottom + 1 ) , - eGeoLocRiser = ( eGeoLocRearOPanel + 1 ) , - eGeoLocInsideMobileLid = ( eGeoLocRiser + 1 ) , - eGeoLocDrivebay = ( eGeoLocInsideMobileLid + 1 ) , - eGeoLocHDMI = ( eGeoLocDrivebay + 1 ) , - eGeoLocOutsideMobileLid = ( eGeoLocHDMI + 1 ) , - eGeoLocATAPI = ( eGeoLocOutsideMobileLid + 1 ) , - eGeoLocReserved5 = ( eGeoLocATAPI + 1 ) , - eGeoLocReserved6 = ( eGeoLocReserved5 + 1 ) - } EPcxGeoLocation; - -typedef /* [public][public][public][public] */ -enum __MIDL___MIDL_itf_devicetopology_0000_0000_0008 - { eGenLocPrimaryBox = 0, - eGenLocInternal = ( eGenLocPrimaryBox + 1 ) , - eGenLocSeperate = ( eGenLocInternal + 1 ) , - eGenLocOther = ( eGenLocSeperate + 1 ) - } EPcxGenLocation; - -typedef /* [public][public][public][public] */ -enum __MIDL___MIDL_itf_devicetopology_0000_0000_0009 - { ePortConnJack = 0, - ePortConnIntegratedDevice = ( ePortConnJack + 1 ) , - ePortConnBothIntegratedAndJack = ( ePortConnIntegratedDevice + 1 ) , - ePortConnUnknown = ( ePortConnBothIntegratedAndJack + 1 ) - } EPxcPortConnection; - -typedef /* [public][public] */ struct __MIDL___MIDL_itf_devicetopology_0000_0000_0010 - { - EChannelMapping ChannelMapping; - COLORREF Color; - EPcxConnectionType ConnectionType; - EPcxGeoLocation GeoLocation; - EPcxGenLocation GenLocation; - EPxcPortConnection PortConnection; - BOOL IsConnected; - } KSJACK_DESCRIPTION; - -typedef struct __MIDL___MIDL_itf_devicetopology_0000_0000_0010 *PKSJACK_DESCRIPTION; - -typedef KSIDENTIFIER KSPROPERTY; - -typedef KSIDENTIFIER *PKSPROPERTY; - -typedef KSIDENTIFIER KSMETHOD; - -typedef KSIDENTIFIER *PKSMETHOD; - -typedef KSIDENTIFIER KSEVENT; - -typedef KSIDENTIFIER *PKSEVENT; - -#endif - - - - - - - - -typedef /* [public][public] */ -enum __MIDL___MIDL_itf_devicetopology_0000_0000_0011 - { In = 0, - Out = ( In + 1 ) - } DataFlow; - -typedef /* [public][public] */ -enum __MIDL___MIDL_itf_devicetopology_0000_0000_0012 - { Connector = 0, - Subunit = ( Connector + 1 ) - } PartType; - -#define PARTTYPE_FLAG_CONNECTOR 0x00010000 -#define PARTTYPE_FLAG_SUBUNIT 0x00020000 -#define PARTTYPE_MASK 0x00030000 -#define PARTID_MASK 0x0000ffff -typedef /* [public][public] */ -enum __MIDL___MIDL_itf_devicetopology_0000_0000_0013 - { Unknown_Connector = 0, - Physical_Internal = ( Unknown_Connector + 1 ) , - Physical_External = ( Physical_Internal + 1 ) , - Software_IO = ( Physical_External + 1 ) , - Software_Fixed = ( Software_IO + 1 ) , - Network = ( Software_Fixed + 1 ) - } ConnectorType; - - - -extern RPC_IF_HANDLE __MIDL_itf_devicetopology_0000_0000_v0_0_c_ifspec; -extern RPC_IF_HANDLE __MIDL_itf_devicetopology_0000_0000_v0_0_s_ifspec; - -#ifndef __IKsControl_INTERFACE_DEFINED__ -#define __IKsControl_INTERFACE_DEFINED__ - -/* interface IKsControl */ -/* [unique][helpstring][nonextensible][uuid][local][object] */ - - -EXTERN_C const IID IID_IKsControl; - -#if defined(__cplusplus) && !defined(CINTERFACE) - - MIDL_INTERFACE("28F54685-06FD-11D2-B27A-00A0C9223196") - IKsControl : public IUnknown - { - public: - virtual HRESULT STDMETHODCALLTYPE KsProperty( - /* [in] */ PKSPROPERTY Property, - /* [in] */ ULONG PropertyLength, - /* [out][in] */ void *PropertyData, - /* [in] */ ULONG DataLength, - /* [out] */ ULONG *BytesReturned) = 0; - - virtual HRESULT STDMETHODCALLTYPE KsMethod( - /* [in] */ PKSMETHOD Method, - /* [in] */ ULONG MethodLength, - /* [out][in] */ void *MethodData, - /* [in] */ ULONG DataLength, - /* [out] */ ULONG *BytesReturned) = 0; - - virtual HRESULT STDMETHODCALLTYPE KsEvent( - /* [in] */ PKSEVENT Event, - /* [in] */ ULONG EventLength, - /* [out][in] */ void *EventData, - /* [in] */ ULONG DataLength, - /* [out] */ ULONG *BytesReturned) = 0; - - }; - -#else /* C style interface */ - - typedef struct IKsControlVtbl - { - BEGIN_INTERFACE - - HRESULT ( STDMETHODCALLTYPE *QueryInterface )( - IKsControl * This, - /* [in] */ REFIID riid, - /* [iid_is][out] */ - __RPC__deref_out void **ppvObject); - - ULONG ( STDMETHODCALLTYPE *AddRef )( - IKsControl * This); - - ULONG ( STDMETHODCALLTYPE *Release )( - IKsControl * This); - - HRESULT ( STDMETHODCALLTYPE *KsProperty )( - IKsControl * This, - /* [in] */ PKSPROPERTY Property, - /* [in] */ ULONG PropertyLength, - /* [out][in] */ void *PropertyData, - /* [in] */ ULONG DataLength, - /* [out] */ ULONG *BytesReturned); - - HRESULT ( STDMETHODCALLTYPE *KsMethod )( - IKsControl * This, - /* [in] */ PKSMETHOD Method, - /* [in] */ ULONG MethodLength, - /* [out][in] */ void *MethodData, - /* [in] */ ULONG DataLength, - /* [out] */ ULONG *BytesReturned); - - HRESULT ( STDMETHODCALLTYPE *KsEvent )( - IKsControl * This, - /* [in] */ PKSEVENT Event, - /* [in] */ ULONG EventLength, - /* [out][in] */ void *EventData, - /* [in] */ ULONG DataLength, - /* [out] */ ULONG *BytesReturned); - - END_INTERFACE - } IKsControlVtbl; - - interface IKsControl - { - CONST_VTBL struct IKsControlVtbl *lpVtbl; - }; - - - -#ifdef COBJMACROS - - -#define IKsControl_QueryInterface(This,riid,ppvObject) \ - ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) - -#define IKsControl_AddRef(This) \ - ( (This)->lpVtbl -> AddRef(This) ) - -#define IKsControl_Release(This) \ - ( (This)->lpVtbl -> Release(This) ) - - -#define IKsControl_KsProperty(This,Property,PropertyLength,PropertyData,DataLength,BytesReturned) \ - ( (This)->lpVtbl -> KsProperty(This,Property,PropertyLength,PropertyData,DataLength,BytesReturned) ) - -#define IKsControl_KsMethod(This,Method,MethodLength,MethodData,DataLength,BytesReturned) \ - ( (This)->lpVtbl -> KsMethod(This,Method,MethodLength,MethodData,DataLength,BytesReturned) ) - -#define IKsControl_KsEvent(This,Event,EventLength,EventData,DataLength,BytesReturned) \ - ( (This)->lpVtbl -> KsEvent(This,Event,EventLength,EventData,DataLength,BytesReturned) ) - -#endif /* COBJMACROS */ - - -#endif /* C style interface */ - - - - -#endif /* __IKsControl_INTERFACE_DEFINED__ */ - - -#ifndef __IPerChannelDbLevel_INTERFACE_DEFINED__ -#define __IPerChannelDbLevel_INTERFACE_DEFINED__ - -/* interface IPerChannelDbLevel */ -/* [unique][helpstring][nonextensible][uuid][local][object] */ - - -EXTERN_C const IID IID_IPerChannelDbLevel; - -#if defined(__cplusplus) && !defined(CINTERFACE) - - MIDL_INTERFACE("C2F8E001-F205-4BC9-99BC-C13B1E048CCB") - IPerChannelDbLevel : public IUnknown - { - public: - virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE GetChannelCount( - /* [out] */ - __out UINT *pcChannels) = 0; - - virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE GetLevelRange( - /* [in] */ - __in UINT nChannel, - /* [out] */ - __out float *pfMinLevelDB, - /* [out] */ - __out float *pfMaxLevelDB, - /* [out] */ - __out float *pfStepping) = 0; - - virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE GetLevel( - /* [in] */ - __in UINT nChannel, - /* [out] */ - __out float *pfLevelDB) = 0; - - virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE SetLevel( - /* [in] */ - __in UINT nChannel, - /* [in] */ - __in float fLevelDB, - /* [unique][in] */ - __in_opt LPCGUID pguidEventContext) = 0; - - virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE SetLevelUniform( - /* [in] */ - __in float fLevelDB, - /* [unique][in] */ - __in_opt LPCGUID pguidEventContext) = 0; - - virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE SetLevelAllChannels( - /* [size_is][in] */ - __in_ecount(cChannels) float aLevelsDB[ ], - /* [in] */ - __in ULONG cChannels, - /* [unique][in] */ - __in_opt LPCGUID pguidEventContext) = 0; - - }; - -#else /* C style interface */ - - typedef struct IPerChannelDbLevelVtbl - { - BEGIN_INTERFACE - - HRESULT ( STDMETHODCALLTYPE *QueryInterface )( - IPerChannelDbLevel * This, - /* [in] */ REFIID riid, - /* [iid_is][out] */ - __RPC__deref_out void **ppvObject); - - ULONG ( STDMETHODCALLTYPE *AddRef )( - IPerChannelDbLevel * This); - - ULONG ( STDMETHODCALLTYPE *Release )( - IPerChannelDbLevel * This); - - /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *GetChannelCount )( - IPerChannelDbLevel * This, - /* [out] */ - __out UINT *pcChannels); - - /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *GetLevelRange )( - IPerChannelDbLevel * This, - /* [in] */ - __in UINT nChannel, - /* [out] */ - __out float *pfMinLevelDB, - /* [out] */ - __out float *pfMaxLevelDB, - /* [out] */ - __out float *pfStepping); - - /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *GetLevel )( - IPerChannelDbLevel * This, - /* [in] */ - __in UINT nChannel, - /* [out] */ - __out float *pfLevelDB); - - /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *SetLevel )( - IPerChannelDbLevel * This, - /* [in] */ - __in UINT nChannel, - /* [in] */ - __in float fLevelDB, - /* [unique][in] */ - __in_opt LPCGUID pguidEventContext); - - /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *SetLevelUniform )( - IPerChannelDbLevel * This, - /* [in] */ - __in float fLevelDB, - /* [unique][in] */ - __in_opt LPCGUID pguidEventContext); - - /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *SetLevelAllChannels )( - IPerChannelDbLevel * This, - /* [size_is][in] */ - __in_ecount(cChannels) float aLevelsDB[ ], - /* [in] */ - __in ULONG cChannels, - /* [unique][in] */ - __in_opt LPCGUID pguidEventContext); - - END_INTERFACE - } IPerChannelDbLevelVtbl; - - interface IPerChannelDbLevel - { - CONST_VTBL struct IPerChannelDbLevelVtbl *lpVtbl; - }; - - - -#ifdef COBJMACROS - - -#define IPerChannelDbLevel_QueryInterface(This,riid,ppvObject) \ - ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) - -#define IPerChannelDbLevel_AddRef(This) \ - ( (This)->lpVtbl -> AddRef(This) ) - -#define IPerChannelDbLevel_Release(This) \ - ( (This)->lpVtbl -> Release(This) ) - - -#define IPerChannelDbLevel_GetChannelCount(This,pcChannels) \ - ( (This)->lpVtbl -> GetChannelCount(This,pcChannels) ) - -#define IPerChannelDbLevel_GetLevelRange(This,nChannel,pfMinLevelDB,pfMaxLevelDB,pfStepping) \ - ( (This)->lpVtbl -> GetLevelRange(This,nChannel,pfMinLevelDB,pfMaxLevelDB,pfStepping) ) - -#define IPerChannelDbLevel_GetLevel(This,nChannel,pfLevelDB) \ - ( (This)->lpVtbl -> GetLevel(This,nChannel,pfLevelDB) ) - -#define IPerChannelDbLevel_SetLevel(This,nChannel,fLevelDB,pguidEventContext) \ - ( (This)->lpVtbl -> SetLevel(This,nChannel,fLevelDB,pguidEventContext) ) - -#define IPerChannelDbLevel_SetLevelUniform(This,fLevelDB,pguidEventContext) \ - ( (This)->lpVtbl -> SetLevelUniform(This,fLevelDB,pguidEventContext) ) - -#define IPerChannelDbLevel_SetLevelAllChannels(This,aLevelsDB,cChannels,pguidEventContext) \ - ( (This)->lpVtbl -> SetLevelAllChannels(This,aLevelsDB,cChannels,pguidEventContext) ) - -#endif /* COBJMACROS */ - - -#endif /* C style interface */ - - - - -#endif /* __IPerChannelDbLevel_INTERFACE_DEFINED__ */ - - -#ifndef __IAudioVolumeLevel_INTERFACE_DEFINED__ -#define __IAudioVolumeLevel_INTERFACE_DEFINED__ - -/* interface IAudioVolumeLevel */ -/* [unique][helpstring][nonextensible][uuid][local][object] */ - - -EXTERN_C const IID IID_IAudioVolumeLevel; - -#if defined(__cplusplus) && !defined(CINTERFACE) - - MIDL_INTERFACE("7FB7B48F-531D-44A2-BCB3-5AD5A134B3DC") - IAudioVolumeLevel : public IPerChannelDbLevel - { - public: - }; - -#else /* C style interface */ - - typedef struct IAudioVolumeLevelVtbl - { - BEGIN_INTERFACE - - HRESULT ( STDMETHODCALLTYPE *QueryInterface )( - IAudioVolumeLevel * This, - /* [in] */ REFIID riid, - /* [iid_is][out] */ - __RPC__deref_out void **ppvObject); - - ULONG ( STDMETHODCALLTYPE *AddRef )( - IAudioVolumeLevel * This); - - ULONG ( STDMETHODCALLTYPE *Release )( - IAudioVolumeLevel * This); - - /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *GetChannelCount )( - IAudioVolumeLevel * This, - /* [out] */ - __out UINT *pcChannels); - - /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *GetLevelRange )( - IAudioVolumeLevel * This, - /* [in] */ - __in UINT nChannel, - /* [out] */ - __out float *pfMinLevelDB, - /* [out] */ - __out float *pfMaxLevelDB, - /* [out] */ - __out float *pfStepping); - - /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *GetLevel )( - IAudioVolumeLevel * This, - /* [in] */ - __in UINT nChannel, - /* [out] */ - __out float *pfLevelDB); - - /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *SetLevel )( - IAudioVolumeLevel * This, - /* [in] */ - __in UINT nChannel, - /* [in] */ - __in float fLevelDB, - /* [unique][in] */ - __in_opt LPCGUID pguidEventContext); - - /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *SetLevelUniform )( - IAudioVolumeLevel * This, - /* [in] */ - __in float fLevelDB, - /* [unique][in] */ - __in_opt LPCGUID pguidEventContext); - - /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *SetLevelAllChannels )( - IAudioVolumeLevel * This, - /* [size_is][in] */ - __in_ecount(cChannels) float aLevelsDB[ ], - /* [in] */ - __in ULONG cChannels, - /* [unique][in] */ - __in_opt LPCGUID pguidEventContext); - - END_INTERFACE - } IAudioVolumeLevelVtbl; - - interface IAudioVolumeLevel - { - CONST_VTBL struct IAudioVolumeLevelVtbl *lpVtbl; - }; - - - -#ifdef COBJMACROS - - -#define IAudioVolumeLevel_QueryInterface(This,riid,ppvObject) \ - ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) - -#define IAudioVolumeLevel_AddRef(This) \ - ( (This)->lpVtbl -> AddRef(This) ) - -#define IAudioVolumeLevel_Release(This) \ - ( (This)->lpVtbl -> Release(This) ) - - -#define IAudioVolumeLevel_GetChannelCount(This,pcChannels) \ - ( (This)->lpVtbl -> GetChannelCount(This,pcChannels) ) - -#define IAudioVolumeLevel_GetLevelRange(This,nChannel,pfMinLevelDB,pfMaxLevelDB,pfStepping) \ - ( (This)->lpVtbl -> GetLevelRange(This,nChannel,pfMinLevelDB,pfMaxLevelDB,pfStepping) ) - -#define IAudioVolumeLevel_GetLevel(This,nChannel,pfLevelDB) \ - ( (This)->lpVtbl -> GetLevel(This,nChannel,pfLevelDB) ) - -#define IAudioVolumeLevel_SetLevel(This,nChannel,fLevelDB,pguidEventContext) \ - ( (This)->lpVtbl -> SetLevel(This,nChannel,fLevelDB,pguidEventContext) ) - -#define IAudioVolumeLevel_SetLevelUniform(This,fLevelDB,pguidEventContext) \ - ( (This)->lpVtbl -> SetLevelUniform(This,fLevelDB,pguidEventContext) ) - -#define IAudioVolumeLevel_SetLevelAllChannels(This,aLevelsDB,cChannels,pguidEventContext) \ - ( (This)->lpVtbl -> SetLevelAllChannels(This,aLevelsDB,cChannels,pguidEventContext) ) - - -#endif /* COBJMACROS */ - - -#endif /* C style interface */ - - - - -#endif /* __IAudioVolumeLevel_INTERFACE_DEFINED__ */ - - -#ifndef __IAudioChannelConfig_INTERFACE_DEFINED__ -#define __IAudioChannelConfig_INTERFACE_DEFINED__ - -/* interface IAudioChannelConfig */ -/* [unique][helpstring][nonextensible][uuid][local][object] */ - - -EXTERN_C const IID IID_IAudioChannelConfig; - -#if defined(__cplusplus) && !defined(CINTERFACE) - - MIDL_INTERFACE("BB11C46F-EC28-493C-B88A-5DB88062CE98") - IAudioChannelConfig : public IUnknown - { - public: - virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE SetChannelConfig( - /* [in] */ DWORD dwConfig, - /* [unique][in] */ - __in_opt LPCGUID pguidEventContext) = 0; - - virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE GetChannelConfig( - /* [retval][out] */ DWORD *pdwConfig) = 0; - - }; - -#else /* C style interface */ - - typedef struct IAudioChannelConfigVtbl - { - BEGIN_INTERFACE - - HRESULT ( STDMETHODCALLTYPE *QueryInterface )( - IAudioChannelConfig * This, - /* [in] */ REFIID riid, - /* [iid_is][out] */ - __RPC__deref_out void **ppvObject); - - ULONG ( STDMETHODCALLTYPE *AddRef )( - IAudioChannelConfig * This); - - ULONG ( STDMETHODCALLTYPE *Release )( - IAudioChannelConfig * This); - - /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *SetChannelConfig )( - IAudioChannelConfig * This, - /* [in] */ DWORD dwConfig, - /* [unique][in] */ - __in_opt LPCGUID pguidEventContext); - - /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *GetChannelConfig )( - IAudioChannelConfig * This, - /* [retval][out] */ DWORD *pdwConfig); - - END_INTERFACE - } IAudioChannelConfigVtbl; - - interface IAudioChannelConfig - { - CONST_VTBL struct IAudioChannelConfigVtbl *lpVtbl; - }; - - - -#ifdef COBJMACROS - - -#define IAudioChannelConfig_QueryInterface(This,riid,ppvObject) \ - ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) - -#define IAudioChannelConfig_AddRef(This) \ - ( (This)->lpVtbl -> AddRef(This) ) - -#define IAudioChannelConfig_Release(This) \ - ( (This)->lpVtbl -> Release(This) ) - - -#define IAudioChannelConfig_SetChannelConfig(This,dwConfig,pguidEventContext) \ - ( (This)->lpVtbl -> SetChannelConfig(This,dwConfig,pguidEventContext) ) - -#define IAudioChannelConfig_GetChannelConfig(This,pdwConfig) \ - ( (This)->lpVtbl -> GetChannelConfig(This,pdwConfig) ) - -#endif /* COBJMACROS */ - - -#endif /* C style interface */ - - - - -#endif /* __IAudioChannelConfig_INTERFACE_DEFINED__ */ - - -#ifndef __IAudioLoudness_INTERFACE_DEFINED__ -#define __IAudioLoudness_INTERFACE_DEFINED__ - -/* interface IAudioLoudness */ -/* [unique][helpstring][nonextensible][uuid][local][object] */ - - -EXTERN_C const IID IID_IAudioLoudness; - -#if defined(__cplusplus) && !defined(CINTERFACE) - - MIDL_INTERFACE("7D8B1437-DD53-4350-9C1B-1EE2890BD938") - IAudioLoudness : public IUnknown - { - public: - virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE GetEnabled( - /* [out] */ - __out BOOL *pbEnabled) = 0; - - virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE SetEnabled( - /* [in] */ - __in BOOL bEnable, - /* [unique][in] */ - __in_opt LPCGUID pguidEventContext) = 0; - - }; - -#else /* C style interface */ - - typedef struct IAudioLoudnessVtbl - { - BEGIN_INTERFACE - - HRESULT ( STDMETHODCALLTYPE *QueryInterface )( - IAudioLoudness * This, - /* [in] */ REFIID riid, - /* [iid_is][out] */ - __RPC__deref_out void **ppvObject); - - ULONG ( STDMETHODCALLTYPE *AddRef )( - IAudioLoudness * This); - - ULONG ( STDMETHODCALLTYPE *Release )( - IAudioLoudness * This); - - /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *GetEnabled )( - IAudioLoudness * This, - /* [out] */ - __out BOOL *pbEnabled); - - /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *SetEnabled )( - IAudioLoudness * This, - /* [in] */ - __in BOOL bEnable, - /* [unique][in] */ - __in_opt LPCGUID pguidEventContext); - - END_INTERFACE - } IAudioLoudnessVtbl; - - interface IAudioLoudness - { - CONST_VTBL struct IAudioLoudnessVtbl *lpVtbl; - }; - - - -#ifdef COBJMACROS - - -#define IAudioLoudness_QueryInterface(This,riid,ppvObject) \ - ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) - -#define IAudioLoudness_AddRef(This) \ - ( (This)->lpVtbl -> AddRef(This) ) - -#define IAudioLoudness_Release(This) \ - ( (This)->lpVtbl -> Release(This) ) - - -#define IAudioLoudness_GetEnabled(This,pbEnabled) \ - ( (This)->lpVtbl -> GetEnabled(This,pbEnabled) ) - -#define IAudioLoudness_SetEnabled(This,bEnable,pguidEventContext) \ - ( (This)->lpVtbl -> SetEnabled(This,bEnable,pguidEventContext) ) - -#endif /* COBJMACROS */ - - -#endif /* C style interface */ - - - - -#endif /* __IAudioLoudness_INTERFACE_DEFINED__ */ - - -#ifndef __IAudioInputSelector_INTERFACE_DEFINED__ -#define __IAudioInputSelector_INTERFACE_DEFINED__ - -/* interface IAudioInputSelector */ -/* [unique][helpstring][nonextensible][uuid][local][object] */ - - -EXTERN_C const IID IID_IAudioInputSelector; - -#if defined(__cplusplus) && !defined(CINTERFACE) - - MIDL_INTERFACE("4F03DC02-5E6E-4653-8F72-A030C123D598") - IAudioInputSelector : public IUnknown - { - public: - virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE GetSelection( - /* [out] */ - __out UINT *pnIdSelected) = 0; - - virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE SetSelection( - /* [in] */ - __in UINT nIdSelect, - /* [unique][in] */ - __in_opt LPCGUID pguidEventContext) = 0; - - }; - -#else /* C style interface */ - - typedef struct IAudioInputSelectorVtbl - { - BEGIN_INTERFACE - - HRESULT ( STDMETHODCALLTYPE *QueryInterface )( - IAudioInputSelector * This, - /* [in] */ REFIID riid, - /* [iid_is][out] */ - __RPC__deref_out void **ppvObject); - - ULONG ( STDMETHODCALLTYPE *AddRef )( - IAudioInputSelector * This); - - ULONG ( STDMETHODCALLTYPE *Release )( - IAudioInputSelector * This); - - /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *GetSelection )( - IAudioInputSelector * This, - /* [out] */ - __out UINT *pnIdSelected); - - /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *SetSelection )( - IAudioInputSelector * This, - /* [in] */ - __in UINT nIdSelect, - /* [unique][in] */ - __in_opt LPCGUID pguidEventContext); - - END_INTERFACE - } IAudioInputSelectorVtbl; - - interface IAudioInputSelector - { - CONST_VTBL struct IAudioInputSelectorVtbl *lpVtbl; - }; - - - -#ifdef COBJMACROS - - -#define IAudioInputSelector_QueryInterface(This,riid,ppvObject) \ - ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) - -#define IAudioInputSelector_AddRef(This) \ - ( (This)->lpVtbl -> AddRef(This) ) - -#define IAudioInputSelector_Release(This) \ - ( (This)->lpVtbl -> Release(This) ) - - -#define IAudioInputSelector_GetSelection(This,pnIdSelected) \ - ( (This)->lpVtbl -> GetSelection(This,pnIdSelected) ) - -#define IAudioInputSelector_SetSelection(This,nIdSelect,pguidEventContext) \ - ( (This)->lpVtbl -> SetSelection(This,nIdSelect,pguidEventContext) ) - -#endif /* COBJMACROS */ - - -#endif /* C style interface */ - - - - -#endif /* __IAudioInputSelector_INTERFACE_DEFINED__ */ - - -#ifndef __IAudioOutputSelector_INTERFACE_DEFINED__ -#define __IAudioOutputSelector_INTERFACE_DEFINED__ - -/* interface IAudioOutputSelector */ -/* [unique][helpstring][nonextensible][uuid][local][object] */ - - -EXTERN_C const IID IID_IAudioOutputSelector; - -#if defined(__cplusplus) && !defined(CINTERFACE) - - MIDL_INTERFACE("BB515F69-94A7-429e-8B9C-271B3F11A3AB") - IAudioOutputSelector : public IUnknown - { - public: - virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE GetSelection( - /* [out] */ - __out UINT *pnIdSelected) = 0; - - virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE SetSelection( - /* [in] */ - __in UINT nIdSelect, - /* [unique][in] */ - __in_opt LPCGUID pguidEventContext) = 0; - - }; - -#else /* C style interface */ - - typedef struct IAudioOutputSelectorVtbl - { - BEGIN_INTERFACE - - HRESULT ( STDMETHODCALLTYPE *QueryInterface )( - IAudioOutputSelector * This, - /* [in] */ REFIID riid, - /* [iid_is][out] */ - __RPC__deref_out void **ppvObject); - - ULONG ( STDMETHODCALLTYPE *AddRef )( - IAudioOutputSelector * This); - - ULONG ( STDMETHODCALLTYPE *Release )( - IAudioOutputSelector * This); - - /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *GetSelection )( - IAudioOutputSelector * This, - /* [out] */ - __out UINT *pnIdSelected); - - /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *SetSelection )( - IAudioOutputSelector * This, - /* [in] */ - __in UINT nIdSelect, - /* [unique][in] */ - __in_opt LPCGUID pguidEventContext); - - END_INTERFACE - } IAudioOutputSelectorVtbl; - - interface IAudioOutputSelector - { - CONST_VTBL struct IAudioOutputSelectorVtbl *lpVtbl; - }; - - - -#ifdef COBJMACROS - - -#define IAudioOutputSelector_QueryInterface(This,riid,ppvObject) \ - ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) - -#define IAudioOutputSelector_AddRef(This) \ - ( (This)->lpVtbl -> AddRef(This) ) - -#define IAudioOutputSelector_Release(This) \ - ( (This)->lpVtbl -> Release(This) ) - - -#define IAudioOutputSelector_GetSelection(This,pnIdSelected) \ - ( (This)->lpVtbl -> GetSelection(This,pnIdSelected) ) - -#define IAudioOutputSelector_SetSelection(This,nIdSelect,pguidEventContext) \ - ( (This)->lpVtbl -> SetSelection(This,nIdSelect,pguidEventContext) ) - -#endif /* COBJMACROS */ - - -#endif /* C style interface */ - - - - -#endif /* __IAudioOutputSelector_INTERFACE_DEFINED__ */ - - -#ifndef __IAudioMute_INTERFACE_DEFINED__ -#define __IAudioMute_INTERFACE_DEFINED__ - -/* interface IAudioMute */ -/* [unique][helpstring][nonextensible][uuid][local][object] */ - - -EXTERN_C const IID IID_IAudioMute; - -#if defined(__cplusplus) && !defined(CINTERFACE) - - MIDL_INTERFACE("DF45AEEA-B74A-4B6B-AFAD-2366B6AA012E") - IAudioMute : public IUnknown - { - public: - virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE SetMute( - /* [in] */ - __in BOOL bMuted, - /* [unique][in] */ - __in_opt LPCGUID pguidEventContext) = 0; - - virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE GetMute( - /* [out] */ - __out BOOL *pbMuted) = 0; - - }; - -#else /* C style interface */ - - typedef struct IAudioMuteVtbl - { - BEGIN_INTERFACE - - HRESULT ( STDMETHODCALLTYPE *QueryInterface )( - IAudioMute * This, - /* [in] */ REFIID riid, - /* [iid_is][out] */ - __RPC__deref_out void **ppvObject); - - ULONG ( STDMETHODCALLTYPE *AddRef )( - IAudioMute * This); - - ULONG ( STDMETHODCALLTYPE *Release )( - IAudioMute * This); - - /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *SetMute )( - IAudioMute * This, - /* [in] */ - __in BOOL bMuted, - /* [unique][in] */ - __in_opt LPCGUID pguidEventContext); - - /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *GetMute )( - IAudioMute * This, - /* [out] */ - __out BOOL *pbMuted); - - END_INTERFACE - } IAudioMuteVtbl; - - interface IAudioMute - { - CONST_VTBL struct IAudioMuteVtbl *lpVtbl; - }; - - - -#ifdef COBJMACROS - - -#define IAudioMute_QueryInterface(This,riid,ppvObject) \ - ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) - -#define IAudioMute_AddRef(This) \ - ( (This)->lpVtbl -> AddRef(This) ) - -#define IAudioMute_Release(This) \ - ( (This)->lpVtbl -> Release(This) ) - - -#define IAudioMute_SetMute(This,bMuted,pguidEventContext) \ - ( (This)->lpVtbl -> SetMute(This,bMuted,pguidEventContext) ) - -#define IAudioMute_GetMute(This,pbMuted) \ - ( (This)->lpVtbl -> GetMute(This,pbMuted) ) - -#endif /* COBJMACROS */ - - -#endif /* C style interface */ - - - - -#endif /* __IAudioMute_INTERFACE_DEFINED__ */ - - -#ifndef __IAudioBass_INTERFACE_DEFINED__ -#define __IAudioBass_INTERFACE_DEFINED__ - -/* interface IAudioBass */ -/* [unique][helpstring][nonextensible][uuid][local][object] */ - - -EXTERN_C const IID IID_IAudioBass; - -#if defined(__cplusplus) && !defined(CINTERFACE) - - MIDL_INTERFACE("A2B1A1D9-4DB3-425D-A2B2-BD335CB3E2E5") - IAudioBass : public IPerChannelDbLevel - { - public: - }; - -#else /* C style interface */ - - typedef struct IAudioBassVtbl - { - BEGIN_INTERFACE - - HRESULT ( STDMETHODCALLTYPE *QueryInterface )( - IAudioBass * This, - /* [in] */ REFIID riid, - /* [iid_is][out] */ - __RPC__deref_out void **ppvObject); - - ULONG ( STDMETHODCALLTYPE *AddRef )( - IAudioBass * This); - - ULONG ( STDMETHODCALLTYPE *Release )( - IAudioBass * This); - - /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *GetChannelCount )( - IAudioBass * This, - /* [out] */ - __out UINT *pcChannels); - - /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *GetLevelRange )( - IAudioBass * This, - /* [in] */ - __in UINT nChannel, - /* [out] */ - __out float *pfMinLevelDB, - /* [out] */ - __out float *pfMaxLevelDB, - /* [out] */ - __out float *pfStepping); - - /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *GetLevel )( - IAudioBass * This, - /* [in] */ - __in UINT nChannel, - /* [out] */ - __out float *pfLevelDB); - - /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *SetLevel )( - IAudioBass * This, - /* [in] */ - __in UINT nChannel, - /* [in] */ - __in float fLevelDB, - /* [unique][in] */ - __in_opt LPCGUID pguidEventContext); - - /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *SetLevelUniform )( - IAudioBass * This, - /* [in] */ - __in float fLevelDB, - /* [unique][in] */ - __in_opt LPCGUID pguidEventContext); - - /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *SetLevelAllChannels )( - IAudioBass * This, - /* [size_is][in] */ - __in_ecount(cChannels) float aLevelsDB[ ], - /* [in] */ - __in ULONG cChannels, - /* [unique][in] */ - __in_opt LPCGUID pguidEventContext); - - END_INTERFACE - } IAudioBassVtbl; - - interface IAudioBass - { - CONST_VTBL struct IAudioBassVtbl *lpVtbl; - }; - - - -#ifdef COBJMACROS - - -#define IAudioBass_QueryInterface(This,riid,ppvObject) \ - ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) - -#define IAudioBass_AddRef(This) \ - ( (This)->lpVtbl -> AddRef(This) ) - -#define IAudioBass_Release(This) \ - ( (This)->lpVtbl -> Release(This) ) - - -#define IAudioBass_GetChannelCount(This,pcChannels) \ - ( (This)->lpVtbl -> GetChannelCount(This,pcChannels) ) - -#define IAudioBass_GetLevelRange(This,nChannel,pfMinLevelDB,pfMaxLevelDB,pfStepping) \ - ( (This)->lpVtbl -> GetLevelRange(This,nChannel,pfMinLevelDB,pfMaxLevelDB,pfStepping) ) - -#define IAudioBass_GetLevel(This,nChannel,pfLevelDB) \ - ( (This)->lpVtbl -> GetLevel(This,nChannel,pfLevelDB) ) - -#define IAudioBass_SetLevel(This,nChannel,fLevelDB,pguidEventContext) \ - ( (This)->lpVtbl -> SetLevel(This,nChannel,fLevelDB,pguidEventContext) ) - -#define IAudioBass_SetLevelUniform(This,fLevelDB,pguidEventContext) \ - ( (This)->lpVtbl -> SetLevelUniform(This,fLevelDB,pguidEventContext) ) - -#define IAudioBass_SetLevelAllChannels(This,aLevelsDB,cChannels,pguidEventContext) \ - ( (This)->lpVtbl -> SetLevelAllChannels(This,aLevelsDB,cChannels,pguidEventContext) ) - - -#endif /* COBJMACROS */ - - -#endif /* C style interface */ - - - - -#endif /* __IAudioBass_INTERFACE_DEFINED__ */ - - -#ifndef __IAudioMidrange_INTERFACE_DEFINED__ -#define __IAudioMidrange_INTERFACE_DEFINED__ - -/* interface IAudioMidrange */ -/* [unique][helpstring][nonextensible][uuid][local][object] */ - - -EXTERN_C const IID IID_IAudioMidrange; - -#if defined(__cplusplus) && !defined(CINTERFACE) - - MIDL_INTERFACE("5E54B6D7-B44B-40D9-9A9E-E691D9CE6EDF") - IAudioMidrange : public IPerChannelDbLevel - { - public: - }; - -#else /* C style interface */ - - typedef struct IAudioMidrangeVtbl - { - BEGIN_INTERFACE - - HRESULT ( STDMETHODCALLTYPE *QueryInterface )( - IAudioMidrange * This, - /* [in] */ REFIID riid, - /* [iid_is][out] */ - __RPC__deref_out void **ppvObject); - - ULONG ( STDMETHODCALLTYPE *AddRef )( - IAudioMidrange * This); - - ULONG ( STDMETHODCALLTYPE *Release )( - IAudioMidrange * This); - - /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *GetChannelCount )( - IAudioMidrange * This, - /* [out] */ - __out UINT *pcChannels); - - /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *GetLevelRange )( - IAudioMidrange * This, - /* [in] */ - __in UINT nChannel, - /* [out] */ - __out float *pfMinLevelDB, - /* [out] */ - __out float *pfMaxLevelDB, - /* [out] */ - __out float *pfStepping); - - /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *GetLevel )( - IAudioMidrange * This, - /* [in] */ - __in UINT nChannel, - /* [out] */ - __out float *pfLevelDB); - - /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *SetLevel )( - IAudioMidrange * This, - /* [in] */ - __in UINT nChannel, - /* [in] */ - __in float fLevelDB, - /* [unique][in] */ - __in_opt LPCGUID pguidEventContext); - - /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *SetLevelUniform )( - IAudioMidrange * This, - /* [in] */ - __in float fLevelDB, - /* [unique][in] */ - __in_opt LPCGUID pguidEventContext); - - /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *SetLevelAllChannels )( - IAudioMidrange * This, - /* [size_is][in] */ - __in_ecount(cChannels) float aLevelsDB[ ], - /* [in] */ - __in ULONG cChannels, - /* [unique][in] */ - __in_opt LPCGUID pguidEventContext); - - END_INTERFACE - } IAudioMidrangeVtbl; - - interface IAudioMidrange - { - CONST_VTBL struct IAudioMidrangeVtbl *lpVtbl; - }; - - - -#ifdef COBJMACROS - - -#define IAudioMidrange_QueryInterface(This,riid,ppvObject) \ - ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) - -#define IAudioMidrange_AddRef(This) \ - ( (This)->lpVtbl -> AddRef(This) ) - -#define IAudioMidrange_Release(This) \ - ( (This)->lpVtbl -> Release(This) ) - - -#define IAudioMidrange_GetChannelCount(This,pcChannels) \ - ( (This)->lpVtbl -> GetChannelCount(This,pcChannels) ) - -#define IAudioMidrange_GetLevelRange(This,nChannel,pfMinLevelDB,pfMaxLevelDB,pfStepping) \ - ( (This)->lpVtbl -> GetLevelRange(This,nChannel,pfMinLevelDB,pfMaxLevelDB,pfStepping) ) - -#define IAudioMidrange_GetLevel(This,nChannel,pfLevelDB) \ - ( (This)->lpVtbl -> GetLevel(This,nChannel,pfLevelDB) ) - -#define IAudioMidrange_SetLevel(This,nChannel,fLevelDB,pguidEventContext) \ - ( (This)->lpVtbl -> SetLevel(This,nChannel,fLevelDB,pguidEventContext) ) - -#define IAudioMidrange_SetLevelUniform(This,fLevelDB,pguidEventContext) \ - ( (This)->lpVtbl -> SetLevelUniform(This,fLevelDB,pguidEventContext) ) - -#define IAudioMidrange_SetLevelAllChannels(This,aLevelsDB,cChannels,pguidEventContext) \ - ( (This)->lpVtbl -> SetLevelAllChannels(This,aLevelsDB,cChannels,pguidEventContext) ) - - -#endif /* COBJMACROS */ - - -#endif /* C style interface */ - - - - -#endif /* __IAudioMidrange_INTERFACE_DEFINED__ */ - - -#ifndef __IAudioTreble_INTERFACE_DEFINED__ -#define __IAudioTreble_INTERFACE_DEFINED__ - -/* interface IAudioTreble */ -/* [unique][helpstring][nonextensible][uuid][local][object] */ - - -EXTERN_C const IID IID_IAudioTreble; - -#if defined(__cplusplus) && !defined(CINTERFACE) - - MIDL_INTERFACE("0A717812-694E-4907-B74B-BAFA5CFDCA7B") - IAudioTreble : public IPerChannelDbLevel - { - public: - }; - -#else /* C style interface */ - - typedef struct IAudioTrebleVtbl - { - BEGIN_INTERFACE - - HRESULT ( STDMETHODCALLTYPE *QueryInterface )( - IAudioTreble * This, - /* [in] */ REFIID riid, - /* [iid_is][out] */ - __RPC__deref_out void **ppvObject); - - ULONG ( STDMETHODCALLTYPE *AddRef )( - IAudioTreble * This); - - ULONG ( STDMETHODCALLTYPE *Release )( - IAudioTreble * This); - - /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *GetChannelCount )( - IAudioTreble * This, - /* [out] */ - __out UINT *pcChannels); - - /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *GetLevelRange )( - IAudioTreble * This, - /* [in] */ - __in UINT nChannel, - /* [out] */ - __out float *pfMinLevelDB, - /* [out] */ - __out float *pfMaxLevelDB, - /* [out] */ - __out float *pfStepping); - - /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *GetLevel )( - IAudioTreble * This, - /* [in] */ - __in UINT nChannel, - /* [out] */ - __out float *pfLevelDB); - - /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *SetLevel )( - IAudioTreble * This, - /* [in] */ - __in UINT nChannel, - /* [in] */ - __in float fLevelDB, - /* [unique][in] */ - __in_opt LPCGUID pguidEventContext); - - /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *SetLevelUniform )( - IAudioTreble * This, - /* [in] */ - __in float fLevelDB, - /* [unique][in] */ - __in_opt LPCGUID pguidEventContext); - - /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *SetLevelAllChannels )( - IAudioTreble * This, - /* [size_is][in] */ - __in_ecount(cChannels) float aLevelsDB[ ], - /* [in] */ - __in ULONG cChannels, - /* [unique][in] */ - __in_opt LPCGUID pguidEventContext); - - END_INTERFACE - } IAudioTrebleVtbl; - - interface IAudioTreble - { - CONST_VTBL struct IAudioTrebleVtbl *lpVtbl; - }; - - - -#ifdef COBJMACROS - - -#define IAudioTreble_QueryInterface(This,riid,ppvObject) \ - ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) - -#define IAudioTreble_AddRef(This) \ - ( (This)->lpVtbl -> AddRef(This) ) - -#define IAudioTreble_Release(This) \ - ( (This)->lpVtbl -> Release(This) ) - - -#define IAudioTreble_GetChannelCount(This,pcChannels) \ - ( (This)->lpVtbl -> GetChannelCount(This,pcChannels) ) - -#define IAudioTreble_GetLevelRange(This,nChannel,pfMinLevelDB,pfMaxLevelDB,pfStepping) \ - ( (This)->lpVtbl -> GetLevelRange(This,nChannel,pfMinLevelDB,pfMaxLevelDB,pfStepping) ) - -#define IAudioTreble_GetLevel(This,nChannel,pfLevelDB) \ - ( (This)->lpVtbl -> GetLevel(This,nChannel,pfLevelDB) ) - -#define IAudioTreble_SetLevel(This,nChannel,fLevelDB,pguidEventContext) \ - ( (This)->lpVtbl -> SetLevel(This,nChannel,fLevelDB,pguidEventContext) ) - -#define IAudioTreble_SetLevelUniform(This,fLevelDB,pguidEventContext) \ - ( (This)->lpVtbl -> SetLevelUniform(This,fLevelDB,pguidEventContext) ) - -#define IAudioTreble_SetLevelAllChannels(This,aLevelsDB,cChannels,pguidEventContext) \ - ( (This)->lpVtbl -> SetLevelAllChannels(This,aLevelsDB,cChannels,pguidEventContext) ) - - -#endif /* COBJMACROS */ - - -#endif /* C style interface */ - - - - -#endif /* __IAudioTreble_INTERFACE_DEFINED__ */ - - -#ifndef __IAudioAutoGainControl_INTERFACE_DEFINED__ -#define __IAudioAutoGainControl_INTERFACE_DEFINED__ - -/* interface IAudioAutoGainControl */ -/* [unique][helpstring][nonextensible][uuid][local][object] */ - - -EXTERN_C const IID IID_IAudioAutoGainControl; - -#if defined(__cplusplus) && !defined(CINTERFACE) - - MIDL_INTERFACE("85401FD4-6DE4-4b9d-9869-2D6753A82F3C") - IAudioAutoGainControl : public IUnknown - { - public: - virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE GetEnabled( - /* [out] */ - __out BOOL *pbEnabled) = 0; - - virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE SetEnabled( - /* [in] */ - __in BOOL bEnable, - /* [unique][in] */ - __in_opt LPCGUID pguidEventContext) = 0; - - }; - -#else /* C style interface */ - - typedef struct IAudioAutoGainControlVtbl - { - BEGIN_INTERFACE - - HRESULT ( STDMETHODCALLTYPE *QueryInterface )( - IAudioAutoGainControl * This, - /* [in] */ REFIID riid, - /* [iid_is][out] */ - __RPC__deref_out void **ppvObject); - - ULONG ( STDMETHODCALLTYPE *AddRef )( - IAudioAutoGainControl * This); - - ULONG ( STDMETHODCALLTYPE *Release )( - IAudioAutoGainControl * This); - - /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *GetEnabled )( - IAudioAutoGainControl * This, - /* [out] */ - __out BOOL *pbEnabled); - - /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *SetEnabled )( - IAudioAutoGainControl * This, - /* [in] */ - __in BOOL bEnable, - /* [unique][in] */ - __in_opt LPCGUID pguidEventContext); - - END_INTERFACE - } IAudioAutoGainControlVtbl; - - interface IAudioAutoGainControl - { - CONST_VTBL struct IAudioAutoGainControlVtbl *lpVtbl; - }; - - - -#ifdef COBJMACROS - - -#define IAudioAutoGainControl_QueryInterface(This,riid,ppvObject) \ - ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) - -#define IAudioAutoGainControl_AddRef(This) \ - ( (This)->lpVtbl -> AddRef(This) ) - -#define IAudioAutoGainControl_Release(This) \ - ( (This)->lpVtbl -> Release(This) ) - - -#define IAudioAutoGainControl_GetEnabled(This,pbEnabled) \ - ( (This)->lpVtbl -> GetEnabled(This,pbEnabled) ) - -#define IAudioAutoGainControl_SetEnabled(This,bEnable,pguidEventContext) \ - ( (This)->lpVtbl -> SetEnabled(This,bEnable,pguidEventContext) ) - -#endif /* COBJMACROS */ - - -#endif /* C style interface */ - - - - -#endif /* __IAudioAutoGainControl_INTERFACE_DEFINED__ */ - - -#ifndef __IAudioPeakMeter_INTERFACE_DEFINED__ -#define __IAudioPeakMeter_INTERFACE_DEFINED__ - -/* interface IAudioPeakMeter */ -/* [unique][helpstring][nonextensible][uuid][local][object] */ - - -EXTERN_C const IID IID_IAudioPeakMeter; - -#if defined(__cplusplus) && !defined(CINTERFACE) - - MIDL_INTERFACE("DD79923C-0599-45e0-B8B6-C8DF7DB6E796") - IAudioPeakMeter : public IUnknown - { - public: - virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE GetChannelCount( - /* [out] */ - __out UINT *pcChannels) = 0; - - virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE GetLevel( - /* [in] */ - __in UINT nChannel, - /* [out] */ - __out float *pfLevel) = 0; - - }; - -#else /* C style interface */ - - typedef struct IAudioPeakMeterVtbl - { - BEGIN_INTERFACE - - HRESULT ( STDMETHODCALLTYPE *QueryInterface )( - IAudioPeakMeter * This, - /* [in] */ REFIID riid, - /* [iid_is][out] */ - __RPC__deref_out void **ppvObject); - - ULONG ( STDMETHODCALLTYPE *AddRef )( - IAudioPeakMeter * This); - - ULONG ( STDMETHODCALLTYPE *Release )( - IAudioPeakMeter * This); - - /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *GetChannelCount )( - IAudioPeakMeter * This, - /* [out] */ - __out UINT *pcChannels); - - /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *GetLevel )( - IAudioPeakMeter * This, - /* [in] */ - __in UINT nChannel, - /* [out] */ - __out float *pfLevel); - - END_INTERFACE - } IAudioPeakMeterVtbl; - - interface IAudioPeakMeter - { - CONST_VTBL struct IAudioPeakMeterVtbl *lpVtbl; - }; - - - -#ifdef COBJMACROS - - -#define IAudioPeakMeter_QueryInterface(This,riid,ppvObject) \ - ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) - -#define IAudioPeakMeter_AddRef(This) \ - ( (This)->lpVtbl -> AddRef(This) ) - -#define IAudioPeakMeter_Release(This) \ - ( (This)->lpVtbl -> Release(This) ) - - -#define IAudioPeakMeter_GetChannelCount(This,pcChannels) \ - ( (This)->lpVtbl -> GetChannelCount(This,pcChannels) ) - -#define IAudioPeakMeter_GetLevel(This,nChannel,pfLevel) \ - ( (This)->lpVtbl -> GetLevel(This,nChannel,pfLevel) ) - -#endif /* COBJMACROS */ - - -#endif /* C style interface */ - - - - -#endif /* __IAudioPeakMeter_INTERFACE_DEFINED__ */ - - -#ifndef __IDeviceSpecificProperty_INTERFACE_DEFINED__ -#define __IDeviceSpecificProperty_INTERFACE_DEFINED__ - -/* interface IDeviceSpecificProperty */ -/* [unique][helpstring][nonextensible][uuid][local][object] */ - - -EXTERN_C const IID IID_IDeviceSpecificProperty; - -#if defined(__cplusplus) && !defined(CINTERFACE) - - MIDL_INTERFACE("3B22BCBF-2586-4af0-8583-205D391B807C") - IDeviceSpecificProperty : public IUnknown - { - public: - virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE GetType( - /* [out] */ - __deref_out VARTYPE *pVType) = 0; - - virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE GetValue( - /* [out] */ - __out void *pvValue, - /* [out][in] */ - __inout DWORD *pcbValue) = 0; - - virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE SetValue( - /* [in] */ - __in void *pvValue, - /* [in] */ DWORD cbValue, - /* [unique][in] */ - __in_opt LPCGUID pguidEventContext) = 0; - - virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE Get4BRange( - /* [out] */ - __deref_out LONG *plMin, - /* [out] */ - __deref_out LONG *plMax, - /* [out] */ - __deref_out LONG *plStepping) = 0; - - }; - -#else /* C style interface */ - - typedef struct IDeviceSpecificPropertyVtbl - { - BEGIN_INTERFACE - - HRESULT ( STDMETHODCALLTYPE *QueryInterface )( - IDeviceSpecificProperty * This, - /* [in] */ REFIID riid, - /* [iid_is][out] */ - __RPC__deref_out void **ppvObject); - - ULONG ( STDMETHODCALLTYPE *AddRef )( - IDeviceSpecificProperty * This); - - ULONG ( STDMETHODCALLTYPE *Release )( - IDeviceSpecificProperty * This); - - /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *GetType )( - IDeviceSpecificProperty * This, - /* [out] */ - __deref_out VARTYPE *pVType); - - /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *GetValue )( - IDeviceSpecificProperty * This, - /* [out] */ - __out void *pvValue, - /* [out][in] */ - __inout DWORD *pcbValue); - - /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *SetValue )( - IDeviceSpecificProperty * This, - /* [in] */ - __in void *pvValue, - /* [in] */ DWORD cbValue, - /* [unique][in] */ - __in_opt LPCGUID pguidEventContext); - - /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Get4BRange )( - IDeviceSpecificProperty * This, - /* [out] */ - __deref_out LONG *plMin, - /* [out] */ - __deref_out LONG *plMax, - /* [out] */ - __deref_out LONG *plStepping); - - END_INTERFACE - } IDeviceSpecificPropertyVtbl; - - interface IDeviceSpecificProperty - { - CONST_VTBL struct IDeviceSpecificPropertyVtbl *lpVtbl; - }; - - - -#ifdef COBJMACROS - - -#define IDeviceSpecificProperty_QueryInterface(This,riid,ppvObject) \ - ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) - -#define IDeviceSpecificProperty_AddRef(This) \ - ( (This)->lpVtbl -> AddRef(This) ) - -#define IDeviceSpecificProperty_Release(This) \ - ( (This)->lpVtbl -> Release(This) ) - - -#define IDeviceSpecificProperty_GetType(This,pVType) \ - ( (This)->lpVtbl -> GetType(This,pVType) ) - -#define IDeviceSpecificProperty_GetValue(This,pvValue,pcbValue) \ - ( (This)->lpVtbl -> GetValue(This,pvValue,pcbValue) ) - -#define IDeviceSpecificProperty_SetValue(This,pvValue,cbValue,pguidEventContext) \ - ( (This)->lpVtbl -> SetValue(This,pvValue,cbValue,pguidEventContext) ) - -#define IDeviceSpecificProperty_Get4BRange(This,plMin,plMax,plStepping) \ - ( (This)->lpVtbl -> Get4BRange(This,plMin,plMax,plStepping) ) - -#endif /* COBJMACROS */ - - -#endif /* C style interface */ - - - - -#endif /* __IDeviceSpecificProperty_INTERFACE_DEFINED__ */ - - -#ifndef __IKsFormatSupport_INTERFACE_DEFINED__ -#define __IKsFormatSupport_INTERFACE_DEFINED__ - -/* interface IKsFormatSupport */ -/* [unique][helpstring][nonextensible][uuid][local][object] */ - - -EXTERN_C const IID IID_IKsFormatSupport; - -#if defined(__cplusplus) && !defined(CINTERFACE) - - MIDL_INTERFACE("3CB4A69D-BB6F-4D2B-95B7-452D2C155DB5") - IKsFormatSupport : public IUnknown - { - public: - virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE IsFormatSupported( - /* [size_is][in] */ PKSDATAFORMAT pKsFormat, - /* [in] */ - __in DWORD cbFormat, - /* [out] */ - __out BOOL *pbSupported) = 0; - - virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE GetDevicePreferredFormat( - /* [out] */ PKSDATAFORMAT *ppKsFormat) = 0; - - }; - -#else /* C style interface */ - - typedef struct IKsFormatSupportVtbl - { - BEGIN_INTERFACE - - HRESULT ( STDMETHODCALLTYPE *QueryInterface )( - IKsFormatSupport * This, - /* [in] */ REFIID riid, - /* [iid_is][out] */ - __RPC__deref_out void **ppvObject); - - ULONG ( STDMETHODCALLTYPE *AddRef )( - IKsFormatSupport * This); - - ULONG ( STDMETHODCALLTYPE *Release )( - IKsFormatSupport * This); - - /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *IsFormatSupported )( - IKsFormatSupport * This, - /* [size_is][in] */ PKSDATAFORMAT pKsFormat, - /* [in] */ - __in DWORD cbFormat, - /* [out] */ - __out BOOL *pbSupported); - - /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *GetDevicePreferredFormat )( - IKsFormatSupport * This, - /* [out] */ PKSDATAFORMAT *ppKsFormat); - - END_INTERFACE - } IKsFormatSupportVtbl; - - interface IKsFormatSupport - { - CONST_VTBL struct IKsFormatSupportVtbl *lpVtbl; - }; - - - -#ifdef COBJMACROS - - -#define IKsFormatSupport_QueryInterface(This,riid,ppvObject) \ - ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) - -#define IKsFormatSupport_AddRef(This) \ - ( (This)->lpVtbl -> AddRef(This) ) - -#define IKsFormatSupport_Release(This) \ - ( (This)->lpVtbl -> Release(This) ) - - -#define IKsFormatSupport_IsFormatSupported(This,pKsFormat,cbFormat,pbSupported) \ - ( (This)->lpVtbl -> IsFormatSupported(This,pKsFormat,cbFormat,pbSupported) ) - -#define IKsFormatSupport_GetDevicePreferredFormat(This,ppKsFormat) \ - ( (This)->lpVtbl -> GetDevicePreferredFormat(This,ppKsFormat) ) - -#endif /* COBJMACROS */ - - -#endif /* C style interface */ - - - - -#endif /* __IKsFormatSupport_INTERFACE_DEFINED__ */ - - -#ifndef __IKsJackDescription_INTERFACE_DEFINED__ -#define __IKsJackDescription_INTERFACE_DEFINED__ - -/* interface IKsJackDescription */ -/* [unique][helpstring][nonextensible][uuid][local][object] */ - - -EXTERN_C const IID IID_IKsJackDescription; - -#if defined(__cplusplus) && !defined(CINTERFACE) - - MIDL_INTERFACE("4509F757-2D46-4637-8E62-CE7DB944F57B") - IKsJackDescription : public IUnknown - { - public: - virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE GetJackCount( - /* [out] */ - __out UINT *pcJacks) = 0; - - virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE GetJackDescription( - /* [in] */ UINT nJack, - /* [out] */ - __out KSJACK_DESCRIPTION *pDescription) = 0; - - }; - -#else /* C style interface */ - - typedef struct IKsJackDescriptionVtbl - { - BEGIN_INTERFACE - - HRESULT ( STDMETHODCALLTYPE *QueryInterface )( - IKsJackDescription * This, - /* [in] */ REFIID riid, - /* [iid_is][out] */ - __RPC__deref_out void **ppvObject); - - ULONG ( STDMETHODCALLTYPE *AddRef )( - IKsJackDescription * This); - - ULONG ( STDMETHODCALLTYPE *Release )( - IKsJackDescription * This); - - /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *GetJackCount )( - IKsJackDescription * This, - /* [out] */ - __out UINT *pcJacks); - - /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *GetJackDescription )( - IKsJackDescription * This, - /* [in] */ UINT nJack, - /* [out] */ - __out KSJACK_DESCRIPTION *pDescription); - - END_INTERFACE - } IKsJackDescriptionVtbl; - - interface IKsJackDescription - { - CONST_VTBL struct IKsJackDescriptionVtbl *lpVtbl; - }; - - - -#ifdef COBJMACROS - - -#define IKsJackDescription_QueryInterface(This,riid,ppvObject) \ - ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) - -#define IKsJackDescription_AddRef(This) \ - ( (This)->lpVtbl -> AddRef(This) ) - -#define IKsJackDescription_Release(This) \ - ( (This)->lpVtbl -> Release(This) ) - - -#define IKsJackDescription_GetJackCount(This,pcJacks) \ - ( (This)->lpVtbl -> GetJackCount(This,pcJacks) ) - -#define IKsJackDescription_GetJackDescription(This,nJack,pDescription) \ - ( (This)->lpVtbl -> GetJackDescription(This,nJack,pDescription) ) - -#endif /* COBJMACROS */ - - -#endif /* C style interface */ - - - - -#endif /* __IKsJackDescription_INTERFACE_DEFINED__ */ - - -#ifndef __IPartsList_INTERFACE_DEFINED__ -#define __IPartsList_INTERFACE_DEFINED__ - -/* interface IPartsList */ -/* [object][unique][helpstring][uuid][local] */ - - -EXTERN_C const IID IID_IPartsList; - -#if defined(__cplusplus) && !defined(CINTERFACE) - - MIDL_INTERFACE("6DAA848C-5EB0-45CC-AEA5-998A2CDA1FFB") - IPartsList : public IUnknown - { - public: - virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE GetCount( - /* [out] */ - __out UINT *pCount) = 0; - - virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE GetPart( - /* [in] */ - __in UINT nIndex, - /* [out] */ - __out IPart **ppPart) = 0; - - }; - -#else /* C style interface */ - - typedef struct IPartsListVtbl - { - BEGIN_INTERFACE - - HRESULT ( STDMETHODCALLTYPE *QueryInterface )( - IPartsList * This, - /* [in] */ REFIID riid, - /* [iid_is][out] */ - __RPC__deref_out void **ppvObject); - - ULONG ( STDMETHODCALLTYPE *AddRef )( - IPartsList * This); - - ULONG ( STDMETHODCALLTYPE *Release )( - IPartsList * This); - - /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *GetCount )( - IPartsList * This, - /* [out] */ - __out UINT *pCount); - - /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *GetPart )( - IPartsList * This, - /* [in] */ - __in UINT nIndex, - /* [out] */ - __out IPart **ppPart); - - END_INTERFACE - } IPartsListVtbl; - - interface IPartsList - { - CONST_VTBL struct IPartsListVtbl *lpVtbl; - }; - - - -#ifdef COBJMACROS - - -#define IPartsList_QueryInterface(This,riid,ppvObject) \ - ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) - -#define IPartsList_AddRef(This) \ - ( (This)->lpVtbl -> AddRef(This) ) - -#define IPartsList_Release(This) \ - ( (This)->lpVtbl -> Release(This) ) - - -#define IPartsList_GetCount(This,pCount) \ - ( (This)->lpVtbl -> GetCount(This,pCount) ) - -#define IPartsList_GetPart(This,nIndex,ppPart) \ - ( (This)->lpVtbl -> GetPart(This,nIndex,ppPart) ) - -#endif /* COBJMACROS */ - - -#endif /* C style interface */ - - - - -#endif /* __IPartsList_INTERFACE_DEFINED__ */ - - -#ifndef __IPart_INTERFACE_DEFINED__ -#define __IPart_INTERFACE_DEFINED__ - -/* interface IPart */ -/* [object][unique][helpstring][uuid][local] */ - - -EXTERN_C const IID IID_IPart; - -#if defined(__cplusplus) && !defined(CINTERFACE) - - MIDL_INTERFACE("AE2DE0E4-5BCA-4F2D-AA46-5D13F8FDB3A9") - IPart : public IUnknown - { - public: - virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE GetName( - /* [out] */ - __deref_out LPWSTR *ppwstrName) = 0; - - virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE GetLocalId( - /* [out] */ - __out UINT *pnId) = 0; - - virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE GetGlobalId( - /* [out] */ - __deref_out LPWSTR *ppwstrGlobalId) = 0; - - virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE GetPartType( - /* [out] */ - __out PartType *pPartType) = 0; - - virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE GetSubType( - /* [out] */ GUID *pSubType) = 0; - - virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE GetControlInterfaceCount( - /* [out] */ - __out UINT *pCount) = 0; - - virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE GetControlInterface( - /* [in] */ - __in UINT nIndex, - /* [out] */ - __out IControlInterface **ppInterfaceDesc) = 0; - - virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE EnumPartsIncoming( - /* [out] */ - __out IPartsList **ppParts) = 0; - - virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE EnumPartsOutgoing( - /* [out] */ - __out IPartsList **ppParts) = 0; - - virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE GetTopologyObject( - /* [out] */ - __out IDeviceTopology **ppTopology) = 0; - - virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE Activate( - /* [in] */ - __in DWORD dwClsContext, - /* [in] */ - __in REFIID refiid, - /* [iid_is][out] */ - __out_opt void **ppvObject) = 0; - - virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE RegisterControlChangeCallback( - /* [in] */ - __in REFGUID riid, - /* [in] */ - __in IControlChangeNotify *pNotify) = 0; - - virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE UnregisterControlChangeCallback( - /* [in] */ - __in IControlChangeNotify *pNotify) = 0; - - }; - -#else /* C style interface */ - - typedef struct IPartVtbl - { - BEGIN_INTERFACE - - HRESULT ( STDMETHODCALLTYPE *QueryInterface )( - IPart * This, - /* [in] */ REFIID riid, - /* [iid_is][out] */ - __RPC__deref_out void **ppvObject); - - ULONG ( STDMETHODCALLTYPE *AddRef )( - IPart * This); - - ULONG ( STDMETHODCALLTYPE *Release )( - IPart * This); - - /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *GetName )( - IPart * This, - /* [out] */ - __deref_out LPWSTR *ppwstrName); - - /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *GetLocalId )( - IPart * This, - /* [out] */ - __out UINT *pnId); - - /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *GetGlobalId )( - IPart * This, - /* [out] */ - __deref_out LPWSTR *ppwstrGlobalId); - - /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *GetPartType )( - IPart * This, - /* [out] */ - __out PartType *pPartType); - - /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *GetSubType )( - IPart * This, - /* [out] */ GUID *pSubType); - - /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *GetControlInterfaceCount )( - IPart * This, - /* [out] */ - __out UINT *pCount); - - /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *GetControlInterface )( - IPart * This, - /* [in] */ - __in UINT nIndex, - /* [out] */ - __out IControlInterface **ppInterfaceDesc); - - /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *EnumPartsIncoming )( - IPart * This, - /* [out] */ - __out IPartsList **ppParts); - - /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *EnumPartsOutgoing )( - IPart * This, - /* [out] */ - __out IPartsList **ppParts); - - /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *GetTopologyObject )( - IPart * This, - /* [out] */ - __out IDeviceTopology **ppTopology); - - /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Activate )( - IPart * This, - /* [in] */ - __in DWORD dwClsContext, - /* [in] */ - __in REFIID refiid, - /* [iid_is][out] */ - __out_opt void **ppvObject); - - /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *RegisterControlChangeCallback )( - IPart * This, - /* [in] */ - __in REFGUID riid, - /* [in] */ - __in IControlChangeNotify *pNotify); - - /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *UnregisterControlChangeCallback )( - IPart * This, - /* [in] */ - __in IControlChangeNotify *pNotify); - - END_INTERFACE - } IPartVtbl; - - interface IPart - { - CONST_VTBL struct IPartVtbl *lpVtbl; - }; - - - -#ifdef COBJMACROS - - -#define IPart_QueryInterface(This,riid,ppvObject) \ - ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) - -#define IPart_AddRef(This) \ - ( (This)->lpVtbl -> AddRef(This) ) - -#define IPart_Release(This) \ - ( (This)->lpVtbl -> Release(This) ) - - -#define IPart_GetName(This,ppwstrName) \ - ( (This)->lpVtbl -> GetName(This,ppwstrName) ) - -#define IPart_GetLocalId(This,pnId) \ - ( (This)->lpVtbl -> GetLocalId(This,pnId) ) - -#define IPart_GetGlobalId(This,ppwstrGlobalId) \ - ( (This)->lpVtbl -> GetGlobalId(This,ppwstrGlobalId) ) - -#define IPart_GetPartType(This,pPartType) \ - ( (This)->lpVtbl -> GetPartType(This,pPartType) ) - -#define IPart_GetSubType(This,pSubType) \ - ( (This)->lpVtbl -> GetSubType(This,pSubType) ) - -#define IPart_GetControlInterfaceCount(This,pCount) \ - ( (This)->lpVtbl -> GetControlInterfaceCount(This,pCount) ) - -#define IPart_GetControlInterface(This,nIndex,ppInterfaceDesc) \ - ( (This)->lpVtbl -> GetControlInterface(This,nIndex,ppInterfaceDesc) ) - -#define IPart_EnumPartsIncoming(This,ppParts) \ - ( (This)->lpVtbl -> EnumPartsIncoming(This,ppParts) ) - -#define IPart_EnumPartsOutgoing(This,ppParts) \ - ( (This)->lpVtbl -> EnumPartsOutgoing(This,ppParts) ) - -#define IPart_GetTopologyObject(This,ppTopology) \ - ( (This)->lpVtbl -> GetTopologyObject(This,ppTopology) ) - -#define IPart_Activate(This,dwClsContext,refiid,ppvObject) \ - ( (This)->lpVtbl -> Activate(This,dwClsContext,refiid,ppvObject) ) - -#define IPart_RegisterControlChangeCallback(This,riid,pNotify) \ - ( (This)->lpVtbl -> RegisterControlChangeCallback(This,riid,pNotify) ) - -#define IPart_UnregisterControlChangeCallback(This,pNotify) \ - ( (This)->lpVtbl -> UnregisterControlChangeCallback(This,pNotify) ) - -#endif /* COBJMACROS */ - - -#endif /* C style interface */ - - - - -#endif /* __IPart_INTERFACE_DEFINED__ */ - - -#ifndef __IConnector_INTERFACE_DEFINED__ -#define __IConnector_INTERFACE_DEFINED__ - -/* interface IConnector */ -/* [object][unique][helpstring][uuid][local] */ - - -EXTERN_C const IID IID_IConnector; - -#if defined(__cplusplus) && !defined(CINTERFACE) - - MIDL_INTERFACE("9c2c4058-23f5-41de-877a-df3af236a09e") - IConnector : public IUnknown - { - public: - virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE GetType( - /* [out] */ - __out ConnectorType *pType) = 0; - - virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE GetDataFlow( - /* [out] */ - __out DataFlow *pFlow) = 0; - - virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE ConnectTo( - /* [in] */ - __in IConnector *pConnectTo) = 0; - - virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE Disconnect( void) = 0; - - virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE IsConnected( - /* [out] */ - __out BOOL *pbConnected) = 0; - - virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE GetConnectedTo( - /* [out] */ - __out IConnector **ppConTo) = 0; - - virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE GetConnectorIdConnectedTo( - /* [out] */ - __deref_out LPWSTR *ppwstrConnectorId) = 0; - - virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE GetDeviceIdConnectedTo( - /* [out] */ - __deref_out LPWSTR *ppwstrDeviceId) = 0; - - }; - -#else /* C style interface */ - - typedef struct IConnectorVtbl - { - BEGIN_INTERFACE - - HRESULT ( STDMETHODCALLTYPE *QueryInterface )( - IConnector * This, - /* [in] */ REFIID riid, - /* [iid_is][out] */ - __RPC__deref_out void **ppvObject); - - ULONG ( STDMETHODCALLTYPE *AddRef )( - IConnector * This); - - ULONG ( STDMETHODCALLTYPE *Release )( - IConnector * This); - - /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *GetType )( - IConnector * This, - /* [out] */ - __out ConnectorType *pType); - - /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *GetDataFlow )( - IConnector * This, - /* [out] */ - __out DataFlow *pFlow); - - /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *ConnectTo )( - IConnector * This, - /* [in] */ - __in IConnector *pConnectTo); - - /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Disconnect )( - IConnector * This); - - /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *IsConnected )( - IConnector * This, - /* [out] */ - __out BOOL *pbConnected); - - /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *GetConnectedTo )( - IConnector * This, - /* [out] */ - __out IConnector **ppConTo); - - /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *GetConnectorIdConnectedTo )( - IConnector * This, - /* [out] */ - __deref_out LPWSTR *ppwstrConnectorId); - - /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *GetDeviceIdConnectedTo )( - IConnector * This, - /* [out] */ - __deref_out LPWSTR *ppwstrDeviceId); - - END_INTERFACE - } IConnectorVtbl; - - interface IConnector - { - CONST_VTBL struct IConnectorVtbl *lpVtbl; - }; - - - -#ifdef COBJMACROS - - -#define IConnector_QueryInterface(This,riid,ppvObject) \ - ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) - -#define IConnector_AddRef(This) \ - ( (This)->lpVtbl -> AddRef(This) ) - -#define IConnector_Release(This) \ - ( (This)->lpVtbl -> Release(This) ) - - -#define IConnector_GetType(This,pType) \ - ( (This)->lpVtbl -> GetType(This,pType) ) - -#define IConnector_GetDataFlow(This,pFlow) \ - ( (This)->lpVtbl -> GetDataFlow(This,pFlow) ) - -#define IConnector_ConnectTo(This,pConnectTo) \ - ( (This)->lpVtbl -> ConnectTo(This,pConnectTo) ) - -#define IConnector_Disconnect(This) \ - ( (This)->lpVtbl -> Disconnect(This) ) - -#define IConnector_IsConnected(This,pbConnected) \ - ( (This)->lpVtbl -> IsConnected(This,pbConnected) ) - -#define IConnector_GetConnectedTo(This,ppConTo) \ - ( (This)->lpVtbl -> GetConnectedTo(This,ppConTo) ) - -#define IConnector_GetConnectorIdConnectedTo(This,ppwstrConnectorId) \ - ( (This)->lpVtbl -> GetConnectorIdConnectedTo(This,ppwstrConnectorId) ) - -#define IConnector_GetDeviceIdConnectedTo(This,ppwstrDeviceId) \ - ( (This)->lpVtbl -> GetDeviceIdConnectedTo(This,ppwstrDeviceId) ) - -#endif /* COBJMACROS */ - - -#endif /* C style interface */ - - - - -#endif /* __IConnector_INTERFACE_DEFINED__ */ - - -#ifndef __ISubunit_INTERFACE_DEFINED__ -#define __ISubunit_INTERFACE_DEFINED__ - -/* interface ISubunit */ -/* [object][unique][helpstring][uuid][local] */ - - -EXTERN_C const IID IID_ISubunit; - -#if defined(__cplusplus) && !defined(CINTERFACE) - - MIDL_INTERFACE("82149A85-DBA6-4487-86BB-EA8F7FEFCC71") - ISubunit : public IUnknown - { - public: - }; - -#else /* C style interface */ - - typedef struct ISubunitVtbl - { - BEGIN_INTERFACE - - HRESULT ( STDMETHODCALLTYPE *QueryInterface )( - ISubunit * This, - /* [in] */ REFIID riid, - /* [iid_is][out] */ - __RPC__deref_out void **ppvObject); - - ULONG ( STDMETHODCALLTYPE *AddRef )( - ISubunit * This); - - ULONG ( STDMETHODCALLTYPE *Release )( - ISubunit * This); - - END_INTERFACE - } ISubunitVtbl; - - interface ISubunit - { - CONST_VTBL struct ISubunitVtbl *lpVtbl; - }; - - - -#ifdef COBJMACROS - - -#define ISubunit_QueryInterface(This,riid,ppvObject) \ - ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) - -#define ISubunit_AddRef(This) \ - ( (This)->lpVtbl -> AddRef(This) ) - -#define ISubunit_Release(This) \ - ( (This)->lpVtbl -> Release(This) ) - - -#endif /* COBJMACROS */ - - -#endif /* C style interface */ - - - - -#endif /* __ISubunit_INTERFACE_DEFINED__ */ - - -#ifndef __IControlInterface_INTERFACE_DEFINED__ -#define __IControlInterface_INTERFACE_DEFINED__ - -/* interface IControlInterface */ -/* [object][unique][helpstring][uuid][local] */ - - -EXTERN_C const IID IID_IControlInterface; - -#if defined(__cplusplus) && !defined(CINTERFACE) - - MIDL_INTERFACE("45d37c3f-5140-444a-ae24-400789f3cbf3") - IControlInterface : public IUnknown - { - public: - virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE GetName( - /* [out] */ - __deref_out LPWSTR *ppwstrName) = 0; - - virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE GetIID( - /* [out] */ - __out GUID *pIID) = 0; - - }; - -#else /* C style interface */ - - typedef struct IControlInterfaceVtbl - { - BEGIN_INTERFACE - - HRESULT ( STDMETHODCALLTYPE *QueryInterface )( - IControlInterface * This, - /* [in] */ REFIID riid, - /* [iid_is][out] */ - __RPC__deref_out void **ppvObject); - - ULONG ( STDMETHODCALLTYPE *AddRef )( - IControlInterface * This); - - ULONG ( STDMETHODCALLTYPE *Release )( - IControlInterface * This); - - /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *GetName )( - IControlInterface * This, - /* [out] */ - __deref_out LPWSTR *ppwstrName); - - /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *GetIID )( - IControlInterface * This, - /* [out] */ - __out GUID *pIID); - - END_INTERFACE - } IControlInterfaceVtbl; - - interface IControlInterface - { - CONST_VTBL struct IControlInterfaceVtbl *lpVtbl; - }; - - - -#ifdef COBJMACROS - - -#define IControlInterface_QueryInterface(This,riid,ppvObject) \ - ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) - -#define IControlInterface_AddRef(This) \ - ( (This)->lpVtbl -> AddRef(This) ) - -#define IControlInterface_Release(This) \ - ( (This)->lpVtbl -> Release(This) ) - - -#define IControlInterface_GetName(This,ppwstrName) \ - ( (This)->lpVtbl -> GetName(This,ppwstrName) ) - -#define IControlInterface_GetIID(This,pIID) \ - ( (This)->lpVtbl -> GetIID(This,pIID) ) - -#endif /* COBJMACROS */ - - -#endif /* C style interface */ - - - - -#endif /* __IControlInterface_INTERFACE_DEFINED__ */ - - -#ifndef __IControlChangeNotify_INTERFACE_DEFINED__ -#define __IControlChangeNotify_INTERFACE_DEFINED__ - -/* interface IControlChangeNotify */ -/* [unique][helpstring][nonextensible][uuid][local][object] */ - - -EXTERN_C const IID IID_IControlChangeNotify; - -#if defined(__cplusplus) && !defined(CINTERFACE) - - MIDL_INTERFACE("A09513ED-C709-4d21-BD7B-5F34C47F3947") - IControlChangeNotify : public IUnknown - { - public: - virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE OnNotify( - /* [in] */ - __in DWORD dwSenderProcessId, - /* [unique][in] */ - __in_opt LPCGUID pguidEventContext) = 0; - - }; - -#else /* C style interface */ - - typedef struct IControlChangeNotifyVtbl - { - BEGIN_INTERFACE - - HRESULT ( STDMETHODCALLTYPE *QueryInterface )( - IControlChangeNotify * This, - /* [in] */ REFIID riid, - /* [iid_is][out] */ - __RPC__deref_out void **ppvObject); - - ULONG ( STDMETHODCALLTYPE *AddRef )( - IControlChangeNotify * This); - - ULONG ( STDMETHODCALLTYPE *Release )( - IControlChangeNotify * This); - - /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *OnNotify )( - IControlChangeNotify * This, - /* [in] */ - __in DWORD dwSenderProcessId, - /* [unique][in] */ - __in_opt LPCGUID pguidEventContext); - - END_INTERFACE - } IControlChangeNotifyVtbl; - - interface IControlChangeNotify - { - CONST_VTBL struct IControlChangeNotifyVtbl *lpVtbl; - }; - - - -#ifdef COBJMACROS - - -#define IControlChangeNotify_QueryInterface(This,riid,ppvObject) \ - ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) - -#define IControlChangeNotify_AddRef(This) \ - ( (This)->lpVtbl -> AddRef(This) ) - -#define IControlChangeNotify_Release(This) \ - ( (This)->lpVtbl -> Release(This) ) - - -#define IControlChangeNotify_OnNotify(This,dwSenderProcessId,pguidEventContext) \ - ( (This)->lpVtbl -> OnNotify(This,dwSenderProcessId,pguidEventContext) ) - -#endif /* COBJMACROS */ - - -#endif /* C style interface */ - - - - -#endif /* __IControlChangeNotify_INTERFACE_DEFINED__ */ - - -#ifndef __IDeviceTopology_INTERFACE_DEFINED__ -#define __IDeviceTopology_INTERFACE_DEFINED__ - -/* interface IDeviceTopology */ -/* [unique][helpstring][nonextensible][uuid][local][object] */ - - -EXTERN_C const IID IID_IDeviceTopology; - -#if defined(__cplusplus) && !defined(CINTERFACE) - - MIDL_INTERFACE("2A07407E-6497-4A18-9787-32F79BD0D98F") - IDeviceTopology : public IUnknown - { - public: - virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE GetConnectorCount( - /* [out] */ - __out UINT *pCount) = 0; - - virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE GetConnector( - /* [in] */ - __in UINT nIndex, - /* [out] */ - __out IConnector **ppConnector) = 0; - - virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE GetSubunitCount( - /* [out] */ - __out UINT *pCount) = 0; - - virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE GetSubunit( - /* [in] */ - __in UINT nIndex, - /* [out] */ - __deref_out ISubunit **ppSubunit) = 0; - - virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE GetPartById( - /* [in] */ - __in UINT nId, - /* [out] */ - __deref_out IPart **ppPart) = 0; - - virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE GetDeviceId( - /* [out] */ - __deref_out LPWSTR *ppwstrDeviceId) = 0; - - virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE GetSignalPath( - /* [in] */ - __in IPart *pIPartFrom, - /* [in] */ - __in IPart *pIPartTo, - /* [in] */ - __in BOOL bRejectMixedPaths, - /* [out] */ - __deref_out IPartsList **ppParts) = 0; - - }; - -#else /* C style interface */ - - typedef struct IDeviceTopologyVtbl - { - BEGIN_INTERFACE - - HRESULT ( STDMETHODCALLTYPE *QueryInterface )( - IDeviceTopology * This, - /* [in] */ REFIID riid, - /* [iid_is][out] */ - __RPC__deref_out void **ppvObject); - - ULONG ( STDMETHODCALLTYPE *AddRef )( - IDeviceTopology * This); - - ULONG ( STDMETHODCALLTYPE *Release )( - IDeviceTopology * This); - - /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *GetConnectorCount )( - IDeviceTopology * This, - /* [out] */ - __out UINT *pCount); - - /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *GetConnector )( - IDeviceTopology * This, - /* [in] */ - __in UINT nIndex, - /* [out] */ - __out IConnector **ppConnector); - - /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *GetSubunitCount )( - IDeviceTopology * This, - /* [out] */ - __out UINT *pCount); - - /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *GetSubunit )( - IDeviceTopology * This, - /* [in] */ - __in UINT nIndex, - /* [out] */ - __deref_out ISubunit **ppSubunit); - - /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *GetPartById )( - IDeviceTopology * This, - /* [in] */ - __in UINT nId, - /* [out] */ - __deref_out IPart **ppPart); - - /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *GetDeviceId )( - IDeviceTopology * This, - /* [out] */ - __deref_out LPWSTR *ppwstrDeviceId); - - /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *GetSignalPath )( - IDeviceTopology * This, - /* [in] */ - __in IPart *pIPartFrom, - /* [in] */ - __in IPart *pIPartTo, - /* [in] */ - __in BOOL bRejectMixedPaths, - /* [out] */ - __deref_out IPartsList **ppParts); - - END_INTERFACE - } IDeviceTopologyVtbl; - - interface IDeviceTopology - { - CONST_VTBL struct IDeviceTopologyVtbl *lpVtbl; - }; - - - -#ifdef COBJMACROS - - -#define IDeviceTopology_QueryInterface(This,riid,ppvObject) \ - ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) - -#define IDeviceTopology_AddRef(This) \ - ( (This)->lpVtbl -> AddRef(This) ) - -#define IDeviceTopology_Release(This) \ - ( (This)->lpVtbl -> Release(This) ) - - -#define IDeviceTopology_GetConnectorCount(This,pCount) \ - ( (This)->lpVtbl -> GetConnectorCount(This,pCount) ) - -#define IDeviceTopology_GetConnector(This,nIndex,ppConnector) \ - ( (This)->lpVtbl -> GetConnector(This,nIndex,ppConnector) ) - -#define IDeviceTopology_GetSubunitCount(This,pCount) \ - ( (This)->lpVtbl -> GetSubunitCount(This,pCount) ) - -#define IDeviceTopology_GetSubunit(This,nIndex,ppSubunit) \ - ( (This)->lpVtbl -> GetSubunit(This,nIndex,ppSubunit) ) - -#define IDeviceTopology_GetPartById(This,nId,ppPart) \ - ( (This)->lpVtbl -> GetPartById(This,nId,ppPart) ) - -#define IDeviceTopology_GetDeviceId(This,ppwstrDeviceId) \ - ( (This)->lpVtbl -> GetDeviceId(This,ppwstrDeviceId) ) - -#define IDeviceTopology_GetSignalPath(This,pIPartFrom,pIPartTo,bRejectMixedPaths,ppParts) \ - ( (This)->lpVtbl -> GetSignalPath(This,pIPartFrom,pIPartTo,bRejectMixedPaths,ppParts) ) - -#endif /* COBJMACROS */ - - -#endif /* C style interface */ - - - - -#endif /* __IDeviceTopology_INTERFACE_DEFINED__ */ - - - -#ifndef __DevTopologyLib_LIBRARY_DEFINED__ -#define __DevTopologyLib_LIBRARY_DEFINED__ - -/* library DevTopologyLib */ -/* [helpstring][version][uuid] */ - - - - - - - - - - - - - - - - -EXTERN_C const IID LIBID_DevTopologyLib; - -EXTERN_C const CLSID CLSID_DeviceTopology; - -#ifdef __cplusplus - -class DECLSPEC_UUID("1DF639D0-5EC1-47AA-9379-828DC1AA8C59") -DeviceTopology; -#endif -#endif /* __DevTopologyLib_LIBRARY_DEFINED__ */ - -/* Additional Prototypes for ALL interfaces */ - -/* end of Additional Prototypes */ - -#ifdef __cplusplus -} -#endif - -#endif - - - diff --git a/portaudio/src/hostapi/wasapi/mingw-include/endpointvolume.h b/portaudio/src/hostapi/wasapi/mingw-include/endpointvolume.h deleted file mode 100644 index 81155d7..0000000 --- a/portaudio/src/hostapi/wasapi/mingw-include/endpointvolume.h +++ /dev/null @@ -1,620 +0,0 @@ - - -/* this ALWAYS GENERATED file contains the definitions for the interfaces */ - - - /* File created by MIDL compiler version 7.00.0499 */ -/* Compiler settings for endpointvolume.idl: - Oicf, W1, Zp8, env=Win32 (32b run) - protocol : dce , ms_ext, c_ext, robust - error checks: allocation ref bounds_check enum stub_data - VC __declspec() decoration level: - __declspec(uuid()), __declspec(selectany), __declspec(novtable) - DECLSPEC_UUID(), MIDL_INTERFACE() -*/ -//@@MIDL_FILE_HEADING( ) - -#pragma warning( disable: 4049 ) /* more than 64k source lines */ - - -/* verify that the <rpcndr.h> version is high enough to compile this file*/ -#ifndef __REQUIRED_RPCNDR_H_VERSION__ -#define __REQUIRED_RPCNDR_H_VERSION__ 500 -#endif - -/* verify that the <rpcsal.h> version is high enough to compile this file*/ -#ifndef __REQUIRED_RPCSAL_H_VERSION__ -#define __REQUIRED_RPCSAL_H_VERSION__ 100 -#endif - -#include "rpc.h" -#include "rpcndr.h" - -#ifndef __RPCNDR_H_VERSION__ -#error this stub requires an updated version of <rpcndr.h> -#endif // __RPCNDR_H_VERSION__ - -#ifndef COM_NO_WINDOWS_H -#include "windows.h" -#include "ole2.h" -#endif /*COM_NO_WINDOWS_H*/ - -#ifndef __endpointvolume_h__ -#define __endpointvolume_h__ - -#if defined(_MSC_VER) && (_MSC_VER >= 1020) -#pragma once -#endif - -/* Forward Declarations */ - -#ifndef __IAudioEndpointVolumeCallback_FWD_DEFINED__ -#define __IAudioEndpointVolumeCallback_FWD_DEFINED__ -typedef interface IAudioEndpointVolumeCallback IAudioEndpointVolumeCallback; -#endif /* __IAudioEndpointVolumeCallback_FWD_DEFINED__ */ - - -#ifndef __IAudioEndpointVolume_FWD_DEFINED__ -#define __IAudioEndpointVolume_FWD_DEFINED__ -typedef interface IAudioEndpointVolume IAudioEndpointVolume; -#endif /* __IAudioEndpointVolume_FWD_DEFINED__ */ - - -#ifndef __IAudioMeterInformation_FWD_DEFINED__ -#define __IAudioMeterInformation_FWD_DEFINED__ -typedef interface IAudioMeterInformation IAudioMeterInformation; -#endif /* __IAudioMeterInformation_FWD_DEFINED__ */ - - -/* header files for imported files */ -#include "unknwn.h" -#include "devicetopology.h" - -#ifdef __cplusplus -extern "C"{ -#endif - - -/* interface __MIDL_itf_endpointvolume_0000_0000 */ -/* [local] */ - -typedef struct AUDIO_VOLUME_NOTIFICATION_DATA - { - GUID guidEventContext; - BOOL bMuted; - float fMasterVolume; - UINT nChannels; - float afChannelVolumes[ 1 ]; - } AUDIO_VOLUME_NOTIFICATION_DATA; - -typedef struct AUDIO_VOLUME_NOTIFICATION_DATA *PAUDIO_VOLUME_NOTIFICATION_DATA; - -#define ENDPOINT_HARDWARE_SUPPORT_VOLUME 0x00000001 -#define ENDPOINT_HARDWARE_SUPPORT_MUTE 0x00000002 -#define ENDPOINT_HARDWARE_SUPPORT_METER 0x00000004 - - -extern RPC_IF_HANDLE __MIDL_itf_endpointvolume_0000_0000_v0_0_c_ifspec; -extern RPC_IF_HANDLE __MIDL_itf_endpointvolume_0000_0000_v0_0_s_ifspec; - -#ifndef __IAudioEndpointVolumeCallback_INTERFACE_DEFINED__ -#define __IAudioEndpointVolumeCallback_INTERFACE_DEFINED__ - -/* interface IAudioEndpointVolumeCallback */ -/* [unique][helpstring][nonextensible][uuid][local][object] */ - - -EXTERN_C const IID IID_IAudioEndpointVolumeCallback; - -#if defined(__cplusplus) && !defined(CINTERFACE) - - MIDL_INTERFACE("657804FA-D6AD-4496-8A60-352752AF4F89") - IAudioEndpointVolumeCallback : public IUnknown - { - public: - virtual HRESULT STDMETHODCALLTYPE OnNotify( - PAUDIO_VOLUME_NOTIFICATION_DATA pNotify) = 0; - - }; - -#else /* C style interface */ - - typedef struct IAudioEndpointVolumeCallbackVtbl - { - BEGIN_INTERFACE - - HRESULT ( STDMETHODCALLTYPE *QueryInterface )( - IAudioEndpointVolumeCallback * This, - /* [in] */ REFIID riid, - /* [iid_is][out] */ - __RPC__deref_out void **ppvObject); - - ULONG ( STDMETHODCALLTYPE *AddRef )( - IAudioEndpointVolumeCallback * This); - - ULONG ( STDMETHODCALLTYPE *Release )( - IAudioEndpointVolumeCallback * This); - - HRESULT ( STDMETHODCALLTYPE *OnNotify )( - IAudioEndpointVolumeCallback * This, - PAUDIO_VOLUME_NOTIFICATION_DATA pNotify); - - END_INTERFACE - } IAudioEndpointVolumeCallbackVtbl; - - interface IAudioEndpointVolumeCallback - { - CONST_VTBL struct IAudioEndpointVolumeCallbackVtbl *lpVtbl; - }; - - - -#ifdef COBJMACROS - - -#define IAudioEndpointVolumeCallback_QueryInterface(This,riid,ppvObject) \ - ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) - -#define IAudioEndpointVolumeCallback_AddRef(This) \ - ( (This)->lpVtbl -> AddRef(This) ) - -#define IAudioEndpointVolumeCallback_Release(This) \ - ( (This)->lpVtbl -> Release(This) ) - - -#define IAudioEndpointVolumeCallback_OnNotify(This,pNotify) \ - ( (This)->lpVtbl -> OnNotify(This,pNotify) ) - -#endif /* COBJMACROS */ - - -#endif /* C style interface */ - - - - -#endif /* __IAudioEndpointVolumeCallback_INTERFACE_DEFINED__ */ - - -#ifndef __IAudioEndpointVolume_INTERFACE_DEFINED__ -#define __IAudioEndpointVolume_INTERFACE_DEFINED__ - -/* interface IAudioEndpointVolume */ -/* [unique][helpstring][nonextensible][uuid][local][object] */ - - -EXTERN_C const IID IID_IAudioEndpointVolume; - -#if defined(__cplusplus) && !defined(CINTERFACE) - - MIDL_INTERFACE("5CDF2C82-841E-4546-9722-0CF74078229A") - IAudioEndpointVolume : public IUnknown - { - public: - virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE RegisterControlChangeNotify( - /* [in] */ - __in IAudioEndpointVolumeCallback *pNotify) = 0; - - virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE UnregisterControlChangeNotify( - /* [in] */ - __in IAudioEndpointVolumeCallback *pNotify) = 0; - - virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE GetChannelCount( - /* [out] */ - __out UINT *pnChannelCount) = 0; - - virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE SetMasterVolumeLevel( - /* [in] */ - __in float fLevelDB, - /* [unique][in] */ LPCGUID pguidEventContext) = 0; - - virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE SetMasterVolumeLevelScalar( - /* [in] */ - __in float fLevel, - /* [unique][in] */ LPCGUID pguidEventContext) = 0; - - virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE GetMasterVolumeLevel( - /* [out] */ - __out float *pfLevelDB) = 0; - - virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE GetMasterVolumeLevelScalar( - /* [out] */ - __out float *pfLevel) = 0; - - virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE SetChannelVolumeLevel( - /* [in] */ - __in UINT nChannel, - float fLevelDB, - /* [unique][in] */ LPCGUID pguidEventContext) = 0; - - virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE SetChannelVolumeLevelScalar( - /* [in] */ - __in UINT nChannel, - float fLevel, - /* [unique][in] */ LPCGUID pguidEventContext) = 0; - - virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE GetChannelVolumeLevel( - /* [in] */ - __in UINT nChannel, - /* [out] */ - __out float *pfLevelDB) = 0; - - virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE GetChannelVolumeLevelScalar( - /* [in] */ - __in UINT nChannel, - /* [out] */ - __out float *pfLevel) = 0; - - virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE SetMute( - /* [in] */ - __in BOOL bMute, - /* [unique][in] */ LPCGUID pguidEventContext) = 0; - - virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE GetMute( - /* [out] */ - __out BOOL *pbMute) = 0; - - virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE GetVolumeStepInfo( - /* [out] */ - __out UINT *pnStep, - /* [out] */ - __out UINT *pnStepCount) = 0; - - virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE VolumeStepUp( - /* [unique][in] */ LPCGUID pguidEventContext) = 0; - - virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE VolumeStepDown( - /* [unique][in] */ LPCGUID pguidEventContext) = 0; - - virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE QueryHardwareSupport( - /* [out] */ - __out DWORD *pdwHardwareSupportMask) = 0; - - virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE GetVolumeRange( - /* [out] */ - __out float *pflVolumeMindB, - /* [out] */ - __out float *pflVolumeMaxdB, - /* [out] */ - __out float *pflVolumeIncrementdB) = 0; - - }; - -#else /* C style interface */ - - typedef struct IAudioEndpointVolumeVtbl - { - BEGIN_INTERFACE - - HRESULT ( STDMETHODCALLTYPE *QueryInterface )( - IAudioEndpointVolume * This, - /* [in] */ REFIID riid, - /* [iid_is][out] */ - __RPC__deref_out void **ppvObject); - - ULONG ( STDMETHODCALLTYPE *AddRef )( - IAudioEndpointVolume * This); - - ULONG ( STDMETHODCALLTYPE *Release )( - IAudioEndpointVolume * This); - - /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *RegisterControlChangeNotify )( - IAudioEndpointVolume * This, - /* [in] */ - __in IAudioEndpointVolumeCallback *pNotify); - - /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *UnregisterControlChangeNotify )( - IAudioEndpointVolume * This, - /* [in] */ - __in IAudioEndpointVolumeCallback *pNotify); - - /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *GetChannelCount )( - IAudioEndpointVolume * This, - /* [out] */ - __out UINT *pnChannelCount); - - /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *SetMasterVolumeLevel )( - IAudioEndpointVolume * This, - /* [in] */ - __in float fLevelDB, - /* [unique][in] */ LPCGUID pguidEventContext); - - /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *SetMasterVolumeLevelScalar )( - IAudioEndpointVolume * This, - /* [in] */ - __in float fLevel, - /* [unique][in] */ LPCGUID pguidEventContext); - - /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *GetMasterVolumeLevel )( - IAudioEndpointVolume * This, - /* [out] */ - __out float *pfLevelDB); - - /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *GetMasterVolumeLevelScalar )( - IAudioEndpointVolume * This, - /* [out] */ - __out float *pfLevel); - - /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *SetChannelVolumeLevel )( - IAudioEndpointVolume * This, - /* [in] */ - __in UINT nChannel, - float fLevelDB, - /* [unique][in] */ LPCGUID pguidEventContext); - - /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *SetChannelVolumeLevelScalar )( - IAudioEndpointVolume * This, - /* [in] */ - __in UINT nChannel, - float fLevel, - /* [unique][in] */ LPCGUID pguidEventContext); - - /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *GetChannelVolumeLevel )( - IAudioEndpointVolume * This, - /* [in] */ - __in UINT nChannel, - /* [out] */ - __out float *pfLevelDB); - - /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *GetChannelVolumeLevelScalar )( - IAudioEndpointVolume * This, - /* [in] */ - __in UINT nChannel, - /* [out] */ - __out float *pfLevel); - - /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *SetMute )( - IAudioEndpointVolume * This, - /* [in] */ - __in BOOL bMute, - /* [unique][in] */ LPCGUID pguidEventContext); - - /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *GetMute )( - IAudioEndpointVolume * This, - /* [out] */ - __out BOOL *pbMute); - - /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *GetVolumeStepInfo )( - IAudioEndpointVolume * This, - /* [out] */ - __out UINT *pnStep, - /* [out] */ - __out UINT *pnStepCount); - - /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *VolumeStepUp )( - IAudioEndpointVolume * This, - /* [unique][in] */ LPCGUID pguidEventContext); - - /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *VolumeStepDown )( - IAudioEndpointVolume * This, - /* [unique][in] */ LPCGUID pguidEventContext); - - /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *QueryHardwareSupport )( - IAudioEndpointVolume * This, - /* [out] */ - __out DWORD *pdwHardwareSupportMask); - - /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *GetVolumeRange )( - IAudioEndpointVolume * This, - /* [out] */ - __out float *pflVolumeMindB, - /* [out] */ - __out float *pflVolumeMaxdB, - /* [out] */ - __out float *pflVolumeIncrementdB); - - END_INTERFACE - } IAudioEndpointVolumeVtbl; - - interface IAudioEndpointVolume - { - CONST_VTBL struct IAudioEndpointVolumeVtbl *lpVtbl; - }; - - - -#ifdef COBJMACROS - - -#define IAudioEndpointVolume_QueryInterface(This,riid,ppvObject) \ - ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) - -#define IAudioEndpointVolume_AddRef(This) \ - ( (This)->lpVtbl -> AddRef(This) ) - -#define IAudioEndpointVolume_Release(This) \ - ( (This)->lpVtbl -> Release(This) ) - - -#define IAudioEndpointVolume_RegisterControlChangeNotify(This,pNotify) \ - ( (This)->lpVtbl -> RegisterControlChangeNotify(This,pNotify) ) - -#define IAudioEndpointVolume_UnregisterControlChangeNotify(This,pNotify) \ - ( (This)->lpVtbl -> UnregisterControlChangeNotify(This,pNotify) ) - -#define IAudioEndpointVolume_GetChannelCount(This,pnChannelCount) \ - ( (This)->lpVtbl -> GetChannelCount(This,pnChannelCount) ) - -#define IAudioEndpointVolume_SetMasterVolumeLevel(This,fLevelDB,pguidEventContext) \ - ( (This)->lpVtbl -> SetMasterVolumeLevel(This,fLevelDB,pguidEventContext) ) - -#define IAudioEndpointVolume_SetMasterVolumeLevelScalar(This,fLevel,pguidEventContext) \ - ( (This)->lpVtbl -> SetMasterVolumeLevelScalar(This,fLevel,pguidEventContext) ) - -#define IAudioEndpointVolume_GetMasterVolumeLevel(This,pfLevelDB) \ - ( (This)->lpVtbl -> GetMasterVolumeLevel(This,pfLevelDB) ) - -#define IAudioEndpointVolume_GetMasterVolumeLevelScalar(This,pfLevel) \ - ( (This)->lpVtbl -> GetMasterVolumeLevelScalar(This,pfLevel) ) - -#define IAudioEndpointVolume_SetChannelVolumeLevel(This,nChannel,fLevelDB,pguidEventContext) \ - ( (This)->lpVtbl -> SetChannelVolumeLevel(This,nChannel,fLevelDB,pguidEventContext) ) - -#define IAudioEndpointVolume_SetChannelVolumeLevelScalar(This,nChannel,fLevel,pguidEventContext) \ - ( (This)->lpVtbl -> SetChannelVolumeLevelScalar(This,nChannel,fLevel,pguidEventContext) ) - -#define IAudioEndpointVolume_GetChannelVolumeLevel(This,nChannel,pfLevelDB) \ - ( (This)->lpVtbl -> GetChannelVolumeLevel(This,nChannel,pfLevelDB) ) - -#define IAudioEndpointVolume_GetChannelVolumeLevelScalar(This,nChannel,pfLevel) \ - ( (This)->lpVtbl -> GetChannelVolumeLevelScalar(This,nChannel,pfLevel) ) - -#define IAudioEndpointVolume_SetMute(This,bMute,pguidEventContext) \ - ( (This)->lpVtbl -> SetMute(This,bMute,pguidEventContext) ) - -#define IAudioEndpointVolume_GetMute(This,pbMute) \ - ( (This)->lpVtbl -> GetMute(This,pbMute) ) - -#define IAudioEndpointVolume_GetVolumeStepInfo(This,pnStep,pnStepCount) \ - ( (This)->lpVtbl -> GetVolumeStepInfo(This,pnStep,pnStepCount) ) - -#define IAudioEndpointVolume_VolumeStepUp(This,pguidEventContext) \ - ( (This)->lpVtbl -> VolumeStepUp(This,pguidEventContext) ) - -#define IAudioEndpointVolume_VolumeStepDown(This,pguidEventContext) \ - ( (This)->lpVtbl -> VolumeStepDown(This,pguidEventContext) ) - -#define IAudioEndpointVolume_QueryHardwareSupport(This,pdwHardwareSupportMask) \ - ( (This)->lpVtbl -> QueryHardwareSupport(This,pdwHardwareSupportMask) ) - -#define IAudioEndpointVolume_GetVolumeRange(This,pflVolumeMindB,pflVolumeMaxdB,pflVolumeIncrementdB) \ - ( (This)->lpVtbl -> GetVolumeRange(This,pflVolumeMindB,pflVolumeMaxdB,pflVolumeIncrementdB) ) - -#endif /* COBJMACROS */ - - -#endif /* C style interface */ - - - - -#endif /* __IAudioEndpointVolume_INTERFACE_DEFINED__ */ - - -#ifndef __IAudioMeterInformation_INTERFACE_DEFINED__ -#define __IAudioMeterInformation_INTERFACE_DEFINED__ - -/* interface IAudioMeterInformation */ -/* [unique][helpstring][nonextensible][uuid][local][object] */ - - -EXTERN_C const IID IID_IAudioMeterInformation; - -#if defined(__cplusplus) && !defined(CINTERFACE) - - MIDL_INTERFACE("C02216F6-8C67-4B5B-9D00-D008E73E0064") - IAudioMeterInformation : public IUnknown - { - public: - virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE GetPeakValue( - /* [out] */ float *pfPeak) = 0; - - virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE GetMeteringChannelCount( - /* [out] */ - __out UINT *pnChannelCount) = 0; - - virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE GetChannelsPeakValues( - /* [in] */ UINT32 u32ChannelCount, - /* [size_is][out] */ float *afPeakValues) = 0; - - virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE QueryHardwareSupport( - /* [out] */ - __out DWORD *pdwHardwareSupportMask) = 0; - - }; - -#else /* C style interface */ - - typedef struct IAudioMeterInformationVtbl - { - BEGIN_INTERFACE - - HRESULT ( STDMETHODCALLTYPE *QueryInterface )( - IAudioMeterInformation * This, - /* [in] */ REFIID riid, - /* [iid_is][out] */ - __RPC__deref_out void **ppvObject); - - ULONG ( STDMETHODCALLTYPE *AddRef )( - IAudioMeterInformation * This); - - ULONG ( STDMETHODCALLTYPE *Release )( - IAudioMeterInformation * This); - - /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *GetPeakValue )( - IAudioMeterInformation * This, - /* [out] */ float *pfPeak); - - /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *GetMeteringChannelCount )( - IAudioMeterInformation * This, - /* [out] */ - __out UINT *pnChannelCount); - - /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *GetChannelsPeakValues )( - IAudioMeterInformation * This, - /* [in] */ UINT32 u32ChannelCount, - /* [size_is][out] */ float *afPeakValues); - - /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *QueryHardwareSupport )( - IAudioMeterInformation * This, - /* [out] */ - __out DWORD *pdwHardwareSupportMask); - - END_INTERFACE - } IAudioMeterInformationVtbl; - - interface IAudioMeterInformation - { - CONST_VTBL struct IAudioMeterInformationVtbl *lpVtbl; - }; - - - -#ifdef COBJMACROS - - -#define IAudioMeterInformation_QueryInterface(This,riid,ppvObject) \ - ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) - -#define IAudioMeterInformation_AddRef(This) \ - ( (This)->lpVtbl -> AddRef(This) ) - -#define IAudioMeterInformation_Release(This) \ - ( (This)->lpVtbl -> Release(This) ) - - -#define IAudioMeterInformation_GetPeakValue(This,pfPeak) \ - ( (This)->lpVtbl -> GetPeakValue(This,pfPeak) ) - -#define IAudioMeterInformation_GetMeteringChannelCount(This,pnChannelCount) \ - ( (This)->lpVtbl -> GetMeteringChannelCount(This,pnChannelCount) ) - -#define IAudioMeterInformation_GetChannelsPeakValues(This,u32ChannelCount,afPeakValues) \ - ( (This)->lpVtbl -> GetChannelsPeakValues(This,u32ChannelCount,afPeakValues) ) - -#define IAudioMeterInformation_QueryHardwareSupport(This,pdwHardwareSupportMask) \ - ( (This)->lpVtbl -> QueryHardwareSupport(This,pdwHardwareSupportMask) ) - -#endif /* COBJMACROS */ - - -#endif /* C style interface */ - - - - -#endif /* __IAudioMeterInformation_INTERFACE_DEFINED__ */ - - -/* Additional Prototypes for ALL interfaces */ - -/* end of Additional Prototypes */ - -#ifdef __cplusplus -} -#endif - -#endif - - - diff --git a/portaudio/src/hostapi/wasapi/mingw-include/functiondiscoverykeys.h b/portaudio/src/hostapi/wasapi/mingw-include/functiondiscoverykeys.h deleted file mode 100644 index 7e07292..0000000 --- a/portaudio/src/hostapi/wasapi/mingw-include/functiondiscoverykeys.h +++ /dev/null @@ -1,255 +0,0 @@ -#pragma once - -#if __GNUC__ >=3 -#pragma GCC system_header -#endif - -#ifndef DEFINE_API_PKEY -#include <propkey.h> -#endif - -#include <FunctionDiscoveryKeys_devpkey.h> - -// FMTID_FD = {904b03a2-471d-423c-a584-f3483238a146} -DEFINE_GUID(FMTID_FD, 0x904b03a2, 0x471d, 0x423c, 0xa5, 0x84, 0xf3, 0x48, 0x32, 0x38, 0xa1, 0x46); -DEFINE_API_PKEY(PKEY_FD_Visibility, VisibilityFlags, 0x904b03a2, 0x471d, 0x423c, 0xa5, 0x84, 0xf3, 0x48, 0x32, 0x38, 0xa1, 0x46, 0x00000001); // VT_UINT -#define FD_Visibility_Default 0 -#define FD_Visibility_Hidden 1 - -// FMTID_Device = {78C34FC8-104A-4aca-9EA4-524D52996E57} -DEFINE_GUID(FMTID_Device, 0x78c34fc8, 0x104a, 0x4aca, 0x9e, 0xa4, 0x52, 0x4d, 0x52, 0x99, 0x6e, 0x57); - -DEFINE_API_PKEY(PKEY_Device_NotPresent, DeviceNotPresent , 0x904b03a2, 0x471d, 0x423c, 0xa5, 0x84, 0xf3, 0x48, 0x32, 0x38, 0xa1, 0x46, 0x00000002); // VT_UINT -DEFINE_API_PKEY(PKEY_Device_QueueSize, DeviceQueueSize , 0x78c34fc8, 0x104a, 0x4aca, 0x9e, 0xa4, 0x52, 0x4d, 0x52, 0x99, 0x6e, 0x57, 0x00000024); // VT_UI4 -DEFINE_API_PKEY(PKEY_Device_Status, DeviceStatus , 0x78c34fc8, 0x104a, 0x4aca, 0x9e, 0xa4, 0x52, 0x4d, 0x52, 0x99, 0x6e, 0x57, 0x00000025); // VT_LPWSTR -DEFINE_API_PKEY(PKEY_Device_Comment, DeviceComment , 0x78c34fc8, 0x104a, 0x4aca, 0x9e, 0xa4, 0x52, 0x4d, 0x52, 0x99, 0x6e, 0x57, 0x00000026); // VT_LPWSTR -DEFINE_API_PKEY(PKEY_Device_Model, DeviceModel , 0x78c34fc8, 0x104a, 0x4aca, 0x9e, 0xa4, 0x52, 0x4d, 0x52, 0x99, 0x6e, 0x57, 0x00000027); // VT_LPWSTR - -// Name: System.Device.BIOSVersion -- PKEY_Device_BIOSVersion -// Type: String -- VT_LPWSTR (For variants: VT_BSTR) Legacy code may treat this as VT_BSTR. -// FormatID: EAEE7F1D-6A33-44D1-9441-5F46DEF23198, 9 -DEFINE_PROPERTYKEY(PKEY_Device_BIOSVersion, 0xEAEE7F1D, 0x6A33, 0x44D1, 0x94, 0x41, 0x5F, 0x46, 0xDE, 0xF2, 0x31, 0x98, 9); - -DEFINE_API_PKEY(PKEY_Write_Time, WriteTime , 0xf53b7e1c, 0x77e0, 0x4450, 0x8c, 0x5f, 0xa7, 0x6c, 0xc7, 0xfd, 0xe0, 0x58, 0x00000100); // VT_FILETIME - -#ifdef FD_XP -DEFINE_API_PKEY(PKEY_Device_InstanceId, DeviceInstanceId , 0x78c34fc8, 0x104a, 0x4aca, 0x9e, 0xa4, 0x52, 0x4d, 0x52, 0x99, 0x6e, 0x57, 0x00000100); // VT_LPWSTR -#endif -DEFINE_API_PKEY(PKEY_Device_Interface, DeviceInterface , 0x78c34fc8, 0x104a, 0x4aca, 0x9e, 0xa4, 0x52, 0x4d, 0x52, 0x99, 0x6e, 0x57, 0x00000101); // VT_CLSID - -DEFINE_API_PKEY(PKEY_ExposedIIDs, ExposedIIDs , 0x78c34fc8, 0x104a, 0x4aca, 0x9e, 0xa4, 0x52, 0x4d, 0x52, 0x99, 0x6e, 0x57, 0x00003002); // VT_VECTOR | VT_CLSID -DEFINE_API_PKEY(PKEY_ExposedCLSIDs, ExposedCLSIDs , 0x78c34fc8, 0x104a, 0x4aca, 0x9e, 0xa4, 0x52, 0x4d, 0x52, 0x99, 0x6e, 0x57, 0x00003003); // VT_VECTOR | VT_CLSID -DEFINE_API_PKEY(PKEY_InstanceValidatorClsid,InstanceValidator , 0x78c34fc8, 0x104a, 0x4aca, 0x9e, 0xa4, 0x52, 0x4d, 0x52, 0x99, 0x6e, 0x57, 0x00003004); // VT_CLSID - -// FMTID_WSD = {92506491-FF95-4724-A05A-5B81885A7C92} -DEFINE_GUID(FMTID_WSD, 0x92506491, 0xFF95, 0x4724, 0xA0, 0x5A, 0x5B, 0x81, 0x88, 0x5A, 0x7C, 0x92); - -DEFINE_API_PKEY(PKEY_WSD_AddressURI, WSD_AddressURI, 0x92506491, 0xFF95, 0x4724, 0xA0, 0x5A, 0x5B, 0x81, 0x88, 0x5A, 0x7C, 0x92, 0x00001000); // VT_LPWSTR -DEFINE_API_PKEY(PKEY_WSD_Types, WSD_Types, 0x92506491, 0xFF95, 0x4724, 0xA0, 0x5A, 0x5B, 0x81, 0x88, 0x5A, 0x7C, 0x92, 0x00001001); // VT_LPWSTR -DEFINE_API_PKEY(PKEY_WSD_Scopes, WSD_Scopes, 0x92506491, 0xFF95, 0x4724, 0xA0, 0x5A, 0x5B, 0x81, 0x88, 0x5A, 0x7C, 0x92, 0x00001002); // VT_LPWSTR -DEFINE_API_PKEY(PKEY_WSD_MetadataVersion, WSD_MetadataVersion, 0x92506491, 0xFF95, 0x4724, 0xA0, 0x5A, 0x5B, 0x81, 0x88, 0x5A, 0x7C, 0x92, 0x00001003); //VT_UI8 -DEFINE_API_PKEY(PKEY_WSD_AppSeqInstanceID, WSD_AppSeqInstanceID, 0x92506491, 0xFF95, 0x4724, 0xA0, 0x5A, 0x5B, 0x81, 0x88, 0x5A, 0x7C, 0x92, 0x00001004); // VT_UI8 -DEFINE_API_PKEY(PKEY_WSD_AppSeqSessionID, WSD_AppSeqSessionID, 0x92506491, 0xFF95, 0x4724, 0xA0, 0x5A, 0x5B, 0x81, 0x88, 0x5A, 0x7C, 0x92, 0x00001005); // VT_LPWSTR -DEFINE_API_PKEY(PKEY_WSD_AppSeqMessageNumber, WSD_AppSeqMessageNumber, 0x92506491, 0xFF95, 0x4724, 0xA0, 0x5A, 0x5B, 0x81, 0x88, 0x5A, 0x7C, 0x92, 0x00001006); // VT_UI8 -DEFINE_API_PKEY(PKEY_WSD_XAddrs, WSD_XAddrs, 0x92506491, 0xFF95, 0x4724, 0xA0, 0x5A, 0x5B, 0x81, 0x88, 0x5A, 0x7C, 0x92, 0x00002000); // VT_LPWSTR or VT_VECTOR | VT_LPWSTR - -DEFINE_API_PKEY(PKEY_WSD_MetadataClean, WSD_MetadataClean, 0x92506491, 0xFF95, 0x4724, 0xA0, 0x5A, 0x5B, 0x81, 0x88, 0x5A, 0x7C, 0x92, 0x00000001); // VT_BOOL -DEFINE_API_PKEY(PKEY_WSD_ServiceInfo, WSD_ServiceInfo, 0x92506491, 0xFF95, 0x4724, 0xA0, 0x5A, 0x5B, 0x81, 0x88, 0x5A, 0x7C, 0x92, 0x00000002); // VT_VECTOR|VT_VARIANT (variants are VT_UNKNOWN) - -DEFINE_API_PKEY(PKEY_PUBSVCS_TYPE, PUBSVCS_TYPE, 0xF1B88AD3, 0x109C, 0x4FD2, 0xBA, 0x3F, 0x53, 0x5A, 0x76, 0x5F, 0x82, 0xF4, 0x00005001); // VT_LPWSTR -DEFINE_API_PKEY(PKEY_PUBSVCS_SCOPE, PUBSVCS_SCOPE, 0x2AE2B567, 0xEECB, 0x4A3E, 0xB7, 0x53, 0x54, 0xC7, 0x25, 0x49, 0x43, 0x66, 0x00005002); // VT_LPWSTR | VT_VECTOR -DEFINE_API_PKEY(PKEY_PUBSVCS_METADATA, PUBSVCS_METADATA, 0x63C6D5B8, 0xF73A, 0x4ACA, 0x96, 0x7E, 0x0C, 0xC7, 0x87, 0xE0, 0xB5, 0x59, 0x00005003); // VT_LPWSTR -DEFINE_API_PKEY(PKEY_PUBSVCS_METADATA_VERSION, PUBSVCS_METADATA_VERSION, 0xC0C96C15, 0x1823, 0x4E5B, 0x93, 0x48, 0xE8, 0x25, 0x19, 0x92, 0x3F, 0x04, 0x00005004); // VT_UI8 -DEFINE_API_PKEY(PKEY_PUBSVCS_NETWORK_PROFILES_ALLOWED, PUBSVCS_NETWORK_PROFILES_ALLOWED, 0x63C6D5B8, 0xF73A, 0x4ACA, 0x96, 0x7E, 0x0C, 0xC7, 0x87, 0xE0, 0xB5, 0x59, 0x00005005); // VT_VECTOR | VT_LPWSTR -DEFINE_API_PKEY(PKEY_PUBSVCS_NETWORK_PROFILES_DENIED, PUBSVCS_NETWORK_PROFILES_DENIED, 0x63C6D5B8, 0xF73A, 0x4ACA, 0x96, 0x7E, 0x0C, 0xC7, 0x87, 0xE0, 0xB5, 0x59, 0x00005006); // VT_VECTOR | VT_LPWSTR -DEFINE_API_PKEY(PKEY_PUBSVCS_NETWORK_PROFILES_DEFAULT, PUBSVCS_NETWORK_PROFILES_DEFAULT, 0x63C6D5B8, 0xF73A, 0x4ACA, 0x96, 0x7E, 0x0C, 0xC7, 0x87, 0xE0, 0xB5, 0x59, 0x00005007); // VT_BOOL - -// FMTID_PNPX = {656A3BB3-ECC0-43FD-8477-4AE0404A96CD} -DEFINE_GUID(FMTID_PNPX, 0x656A3BB3, 0xECC0, 0x43FD, 0x84, 0x77, 0x4A, 0xE0, 0x40, 0x4A, 0x96, 0xCD); - // from Discovery messages -DEFINE_PROPERTYKEY(PKEY_PNPX_GlobalIdentity, 0x656A3BB3, 0xECC0, 0x43FD, 0x84, 0x77, 0x4A, 0xE0, 0x40, 0x4A, 0x96, 0xCD, 0x00001000); // VT_LPWSTR -DEFINE_PROPERTYKEY(PKEY_PNPX_Types, 0x656A3BB3, 0xECC0, 0x43FD, 0x84, 0x77, 0x4A, 0xE0, 0x40, 0x4A, 0x96, 0xCD, 0x00001001); // VT_LPWSTR | VT_VECTOR -DEFINE_PROPERTYKEY(PKEY_PNPX_Scopes, 0x656A3BB3, 0xECC0, 0x43FD, 0x84, 0x77, 0x4A, 0xE0, 0x40, 0x4A, 0x96, 0xCD, 0x00001002); // VT_LPWSTR | VT_VECTOR -DEFINE_PROPERTYKEY(PKEY_PNPX_XAddrs, 0x656A3BB3, 0xECC0, 0x43FD, 0x84, 0x77, 0x4A, 0xE0, 0x40, 0x4A, 0x96, 0xCD, 0x00001003); // VT_LPWSTR | VT_VECTOR -DEFINE_PROPERTYKEY(PKEY_PNPX_MetadataVersion, 0x656A3BB3, 0xECC0, 0x43FD, 0x84, 0x77, 0x4A, 0xE0, 0x40, 0x4A, 0x96, 0xCD, 0x00001004); // VT_UI8 -DEFINE_PROPERTYKEY(PKEY_PNPX_ID, 0x656A3BB3, 0xECC0, 0x43FD, 0x84, 0x77, 0x4A, 0xE0, 0x40, 0x4A, 0x96, 0xCD, 0x00001005); // VT_LPWSTR -DEFINE_PROPERTYKEY(PKEY_PNPX_RootProxy, 0x656A3BB3, 0xECC0, 0x43FD, 0x84, 0x77, 0x4A, 0xE0, 0x40, 0x4A, 0x96, 0xCD, 0x00001006); // VT_BOOL - - // for Directed Discovery -DEFINE_PROPERTYKEY(PKEY_PNPX_RemoteAddress, 0x656A3BB3, 0xECC0, 0x43FD, 0x84, 0x77, 0x4A, 0xE0, 0x40, 0x4A, 0x96, 0xCD, 0x00001006); // VT_LPWSTR - - // from ThisModel metadata -DEFINE_PROPERTYKEY(PKEY_PNPX_Manufacturer, 0x656A3BB3, 0xECC0, 0x43FD, 0x84, 0x77, 0x4A, 0xE0, 0x40, 0x4A, 0x96, 0xCD, 0x00002000); // VT_LPWSTR (localizable) -DEFINE_PROPERTYKEY(PKEY_PNPX_ManufacturerUrl, 0x656A3BB3, 0xECC0, 0x43FD, 0x84, 0x77, 0x4A, 0xE0, 0x40, 0x4A, 0x96, 0xCD, 0x00002001); // VT_LPWSTR -DEFINE_PROPERTYKEY(PKEY_PNPX_ModelName, 0x656A3BB3, 0xECC0, 0x43FD, 0x84, 0x77, 0x4A, 0xE0, 0x40, 0x4A, 0x96, 0xCD, 0x00002002); // VT_LPWSTR (localizable) -DEFINE_PROPERTYKEY(PKEY_PNPX_ModelNumber, 0x656A3BB3, 0xECC0, 0x43FD, 0x84, 0x77, 0x4A, 0xE0, 0x40, 0x4A, 0x96, 0xCD, 0x00002003); // VT_LPWSTR -DEFINE_PROPERTYKEY(PKEY_PNPX_ModelUrl, 0x656A3BB3, 0xECC0, 0x43FD, 0x84, 0x77, 0x4A, 0xE0, 0x40, 0x4A, 0x96, 0xCD, 0x00002004); // VT_LPWSTR -DEFINE_PROPERTYKEY(PKEY_PNPX_Upc, 0x656A3BB3, 0xECC0, 0x43FD, 0x84, 0x77, 0x4A, 0xE0, 0x40, 0x4A, 0x96, 0xCD, 0x00002005); // VT_LPWSTR -DEFINE_PROPERTYKEY(PKEY_PNPX_PresentationUrl, 0x656A3BB3, 0xECC0, 0x43FD, 0x84, 0x77, 0x4A, 0xE0, 0x40, 0x4A, 0x96, 0xCD, 0x00002006); // VT_LPWSTR - // from ThisDevice metadata -DEFINE_PROPERTYKEY(PKEY_PNPX_FriendlyName, 0x656A3BB3, 0xECC0, 0x43FD, 0x84, 0x77, 0x4A, 0xE0, 0x40, 0x4A, 0x96, 0xCD, 0x00003000); // VT_LPWSTR (localizable) -DEFINE_PROPERTYKEY(PKEY_PNPX_FirmwareVersion, 0x656A3BB3, 0xECC0, 0x43FD, 0x84, 0x77, 0x4A, 0xE0, 0x40, 0x4A, 0x96, 0xCD, 0x00003001); // VT_LPWSTR -DEFINE_PROPERTYKEY(PKEY_PNPX_SerialNumber, 0x656A3BB3, 0xECC0, 0x43FD, 0x84, 0x77, 0x4A, 0xE0, 0x40, 0x4A, 0x96, 0xCD, 0x00003002); // VT_LPWSTR -DEFINE_PROPERTYKEY(PKEY_PNPX_DeviceCategory, 0x656A3BB3, 0xECC0, 0x43FD, 0x84, 0x77, 0x4A, 0xE0, 0x40, 0x4A, 0x96, 0xCD, 0x00003004); // VT_LPWSTR | VT_VECTOR - // DeviceCategory values -#define PNPX_DEVICECATEGORY_COMPUTER L"Computers" -#define PNPX_DEVICECATEGORY_INPUTDEVICE L"Input" -#define PNPX_DEVICECATEGORY_PRINTER L"Printers" -#define PNPX_DEVICECATEGORY_SCANNER L"Scanners" -#define PNPX_DEVICECATEGORY_FAX L"FAX" -#define PNPX_DEVICECATEGORY_MFP L"MFP" -#define PNPX_DEVICECATEGORY_CAMERA L"Cameras" -#define PNPX_DEVICECATEGORY_STORAGE L"Storage" -#define PNPX_DEVICECATEGORY_NETWORK_INFRASTRUCTURE L"NetworkInfrastructure" -#define PNPX_DEVICECATEGORY_DISPLAYS L"Displays" -#define PNPX_DEVICECATEGORY_MULTIMEDIA_DEVICE L"MediaDevices" -#define PNPX_DEVICECATEGORY_GAMING_DEVICE L"Gaming" -#define PNPX_DEVICECATEGORY_TELEPHONE L"Phones" -#define PNPX_DEVICECATEGORY_HOME_AUTOMATION_SYSTEM L"HomeAutomation" -#define PNPX_DEVICECATEGORY_HOME_SECURITY_SYSTEM L"HomeSecurity" -#define PNPX_DEVICECATEGORY_OTHER L"Other" -DEFINE_PROPERTYKEY(PKEY_PNPX_DeviceCategory_Desc, 0x656A3BB3, 0xECC0, 0x43FD, 0x84, 0x77, 0x4A, 0xE0, 0x40, 0x4A, 0x96, 0xCD, 0x00003005); // VT_LPWSTR | VT_VECTOR - -DEFINE_PROPERTYKEY(PKEY_PNPX_PhysicalAddress, 0x656A3BB3, 0xECC0, 0x43FD, 0x84, 0x77, 0x4A, 0xE0, 0x40, 0x4A, 0x96, 0xCD, 0x00003006); // VT_UI1 | VT_VECTOR -DEFINE_PROPERTYKEY(PKEY_PNPX_NetworkInterfaceLuid, 0x656A3BB3, 0xECC0, 0x43FD, 0x84, 0x77, 0x4A, 0xE0, 0x40, 0x4A, 0x96, 0xCD, 0x00003007); // VT_UI8 -DEFINE_PROPERTYKEY(PKEY_PNPX_NetworkInterfaceGuid, 0x656A3BB3, 0xECC0, 0x43FD, 0x84, 0x77, 0x4A, 0xE0, 0x40, 0x4A, 0x96, 0xCD, 0x00003008); // VT_LPWSTR -DEFINE_PROPERTYKEY(PKEY_PNPX_IpAddress, 0x656A3BB3, 0xECC0, 0x43FD, 0x84, 0x77, 0x4A, 0xE0, 0x40, 0x4A, 0x96, 0xCD, 0x00003009); // VT_LPWSTR | VT_VECTOR - // from Relationship metadata -DEFINE_PROPERTYKEY(PKEY_PNPX_ServiceAddress, 0x656A3BB3, 0xECC0, 0x43FD, 0x84, 0x77, 0x4A, 0xE0, 0x40, 0x4A, 0x96, 0xCD, 0x00004000); // VT_LPWSTR | VT_VECTOR -DEFINE_PROPERTYKEY(PKEY_PNPX_ServiceId, 0x656A3BB3, 0xECC0, 0x43FD, 0x84, 0x77, 0x4A, 0xE0, 0x40, 0x4A, 0x96, 0xCD, 0x00004001); // VT_LPWSTR -DEFINE_PROPERTYKEY(PKEY_PNPX_ServiceTypes, 0x656A3BB3, 0xECC0, 0x43FD, 0x84, 0x77, 0x4A, 0xE0, 0x40, 0x4A, 0x96, 0xCD, 0x00004002); // VT_LPWSTR | VT_VECTOR - // Association DB PKEYs -DEFINE_API_PKEY(PKEY_PNPX_Devnode, PnPXDevNode, 0x656A3BB3, 0xECC0, 0x43FD, 0x84, 0x77, 0x4A, 0xE0, 0x40, 0x4A, 0x96, 0xCD, 0x00000001); // VT_BOOL -DEFINE_API_PKEY(PKEY_PNPX_AssociationState, AssociationState, 0x656A3BB3, 0xECC0, 0x43FD, 0x84, 0x77, 0x4A, 0xE0, 0x40, 0x4A, 0x96, 0xCD, 0x00000002); // VT_UINT -DEFINE_API_PKEY(PKEY_PNPX_AssociatedInstanceId, AssociatedInstanceId, 0x656A3BB3, 0xECC0, 0x43FD, 0x84, 0x77, 0x4A, 0xE0, 0x40, 0x4A, 0x96, 0xCD, 0x00000003); // VT_LPWSTR - // for Computer Discovery -DEFINE_PROPERTYKEY(PKEY_PNPX_DomainName, 0x656A3BB3, 0xECC0, 0x43FD, 0x84, 0x77, 0x4A, 0xE0, 0x40, 0x4A, 0x96, 0xCD, 0x00005000); // VT_LPWSTR -// Use PKEY_ComputerName (propkey.h) DEFINE_PROPERTYKEY(PKEY_PNPX_MachineName, 0x656A3BB3, 0xECC0, 0x43FD, 0x84, 0x77, 0x4A, 0xE0, 0x40, 0x4A, 0x96, 0xCD, 0x00005001); // VT_LPWSTR -DEFINE_PROPERTYKEY(PKEY_PNPX_ShareName, 0x656A3BB3, 0xECC0, 0x43FD, 0x84, 0x77, 0x4A, 0xE0, 0x40, 0x4A, 0x96, 0xCD, 0x00005002); // VT_LPWSTR - - // SSDP Provider custom properties -DEFINE_PROPERTYKEY(PKEY_SSDP_AltLocationInfo, 0x656A3BB3, 0xECC0, 0x43FD, 0x84, 0x77, 0x4A, 0xE0, 0x40, 0x4A, 0x96, 0xCD, 0x00006000); // VT_LPWSTR -DEFINE_PROPERTYKEY(PKEY_SSDP_DevLifeTime, 0x656A3BB3, 0xECC0, 0x43FD, 0x84, 0x77, 0x4A, 0xE0, 0x40, 0x4A, 0x96, 0xCD, 0x00006001); // VT_UI4 -DEFINE_PROPERTYKEY(PKEY_SSDP_NetworkInterface, 0x656A3BB3, 0xECC0, 0x43FD, 0x84, 0x77, 0x4A, 0xE0, 0x40, 0x4A, 0x96, 0xCD, 0x00006002); // VT_BOOL - -// FMTID_PNPXDynamicProperty = {4FC5077E-B686-44BE-93E3-86CAFE368CCD} -DEFINE_GUID(FMTID_PNPXDynamicProperty, 0x4FC5077E, 0xB686, 0x44BE, 0x93, 0xE3, 0x86, 0xCA, 0xFE, 0x36, 0x8C, 0xCD); - -DEFINE_PROPERTYKEY(PKEY_PNPX_Installable, 0x4FC5077E, 0xB686, 0x44BE, 0x93, 0xE3, 0x86, 0xCA, 0xFE, 0x36, 0x8C, 0xCD, 0x00000001); // VT_BOOL -DEFINE_PROPERTYKEY(PKEY_PNPX_Associated, 0x4FC5077E, 0xB686, 0x44BE, 0x93, 0xE3, 0x86, 0xCA, 0xFE, 0x36, 0x8C, 0xCD, 0x00000002); // VT_BOOL -// PKEY_PNPX_Installed to be deprecated in Longhorn Server timeframe -// this PKEY really represents Associated state -#define PKEY_PNPX_Installed PKEY_PNPX_Associated // Deprecated! Please use PKEY_PNPX_Associated -DEFINE_PROPERTYKEY(PKEY_PNPX_CompatibleTypes, 0x4FC5077E, 0xB686, 0x44BE, 0x93, 0xE3, 0x86, 0xCA, 0xFE, 0x36, 0x8C, 0xCD, 0x00000003); // VT_LPWSTR | VT_VECTOR - - // WNET Provider properties -DEFINE_PROPERTYKEY(PKEY_WNET_Scope, 0xdebda43a, 0x37b3, 0x4383, 0x91, 0xE7, 0x44, 0x98, 0xda, 0x29, 0x95, 0xab, 0x00000001); // VT_UINT -DEFINE_PROPERTYKEY(PKEY_WNET_Type, 0xdebda43a, 0x37b3, 0x4383, 0x91, 0xE7, 0x44, 0x98, 0xda, 0x29, 0x95, 0xab, 0x00000002); // VT_UINT -DEFINE_PROPERTYKEY(PKEY_WNET_DisplayType, 0xdebda43a, 0x37b3, 0x4383, 0x91, 0xE7, 0x44, 0x98, 0xda, 0x29, 0x95, 0xab, 0x00000003); // VT_UINT -DEFINE_PROPERTYKEY(PKEY_WNET_Usage, 0xdebda43a, 0x37b3, 0x4383, 0x91, 0xE7, 0x44, 0x98, 0xda, 0x29, 0x95, 0xab, 0x00000004); // VT_UINT -DEFINE_PROPERTYKEY(PKEY_WNET_LocalName, 0xdebda43a, 0x37b3, 0x4383, 0x91, 0xE7, 0x44, 0x98, 0xda, 0x29, 0x95, 0xab, 0x00000005); // VT_LPWSTR -DEFINE_PROPERTYKEY(PKEY_WNET_RemoteName, 0xdebda43a, 0x37b3, 0x4383, 0x91, 0xE7, 0x44, 0x98, 0xda, 0x29, 0x95, 0xab, 0x00000006); // VT_LPWSTR -DEFINE_PROPERTYKEY(PKEY_WNET_Comment, 0xdebda43a, 0x37b3, 0x4383, 0x91, 0xE7, 0x44, 0x98, 0xda, 0x29, 0x95, 0xab, 0x00000007); // VT_LPWSTR -DEFINE_PROPERTYKEY(PKEY_WNET_Provider, 0xdebda43a, 0x37b3, 0x4383, 0x91, 0xE7, 0x44, 0x98, 0xda, 0x29, 0x95, 0xab, 0x00000008); // VT_LPWSTR - - - // WCN Provider properties - -DEFINE_PROPERTYKEY(PKEY_WCN_Version, 0x88190b80, 0x4684, 0x11da, 0xa2, 0x6a, 0x00, 0x02, 0xb3, 0x98, 0x8e, 0x81, 0x00000001); // VT_UI1 -DEFINE_PROPERTYKEY(PKEY_WCN_RequestType, 0x88190b81, 0x4684, 0x11da, 0xa2, 0x6a, 0x00, 0x02, 0xb3, 0x98, 0x8e, 0x81, 0x00000002); // VT_INT -DEFINE_PROPERTYKEY(PKEY_WCN_AuthType, 0x88190b82, 0x4684, 0x11da, 0xa2, 0x6a, 0x00, 0x02, 0xb3, 0x98, 0x8e, 0x81, 0x00000003); // VT_INT -DEFINE_PROPERTYKEY(PKEY_WCN_EncryptType, 0x88190b83, 0x4684, 0x11da, 0xa2, 0x6a, 0x00, 0x02, 0xb3, 0x98, 0x8e, 0x81, 0x00000004); // VT_INT -DEFINE_PROPERTYKEY(PKEY_WCN_ConnType, 0x88190b84, 0x4684, 0x11da, 0xa2, 0x6a, 0x00, 0x02, 0xb3, 0x98, 0x8e, 0x81, 0x00000005); // VT_INT -DEFINE_PROPERTYKEY(PKEY_WCN_ConfigMethods, 0x88190b85, 0x4684, 0x11da, 0xa2, 0x6a, 0x00, 0x02, 0xb3, 0x98, 0x8e, 0x81, 0x00000006); // VT_INT -// map WCN DeviceType to PKEY_PNPX_DeviceCategory -//DEFINE_PROPERTYKEY(PKEY_WCN_DeviceType, 0x88190b86, 0x4684, 0x11da, 0xa2, 0x6a, 0x00, 0x02, 0xb3, 0x98, 0x8e, 0x81, 0x00000007); // VT_INT -DEFINE_PROPERTYKEY(PKEY_WCN_RfBand, 0x88190b87, 0x4684, 0x11da, 0xa2, 0x6a, 0x00, 0x02, 0xb3, 0x98, 0x8e, 0x81, 0x00000008); // VT_INT -DEFINE_PROPERTYKEY(PKEY_WCN_AssocState, 0x88190b88, 0x4684, 0x11da, 0xa2, 0x6a, 0x00, 0x02, 0xb3, 0x98, 0x8e, 0x81, 0x00000009); // VT_INT -DEFINE_PROPERTYKEY(PKEY_WCN_ConfigError, 0x88190b89, 0x4684, 0x11da, 0xa2, 0x6a, 0x00, 0x02, 0xb3, 0x98, 0x8e, 0x81, 0x0000000a); // VT_INT -DEFINE_PROPERTYKEY(PKEY_WCN_ConfigState, 0x88190b89, 0x4684, 0x11da, 0xa2, 0x6a, 0x00, 0x02, 0xb3, 0x98, 0x8e, 0x81, 0x0000000b); // VT_UI1 -DEFINE_PROPERTYKEY(PKEY_WCN_DevicePasswordId, 0x88190b89, 0x4684, 0x11da, 0xa2, 0x6a, 0x00, 0x02, 0xb3, 0x98, 0x8e, 0x81, 0x0000000c); // VT_INT -DEFINE_PROPERTYKEY(PKEY_WCN_OSVersion, 0x88190b89, 0x4684, 0x11da, 0xa2, 0x6a, 0x00, 0x02, 0xb3, 0x98, 0x8e, 0x81, 0x0000000d); // VT_UINT -DEFINE_PROPERTYKEY(PKEY_WCN_VendorExtension, 0x88190b8a, 0x4684, 0x11da, 0xa2, 0x6a, 0x00, 0x02, 0xb3, 0x98, 0x8e, 0x81, 0x0000000e); // VT_UI1 | VT_VECTOR -DEFINE_PROPERTYKEY(PKEY_WCN_RegistrarType, 0x88190b8b, 0x4684, 0x11da, 0xa2, 0x6a, 0x00, 0x02, 0xb3, 0x98, 0x8e, 0x81, 0x0000000f); // VT_INT - -//----------------------------------------------------------------------------- -// DriverPackage properties - -#define PKEY_DriverPackage_Model PKEY_DrvPkg_Model -#define PKEY_DriverPackage_VendorWebSite PKEY_DrvPkg_VendorWebSite -#define PKEY_DriverPackage_DetailedDescription PKEY_DrvPkg_DetailedDescription -#define PKEY_DriverPackage_DocumentationLink PKEY_DrvPkg_DocumentationLink -#define PKEY_DriverPackage_Icon PKEY_DrvPkg_Icon -#define PKEY_DriverPackage_BrandingIcon PKEY_DrvPkg_BrandingIcon - -//----------------------------------------------------------------------------- -// Hardware properties - -DEFINE_PROPERTYKEY(PKEY_Hardware_Devinst, 0x5EAF3EF2, 0xE0CA, 0x4598, 0xBF, 0x06, 0x71, 0xED, 0x1D, 0x9D, 0xD9, 0x53, 4097); - -// Name: System.Hardware.DisplayAttribute -- PKEY_Hardware_DisplayAttribute -// Type: Unspecified -- VT_NULL -// FormatID: 5EAF3EF2-E0CA-4598-BF06-71ED1D9DD953, 5 -DEFINE_PROPERTYKEY(PKEY_Hardware_DisplayAttribute, 0x5EAF3EF2, 0xE0CA, 0x4598, 0xBF, 0x06, 0x71, 0xED, 0x1D, 0x9D, 0xD9, 0x53, 5); - -// Name: System.Hardware.DriverDate -- PKEY_Hardware_DriverDate -// Type: Unspecified -- VT_NULL -// FormatID: 5EAF3EF2-E0CA-4598-BF06-71ED1D9DD953, 11 -DEFINE_PROPERTYKEY(PKEY_Hardware_DriverDate, 0x5EAF3EF2, 0xE0CA, 0x4598, 0xBF, 0x06, 0x71, 0xED, 0x1D, 0x9D, 0xD9, 0x53, 11); - -// Name: System.Hardware.DriverProvider -- PKEY_Hardware_DriverProvider -// Type: Unspecified -- VT_NULL -// FormatID: 5EAF3EF2-E0CA-4598-BF06-71ED1D9DD953, 10 -DEFINE_PROPERTYKEY(PKEY_Hardware_DriverProvider, 0x5EAF3EF2, 0xE0CA, 0x4598, 0xBF, 0x06, 0x71, 0xED, 0x1D, 0x9D, 0xD9, 0x53, 10); - -// Name: System.Hardware.DriverVersion -- PKEY_Hardware_DriverVersion -// Type: Unspecified -- VT_NULL -// FormatID: 5EAF3EF2-E0CA-4598-BF06-71ED1D9DD953, 9 -DEFINE_PROPERTYKEY(PKEY_Hardware_DriverVersion, 0x5EAF3EF2, 0xE0CA, 0x4598, 0xBF, 0x06, 0x71, 0xED, 0x1D, 0x9D, 0xD9, 0x53, 9); - -// Name: System.Hardware.Function -- PKEY_Hardware_Function -// Type: Unspecified -- VT_NULL -// FormatID: 5EAF3EF2-E0CA-4598-BF06-71ED1D9DD953, 4099 -DEFINE_PROPERTYKEY(PKEY_Hardware_Function, 0x5EAF3EF2, 0xE0CA, 0x4598, 0xBF, 0x06, 0x71, 0xED, 0x1D, 0x9D, 0xD9, 0x53, 4099); - -// Name: System.Hardware.Icon -- PKEY_Hardware_Icon -// Type: Unspecified -- VT_NULL -// FormatID: 5EAF3EF2-E0CA-4598-BF06-71ED1D9DD953, 3 -DEFINE_PROPERTYKEY(PKEY_Hardware_Icon, 0x5EAF3EF2, 0xE0CA, 0x4598, 0xBF, 0x06, 0x71, 0xED, 0x1D, 0x9D, 0xD9, 0x53, 3); - -// Name: System.Hardware.Image -- PKEY_Hardware_Image -// Type: Unspecified -- VT_NULL -// FormatID: 5EAF3EF2-E0CA-4598-BF06-71ED1D9DD953, 4098 -DEFINE_PROPERTYKEY(PKEY_Hardware_Image, 0x5EAF3EF2, 0xE0CA, 0x4598, 0xBF, 0x06, 0x71, 0xED, 0x1D, 0x9D, 0xD9, 0x53, 4098); - -// Name: System.Hardware.Manufacturer -- PKEY_Hardware_Manufacturer -// Type: Unspecified -- VT_NULL -// FormatID: 5EAF3EF2-E0CA-4598-BF06-71ED1D9DD953, 6 -DEFINE_PROPERTYKEY(PKEY_Hardware_Manufacturer, 0x5EAF3EF2, 0xE0CA, 0x4598, 0xBF, 0x06, 0x71, 0xED, 0x1D, 0x9D, 0xD9, 0x53, 6); - -// Name: System.Hardware.Model -- PKEY_Hardware_Model -// Type: Unspecified -- VT_NULL -// FormatID: 5EAF3EF2-E0CA-4598-BF06-71ED1D9DD953, 7 -DEFINE_PROPERTYKEY(PKEY_Hardware_Model, 0x5EAF3EF2, 0xE0CA, 0x4598, 0xBF, 0x06, 0x71, 0xED, 0x1D, 0x9D, 0xD9, 0x53, 7); - -// Name: System.Hardware.Name -- PKEY_Hardware_Name -// Type: String -- VT_LPWSTR (For variants: VT_BSTR) -// FormatID: 5EAF3EF2-E0CA-4598-BF06-71ED1D9DD953, 2 -DEFINE_PROPERTYKEY(PKEY_Hardware_Name, 0x5EAF3EF2, 0xE0CA, 0x4598, 0xBF, 0x06, 0x71, 0xED, 0x1D, 0x9D, 0xD9, 0x53, 2); - -// Name: System.Hardware.SerialNumber -- PKEY_Hardware_SerialNumber -// Type: Unspecified -- VT_NULL -// FormatID: 5EAF3EF2-E0CA-4598-BF06-71ED1D9DD953, 8 -DEFINE_PROPERTYKEY(PKEY_Hardware_SerialNumber, 0x5EAF3EF2, 0xE0CA, 0x4598, 0xBF, 0x06, 0x71, 0xED, 0x1D, 0x9D, 0xD9, 0x53, 8); - -// Name: System.Hardware.ShellAttributes -- PKEY_Hardware_ShellAttributes -// Type: Unspecified -- VT_NULL -// FormatID: 5EAF3EF2-E0CA-4598-BF06-71ED1D9DD953, 4100 -DEFINE_PROPERTYKEY(PKEY_Hardware_ShellAttributes, 0x5EAF3EF2, 0xE0CA, 0x4598, 0xBF, 0x06, 0x71, 0xED, 0x1D, 0x9D, 0xD9, 0x53, 4100); - -// Name: System.Hardware.Status -- PKEY_Hardware_Status -// Type: Unspecified -- VT_NULL -// FormatID: 5EAF3EF2-E0CA-4598-BF06-71ED1D9DD953, 4096 -DEFINE_PROPERTYKEY(PKEY_Hardware_Status, 0x5EAF3EF2, 0xE0CA, 0x4598, 0xBF, 0x06, 0x71, 0xED, 0x1D, 0x9D, 0xD9, 0x53, 4096); - - diff --git a/portaudio/src/hostapi/wasapi/mingw-include/functiondiscoverykeys_devpkey.h b/portaudio/src/hostapi/wasapi/mingw-include/functiondiscoverykeys_devpkey.h deleted file mode 100644 index d66cb97..0000000 --- a/portaudio/src/hostapi/wasapi/mingw-include/functiondiscoverykeys_devpkey.h +++ /dev/null @@ -1,13 +0,0 @@ -/** - * This file has no copyright assigned and is placed in the Public Domain. - * This file is part of the mingw-w64 runtime package. - * No warranty is given; refer to the file DISCLAIMER.PD within this package. - */ -#ifndef _INC_FUNCTIONDISCOVERYKEYS -#define _INC_FUNCTIONDISCOVERYKEYS - -#include <propkeydef.h> - -DEFINE_PROPERTYKEY(PKEY_Device_FriendlyName, 0xa45c254e, 0xdf1c, 0x4efd, 0x80, 0x20, 0x67, 0xd1, 0x46, 0xa8, 0x50, 0xe0, 14); - -#endif /* _INC_FUNCTIONDISCOVERYKEYS */ diff --git a/portaudio/src/hostapi/wasapi/mingw-include/ks.h b/portaudio/src/hostapi/wasapi/mingw-include/ks.h deleted file mode 100644 index 2261e6c..0000000 --- a/portaudio/src/hostapi/wasapi/mingw-include/ks.h +++ /dev/null @@ -1,3666 +0,0 @@ -/** - * This file has no copyright assigned and is placed in the Public Domain. - * This file is part of the w64 mingw-runtime package. - * No warranty is given; refer to the file DISCLAIMER.PD within this package. - */ -#ifndef _KS_ -#define _KS_ - -#if __GNUC__ >= 3 -#pragma GCC system_header -#endif - -#ifndef __MINGW_EXTENSION -#if defined(__GNUC__) || defined(__GNUG__) -#define __MINGW_EXTENSION __extension__ -#else -#define __MINGW_EXTENSION -#endif -#endif - -#ifdef __TCS__ -#define _KS_NO_ANONYMOUS_STRUCTURES_ 1 -#endif - -#ifdef _KS_NO_ANONYMOUS_STRUCTURES_ -#define _KS_ANON_STRUCT(X) struct X -#else -#define _KS_ANON_STRUCT(X) __MINGW_EXTENSION struct -#endif - -#ifndef _NTRTL_ -#ifndef DEFINE_GUIDEX -#define DEFINE_GUIDEX(name) EXTERN_C const CDECL GUID name -#endif -#ifndef STATICGUIDOF -#define STATICGUIDOF(guid) STATIC_##guid -#endif -#endif /* _NTRTL_ */ - -#ifndef SIZEOF_ARRAY -#define SIZEOF_ARRAY(ar) (sizeof(ar)/sizeof((ar)[0])) -#endif - -#define DEFINE_GUIDSTRUCT(g,n) DEFINE_GUIDEX(n) -#define DEFINE_GUIDNAMED(n) n - -#define STATIC_GUID_NULL \ - 0x00000000L,0x0000,0x0000,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 - -DEFINE_GUIDSTRUCT("00000000-0000-0000-0000-000000000000",GUID_NULL); -#define GUID_NULL DEFINE_GUIDNAMED(GUID_NULL) - -#define IOCTL_KS_PROPERTY CTL_CODE(FILE_DEVICE_KS,0x000,METHOD_NEITHER,FILE_ANY_ACCESS) -#define IOCTL_KS_ENABLE_EVENT CTL_CODE(FILE_DEVICE_KS,0x001,METHOD_NEITHER,FILE_ANY_ACCESS) -#define IOCTL_KS_DISABLE_EVENT CTL_CODE(FILE_DEVICE_KS,0x002,METHOD_NEITHER,FILE_ANY_ACCESS) -#define IOCTL_KS_METHOD CTL_CODE(FILE_DEVICE_KS,0x003,METHOD_NEITHER,FILE_ANY_ACCESS) -#define IOCTL_KS_WRITE_STREAM CTL_CODE(FILE_DEVICE_KS,0x004,METHOD_NEITHER,FILE_WRITE_ACCESS) -#define IOCTL_KS_READ_STREAM CTL_CODE(FILE_DEVICE_KS,0x005,METHOD_NEITHER,FILE_READ_ACCESS) -#define IOCTL_KS_RESET_STATE CTL_CODE(FILE_DEVICE_KS,0x006,METHOD_NEITHER,FILE_ANY_ACCESS) - -typedef enum { - KSRESET_BEGIN, - KSRESET_END -} KSRESET; - -typedef enum { - KSSTATE_STOP, - KSSTATE_ACQUIRE, - KSSTATE_PAUSE, - KSSTATE_RUN -} KSSTATE,*PKSSTATE; - -#define KSPRIORITY_LOW 0x00000001 -#define KSPRIORITY_NORMAL 0x40000000 -#define KSPRIORITY_HIGH 0x80000000 -#define KSPRIORITY_EXCLUSIVE 0xFFFFFFFF - -typedef struct { - ULONG PriorityClass; - ULONG PrioritySubClass; -} KSPRIORITY,*PKSPRIORITY; - -typedef struct { - __MINGW_EXTENSION union { - _KS_ANON_STRUCT(_IDENTIFIER) - { - GUID Set; - ULONG Id; - ULONG Flags; - }; - LONGLONG Alignment; - }; -} KSIDENTIFIER,*PKSIDENTIFIER; - -typedef KSIDENTIFIER KSPROPERTY,*PKSPROPERTY,KSMETHOD,*PKSMETHOD,KSEVENT,*PKSEVENT; - -#define KSMETHOD_TYPE_NONE 0x00000000 -#define KSMETHOD_TYPE_READ 0x00000001 -#define KSMETHOD_TYPE_WRITE 0x00000002 -#define KSMETHOD_TYPE_MODIFY 0x00000003 -#define KSMETHOD_TYPE_SOURCE 0x00000004 - -#define KSMETHOD_TYPE_SEND 0x00000001 -#define KSMETHOD_TYPE_SETSUPPORT 0x00000100 -#define KSMETHOD_TYPE_BASICSUPPORT 0x00000200 - -#define KSMETHOD_TYPE_TOPOLOGY 0x10000000 - -#define KSPROPERTY_TYPE_GET 0x00000001 -#define KSPROPERTY_TYPE_SET 0x00000002 -#define KSPROPERTY_TYPE_SETSUPPORT 0x00000100 -#define KSPROPERTY_TYPE_BASICSUPPORT 0x00000200 -#define KSPROPERTY_TYPE_RELATIONS 0x00000400 -#define KSPROPERTY_TYPE_SERIALIZESET 0x00000800 -#define KSPROPERTY_TYPE_UNSERIALIZESET 0x00001000 -#define KSPROPERTY_TYPE_SERIALIZERAW 0x00002000 -#define KSPROPERTY_TYPE_UNSERIALIZERAW 0x00004000 -#define KSPROPERTY_TYPE_SERIALIZESIZE 0x00008000 -#define KSPROPERTY_TYPE_DEFAULTVALUES 0x00010000 - -#define KSPROPERTY_TYPE_TOPOLOGY 0x10000000 - -typedef struct { - KSPROPERTY Property; - ULONG NodeId; - ULONG Reserved; -} KSP_NODE,*PKSP_NODE; - -typedef struct { - KSMETHOD Method; - ULONG NodeId; - ULONG Reserved; -} KSM_NODE,*PKSM_NODE; - -typedef struct { - KSEVENT Event; - ULONG NodeId; - ULONG Reserved; -} KSE_NODE,*PKSE_NODE; - -#define STATIC_KSPROPTYPESETID_General \ - 0x97E99BA0L,0xBDEA,0x11CF,0xA5,0xD6,0x28,0xDB,0x04,0xC1,0x00,0x00 -DEFINE_GUIDSTRUCT("97E99BA0-BDEA-11CF-A5D6-28DB04C10000",KSPROPTYPESETID_General); -#define KSPROPTYPESETID_General DEFINE_GUIDNAMED(KSPROPTYPESETID_General) - -typedef struct { - ULONG Size; - ULONG Count; -} KSMULTIPLE_ITEM,*PKSMULTIPLE_ITEM; - -typedef struct { - ULONG AccessFlags; - ULONG DescriptionSize; - KSIDENTIFIER PropTypeSet; - ULONG MembersListCount; - ULONG Reserved; -} KSPROPERTY_DESCRIPTION,*PKSPROPERTY_DESCRIPTION; - -#define KSPROPERTY_MEMBER_RANGES 0x00000001 -#define KSPROPERTY_MEMBER_STEPPEDRANGES 0x00000002 -#define KSPROPERTY_MEMBER_VALUES 0x00000003 - -#define KSPROPERTY_MEMBER_FLAG_DEFAULT 0x00000001 -#define KSPROPERTY_MEMBER_FLAG_BASICSUPPORT_MULTICHANNEL 0x00000002 -#define KSPROPERTY_MEMBER_FLAG_BASICSUPPORT_UNIFORM 0x00000004 - -typedef struct { - ULONG MembersFlags; - ULONG MembersSize; - ULONG MembersCount; - ULONG Flags; -} KSPROPERTY_MEMBERSHEADER,*PKSPROPERTY_MEMBERSHEADER; - -typedef union { - _KS_ANON_STRUCT(_SIGNED) - { - LONG SignedMinimum; - LONG SignedMaximum; - }; - _KS_ANON_STRUCT(_UNSIGNED) - { - ULONG UnsignedMinimum; - ULONG UnsignedMaximum; - }; -} KSPROPERTY_BOUNDS_LONG,*PKSPROPERTY_BOUNDS_LONG; - -typedef union { - _KS_ANON_STRUCT(_SIGNED64) - { - LONGLONG SignedMinimum; - LONGLONG SignedMaximum; - }; - _KS_ANON_STRUCT(_UNSIGNED64) - { - DWORDLONG UnsignedMinimum; - DWORDLONG UnsignedMaximum; - }; -} KSPROPERTY_BOUNDS_LONGLONG,*PKSPROPERTY_BOUNDS_LONGLONG; - -typedef struct { - ULONG SteppingDelta; - ULONG Reserved; - KSPROPERTY_BOUNDS_LONG Bounds; -} KSPROPERTY_STEPPING_LONG,*PKSPROPERTY_STEPPING_LONG; - -typedef struct { - DWORDLONG SteppingDelta; - KSPROPERTY_BOUNDS_LONGLONG Bounds; -} KSPROPERTY_STEPPING_LONGLONG,*PKSPROPERTY_STEPPING_LONGLONG; - -#if defined(_NTDDK_) -typedef struct _KSDEVICE_DESCRIPTOR KSDEVICE_DESCRIPTOR, *PKSDEVICE_DESCRIPTOR; -typedef struct _KSDEVICE_DISPATCH KSDEVICE_DISPATCH, *PKSDEVICE_DISPATCH; -typedef struct _KSDEVICE KSDEVICE, *PKSDEVICE; -typedef struct _KSFILTERFACTORY KSFILTERFACTORY, *PKSFILTERFACTORY; -typedef struct _KSFILTER_DESCRIPTOR KSFILTER_DESCRIPTOR, *PKSFILTER_DESCRIPTOR; -typedef struct _KSFILTER_DISPATCH KSFILTER_DISPATCH, *PKSFILTER_DISPATCH; -typedef struct _KSFILTER KSFILTER, *PKSFILTER; -typedef struct _KSPIN_DESCRIPTOR_EX KSPIN_DESCRIPTOR_EX, *PKSPIN_DESCRIPTOR_EX; -typedef struct _KSPIN_DISPATCH KSPIN_DISPATCH, *PKSPIN_DISPATCH; -typedef struct _KSCLOCK_DISPATCH KSCLOCK_DISPATCH, *PKSCLOCK_DISPATCH; -typedef struct _KSALLOCATOR_DISPATCH KSALLOCATOR_DISPATCH, *PKSALLOCATOR_DISPATCH; -typedef struct _KSPIN KSPIN, *PKSPIN; -typedef struct _KSNODE_DESCRIPTOR KSNODE_DESCRIPTOR, *PKSNODE_DESCRIPTOR; -typedef struct _KSSTREAM_POINTER_OFFSET KSSTREAM_POINTER_OFFSET, *PKSSTREAM_POINTER_OFFSET; -typedef struct _KSSTREAM_POINTER KSSTREAM_POINTER, *PKSSTREAM_POINTER; -typedef struct _KSMAPPING KSMAPPING, *PKSMAPPING; -typedef struct _KSPROCESSPIN KSPROCESSPIN, *PKSPROCESSPIN; -typedef struct _KSPROCESSPIN_INDEXENTRY KSPROCESSPIN_INDEXENTRY, *PKSPROCESSPIN_INDEXENTRY; -#endif /* _NTDDK_ */ - -typedef PVOID PKSWORKER; - - -typedef struct { - ULONG NotificationType; - __MINGW_EXTENSION union { - struct { - HANDLE Event; - ULONG_PTR Reserved[2]; - } EventHandle; - struct { - HANDLE Semaphore; - ULONG Reserved; - LONG Adjustment; - } SemaphoreHandle; -#if defined(_NTDDK_) - struct { - PVOID Event; - KPRIORITY Increment; - ULONG_PTR Reserved; - } EventObject; - struct { - PVOID Semaphore; - KPRIORITY Increment; - LONG Adjustment; - } SemaphoreObject; - struct { - PKDPC Dpc; - ULONG ReferenceCount; - ULONG_PTR Reserved; - } Dpc; - struct { - PWORK_QUEUE_ITEM WorkQueueItem; - WORK_QUEUE_TYPE WorkQueueType; - ULONG_PTR Reserved; - } WorkItem; - struct { - PWORK_QUEUE_ITEM WorkQueueItem; - PKSWORKER KsWorkerObject; - ULONG_PTR Reserved; - } KsWorkItem; -#endif /* _NTDDK_ */ - struct { - PVOID Unused; - LONG_PTR Alignment[2]; - } Alignment; - }; -} KSEVENTDATA,*PKSEVENTDATA; - -#define KSEVENTF_EVENT_HANDLE 0x00000001 -#define KSEVENTF_SEMAPHORE_HANDLE 0x00000002 -#if defined(_NTDDK_) -#define KSEVENTF_EVENT_OBJECT 0x00000004 -#define KSEVENTF_SEMAPHORE_OBJECT 0x00000008 -#define KSEVENTF_DPC 0x00000010 -#define KSEVENTF_WORKITEM 0x00000020 -#define KSEVENTF_KSWORKITEM 0x00000080 -#endif /* _NTDDK_ */ - -#define KSEVENT_TYPE_ENABLE 0x00000001 -#define KSEVENT_TYPE_ONESHOT 0x00000002 -#define KSEVENT_TYPE_ENABLEBUFFERED 0x00000004 -#define KSEVENT_TYPE_SETSUPPORT 0x00000100 -#define KSEVENT_TYPE_BASICSUPPORT 0x00000200 -#define KSEVENT_TYPE_QUERYBUFFER 0x00000400 - -#define KSEVENT_TYPE_TOPOLOGY 0x10000000 - -typedef struct { - KSEVENT Event; - PKSEVENTDATA EventData; - PVOID Reserved; -} KSQUERYBUFFER,*PKSQUERYBUFFER; - -typedef struct { - ULONG Size; - ULONG Flags; - __MINGW_EXTENSION union { - HANDLE ObjectHandle; - PVOID ObjectPointer; - }; - PVOID Reserved; - KSEVENT Event; - KSEVENTDATA EventData; -} KSRELATIVEEVENT; - -#define KSRELATIVEEVENT_FLAG_HANDLE 0x00000001 -#define KSRELATIVEEVENT_FLAG_POINTER 0x00000002 - -typedef struct { - KSEVENTDATA EventData; - LONGLONG MarkTime; -} KSEVENT_TIME_MARK,*PKSEVENT_TIME_MARK; - -typedef struct { - KSEVENTDATA EventData; - LONGLONG TimeBase; - LONGLONG Interval; -} KSEVENT_TIME_INTERVAL,*PKSEVENT_TIME_INTERVAL; - -typedef struct { - LONGLONG TimeBase; - LONGLONG Interval; -} KSINTERVAL,*PKSINTERVAL; - -#define STATIC_KSPROPSETID_General \ - 0x1464EDA5L,0x6A8F,0x11D1,0x9A,0xA7,0x00,0xA0,0xC9,0x22,0x31,0x96 -DEFINE_GUIDSTRUCT("1464EDA5-6A8F-11D1-9AA7-00A0C9223196",KSPROPSETID_General); -#define KSPROPSETID_General DEFINE_GUIDNAMED(KSPROPSETID_General) - -typedef enum { - KSPROPERTY_GENERAL_COMPONENTID -} KSPROPERTY_GENERAL; - -typedef struct { - GUID Manufacturer; - GUID Product; - GUID Component; - GUID Name; - ULONG Version; - ULONG Revision; -} KSCOMPONENTID,*PKSCOMPONENTID; - -#define DEFINE_KSPROPERTY_ITEM_GENERAL_COMPONENTID(Handler) \ - DEFINE_KSPROPERTY_ITEM( \ - KSPROPERTY_GENERAL_COMPONENTID, \ - (Handler), \ - sizeof(KSPROPERTY), \ - sizeof(KSCOMPONENTID), \ - NULL, NULL, 0, NULL, NULL, 0) - -#define STATIC_KSMETHODSETID_StreamIo \ - 0x65D003CAL,0x1523,0x11D2,0xB2,0x7A,0x00,0xA0,0xC9,0x22,0x31,0x96 -DEFINE_GUIDSTRUCT("65D003CA-1523-11D2-B27A-00A0C9223196",KSMETHODSETID_StreamIo); -#define KSMETHODSETID_StreamIo DEFINE_GUIDNAMED(KSMETHODSETID_StreamIo) - -typedef enum { - KSMETHOD_STREAMIO_READ, - KSMETHOD_STREAMIO_WRITE -} KSMETHOD_STREAMIO; - -#define DEFINE_KSMETHOD_ITEM_STREAMIO_READ(Handler) \ - DEFINE_KSMETHOD_ITEM( \ - KSMETHOD_STREAMIO_READ, \ - KSMETHOD_TYPE_WRITE, \ - (Handler), \ - sizeof(KSMETHOD), \ - 0, \ - NULL) - -#define DEFINE_KSMETHOD_ITEM_STREAMIO_WRITE(Handler) \ - DEFINE_KSMETHOD_ITEM( \ - KSMETHOD_STREAMIO_WRITE, \ - KSMETHOD_TYPE_READ, \ - (Handler), \ - sizeof(KSMETHOD), \ - 0, \ - NULL) - -#define STATIC_KSPROPSETID_MediaSeeking \ - 0xEE904F0CL,0xD09B,0x11D0,0xAB,0xE9,0x00,0xA0,0xC9,0x22,0x31,0x96 -DEFINE_GUIDSTRUCT("EE904F0C-D09B-11D0-ABE9-00A0C9223196",KSPROPSETID_MediaSeeking); -#define KSPROPSETID_MediaSeeking DEFINE_GUIDNAMED(KSPROPSETID_MediaSeeking) - -typedef enum { - KSPROPERTY_MEDIASEEKING_CAPABILITIES, - KSPROPERTY_MEDIASEEKING_FORMATS, - KSPROPERTY_MEDIASEEKING_TIMEFORMAT, - KSPROPERTY_MEDIASEEKING_POSITION, - KSPROPERTY_MEDIASEEKING_STOPPOSITION, - KSPROPERTY_MEDIASEEKING_POSITIONS, - KSPROPERTY_MEDIASEEKING_DURATION, - KSPROPERTY_MEDIASEEKING_AVAILABLE, - KSPROPERTY_MEDIASEEKING_PREROLL, - KSPROPERTY_MEDIASEEKING_CONVERTTIMEFORMAT -} KSPROPERTY_MEDIASEEKING; - -typedef enum { - KS_SEEKING_NoPositioning, - KS_SEEKING_AbsolutePositioning, - KS_SEEKING_RelativePositioning, - KS_SEEKING_IncrementalPositioning, - KS_SEEKING_PositioningBitsMask = 0x3, - KS_SEEKING_SeekToKeyFrame, - KS_SEEKING_ReturnTime = 0x8 -} KS_SEEKING_FLAGS; - -typedef enum { - KS_SEEKING_CanSeekAbsolute = 0x1, - KS_SEEKING_CanSeekForwards = 0x2, - KS_SEEKING_CanSeekBackwards = 0x4, - KS_SEEKING_CanGetCurrentPos = 0x8, - KS_SEEKING_CanGetStopPos = 0x10, - KS_SEEKING_CanGetDuration = 0x20, - KS_SEEKING_CanPlayBackwards = 0x40 -} KS_SEEKING_CAPABILITIES; - -typedef struct { - LONGLONG Current; - LONGLONG Stop; - KS_SEEKING_FLAGS CurrentFlags; - KS_SEEKING_FLAGS StopFlags; -} KSPROPERTY_POSITIONS,*PKSPROPERTY_POSITIONS; - -typedef struct { - LONGLONG Earliest; - LONGLONG Latest; -} KSPROPERTY_MEDIAAVAILABLE,*PKSPROPERTY_MEDIAAVAILABLE; - -typedef struct { - KSPROPERTY Property; - GUID SourceFormat; - GUID TargetFormat; - LONGLONG Time; -} KSP_TIMEFORMAT,*PKSP_TIMEFORMAT; - -#define DEFINE_KSPROPERTY_ITEM_MEDIASEEKING_CAPABILITIES(Handler) \ - DEFINE_KSPROPERTY_ITEM( \ - KSPROPERTY_MEDIASEEKING_CAPABILITIES, \ - (Handler), \ - sizeof(KSPROPERTY), \ - sizeof(KS_SEEKING_CAPABILITIES), \ - NULL, NULL, 0, NULL, NULL, 0) - -#define DEFINE_KSPROPERTY_ITEM_MEDIASEEKING_FORMATS(Handler) \ - DEFINE_KSPROPERTY_ITEM( \ - KSPROPERTY_MEDIASEEKING_FORMATS, \ - (Handler), \ - sizeof(KSPROPERTY), \ - 0, \ - NULL, NULL, 0, NULL, NULL, 0) - -#define DEFINE_KSPROPERTY_ITEM_MEDIASEEKING_TIMEFORMAT(GetHandler,SetHandler) \ - DEFINE_KSPROPERTY_ITEM( \ - KSPROPERTY_MEDIASEEKING_TIMEFORMAT, \ - (GetHandler), \ - sizeof(KSPROPERTY), \ - sizeof(GUID), \ - (SetHandler), \ - NULL, 0, NULL, NULL, 0) - -#define DEFINE_KSPROPERTY_ITEM_MEDIASEEKING_POSITION(Handler) \ - DEFINE_KSPROPERTY_ITEM( \ - KSPROPERTY_MEDIASEEKING_POSITION, \ - (Handler), \ - sizeof(KSPROPERTY), \ - sizeof(LONGLONG), \ - NULL, NULL, 0, NULL, NULL, 0) - -#define DEFINE_KSPROPERTY_ITEM_MEDIASEEKING_STOPPOSITION(Handler) \ - DEFINE_KSPROPERTY_ITEM( \ - KSPROPERTY_MEDIASEEKING_STOPPOSITION, \ - (Handler), \ - sizeof(KSPROPERTY), \ - sizeof(LONGLONG), \ - NULL, NULL, 0, NULL, NULL, 0) - -#define DEFINE_KSPROPERTY_ITEM_MEDIASEEKING_POSITIONS(Handler) \ - DEFINE_KSPROPERTY_ITEM( \ - KSPROPERTY_MEDIASEEKING_POSITIONS, \ - NULL, \ - sizeof(KSPROPERTY), \ - sizeof(KSPROPERTY_POSITIONS), \ - (Handler), \ - NULL, 0, NULL, NULL, 0) - -#define DEFINE_KSPROPERTY_ITEM_MEDIASEEKING_DURATION(Handler) \ - DEFINE_KSPROPERTY_ITEM( \ - KSPROPERTY_MEDIASEEKING_DURATION, \ - (Handler), \ - sizeof(KSPROPERTY), \ - sizeof(LONGLONG), \ - NULL, NULL, 0, NULL, NULL, 0) - -#define DEFINE_KSPROPERTY_ITEM_MEDIASEEKING_AVAILABLE(Handler) \ - DEFINE_KSPROPERTY_ITEM( \ - KSPROPERTY_MEDIASEEKING_AVAILABLE, \ - (Handler), \ - sizeof(KSPROPERTY), \ - sizeof(KSPROPERTY_MEDIAAVAILABLE), \ - NULL, NULL, 0, NULL, NULL, 0) - -#define DEFINE_KSPROPERTY_ITEM_MEDIASEEKING_PREROLL(Handler) \ - DEFINE_KSPROPERTY_ITEM( \ - KSPROPERTY_MEDIASEEKING_PREROLL, \ - (Handler), \ - sizeof(KSPROPERTY), \ - sizeof(LONGLONG), \ - NULL, NULL, 0, NULL, NULL, 0) - -#define DEFINE_KSPROPERTY_ITEM_MEDIASEEKING_CONVERTTIMEFORMAT(Handler) \ - DEFINE_KSPROPERTY_ITEM( \ - KSPROPERTY_MEDIASEEKING_CONVERTTIMEFORMAT, \ - (Handler), \ - sizeof(KSP_TIMEFORMAT), \ - sizeof(LONGLONG), \ - NULL, NULL, 0, NULL, NULL, 0) - -#define STATIC_KSPROPSETID_Topology \ - 0x720D4AC0L,0x7533,0x11D0,0xA5,0xD6,0x28,0xDB,0x04,0xC1,0x00,0x00 -DEFINE_GUIDSTRUCT("720D4AC0-7533-11D0-A5D6-28DB04C10000",KSPROPSETID_Topology); -#define KSPROPSETID_Topology DEFINE_GUIDNAMED(KSPROPSETID_Topology) - -typedef enum { - KSPROPERTY_TOPOLOGY_CATEGORIES, - KSPROPERTY_TOPOLOGY_NODES, - KSPROPERTY_TOPOLOGY_CONNECTIONS, - KSPROPERTY_TOPOLOGY_NAME -} KSPROPERTY_TOPOLOGY; - -#define DEFINE_KSPROPERTY_ITEM_TOPOLOGY_CATEGORIES(Handler) \ - DEFINE_KSPROPERTY_ITEM( \ - KSPROPERTY_TOPOLOGY_CATEGORIES, \ - (Handler), \ - sizeof(KSPROPERTY), \ - 0, \ - NULL, NULL, 0,NULL, NULL, 0) - -#define DEFINE_KSPROPERTY_ITEM_TOPOLOGY_NODES(Handler) \ - DEFINE_KSPROPERTY_ITEM( \ - KSPROPERTY_TOPOLOGY_NODES, \ - (Handler), \ - sizeof(KSPROPERTY), \ - 0, \ - NULL, NULL, 0, NULL, NULL, 0) - -#define DEFINE_KSPROPERTY_ITEM_TOPOLOGY_CONNECTIONS(Handler) \ - DEFINE_KSPROPERTY_ITEM( \ - KSPROPERTY_TOPOLOGY_CONNECTIONS, \ - (Handler), \ - sizeof(KSPROPERTY), \ - 0, \ - NULL, NULL, 0, NULL, NULL, 0) - -#define DEFINE_KSPROPERTY_ITEM_TOPOLOGY_NAME(Handler) \ - DEFINE_KSPROPERTY_ITEM( \ - KSPROPERTY_TOPOLOGY_NAME, \ - (Handler), \ - sizeof(KSP_NODE), \ - 0, \ - NULL, NULL, 0, NULL, NULL, 0) - -#define DEFINE_KSPROPERTY_TOPOLOGYSET(TopologySet,Handler) \ -DEFINE_KSPROPERTY_TABLE(TopologySet) { \ - DEFINE_KSPROPERTY_ITEM_TOPOLOGY_CATEGORIES(Handler), \ - DEFINE_KSPROPERTY_ITEM_TOPOLOGY_NODES(Handler), \ - DEFINE_KSPROPERTY_ITEM_TOPOLOGY_CONNECTIONS(Handler), \ - DEFINE_KSPROPERTY_ITEM_TOPOLOGY_NAME(Handler) \ -} - -#define STATIC_KSCATEGORY_BRIDGE \ - 0x085AFF00L,0x62CE,0x11CF,0xA5,0xD6,0x28,0xDB,0x04,0xC1,0x00,0x00 -DEFINE_GUIDSTRUCT("085AFF00-62CE-11CF-A5D6-28DB04C10000",KSCATEGORY_BRIDGE); -#define KSCATEGORY_BRIDGE DEFINE_GUIDNAMED(KSCATEGORY_BRIDGE) - -#define STATIC_KSCATEGORY_CAPTURE \ - 0x65E8773DL,0x8F56,0x11D0,0xA3,0xB9,0x00,0xA0,0xC9,0x22,0x31,0x96 -DEFINE_GUIDSTRUCT("65E8773D-8F56-11D0-A3B9-00A0C9223196",KSCATEGORY_CAPTURE); -#define KSCATEGORY_CAPTURE DEFINE_GUIDNAMED(KSCATEGORY_CAPTURE) - -#define STATIC_KSCATEGORY_RENDER \ - 0x65E8773EL,0x8F56,0x11D0,0xA3,0xB9,0x00,0xA0,0xC9,0x22,0x31,0x96 -DEFINE_GUIDSTRUCT("65E8773E-8F56-11D0-A3B9-00A0C9223196",KSCATEGORY_RENDER); -#define KSCATEGORY_RENDER DEFINE_GUIDNAMED(KSCATEGORY_RENDER) - -#define STATIC_KSCATEGORY_MIXER \ - 0xAD809C00L,0x7B88,0x11D0,0xA5,0xD6,0x28,0xDB,0x04,0xC1,0x00,0x00 -DEFINE_GUIDSTRUCT("AD809C00-7B88-11D0-A5D6-28DB04C10000",KSCATEGORY_MIXER); -#define KSCATEGORY_MIXER DEFINE_GUIDNAMED(KSCATEGORY_MIXER) - -#define STATIC_KSCATEGORY_SPLITTER \ - 0x0A4252A0L,0x7E70,0x11D0,0xA5,0xD6,0x28,0xDB,0x04,0xC1,0x00,0x00 -DEFINE_GUIDSTRUCT("0A4252A0-7E70-11D0-A5D6-28DB04C10000",KSCATEGORY_SPLITTER); -#define KSCATEGORY_SPLITTER DEFINE_GUIDNAMED(KSCATEGORY_SPLITTER) - -#define STATIC_KSCATEGORY_DATACOMPRESSOR \ - 0x1E84C900L,0x7E70,0x11D0,0xA5,0xD6,0x28,0xDB,0x04,0xC1,0x00,0x00 -DEFINE_GUIDSTRUCT("1E84C900-7E70-11D0-A5D6-28DB04C10000",KSCATEGORY_DATACOMPRESSOR); -#define KSCATEGORY_DATACOMPRESSOR DEFINE_GUIDNAMED(KSCATEGORY_DATACOMPRESSOR) - -#define STATIC_KSCATEGORY_DATADECOMPRESSOR \ - 0x2721AE20L,0x7E70,0x11D0,0xA5,0xD6,0x28,0xDB,0x04,0xC1,0x00,0x00 -DEFINE_GUIDSTRUCT("2721AE20-7E70-11D0-A5D6-28DB04C10000",KSCATEGORY_DATADECOMPRESSOR); -#define KSCATEGORY_DATADECOMPRESSOR DEFINE_GUIDNAMED(KSCATEGORY_DATADECOMPRESSOR) - -#define STATIC_KSCATEGORY_DATATRANSFORM \ - 0x2EB07EA0L,0x7E70,0x11D0,0xA5,0xD6,0x28,0xDB,0x04,0xC1,0x00,0x00 -DEFINE_GUIDSTRUCT("2EB07EA0-7E70-11D0-A5D6-28DB04C10000",KSCATEGORY_DATATRANSFORM); -#define KSCATEGORY_DATATRANSFORM DEFINE_GUIDNAMED(KSCATEGORY_DATATRANSFORM) - -#define STATIC_KSCATEGORY_COMMUNICATIONSTRANSFORM \ - 0xCF1DDA2CL,0x9743,0x11D0,0xA3,0xEE,0x00,0xA0,0xC9,0x22,0x31,0x96 -DEFINE_GUIDSTRUCT("CF1DDA2C-9743-11D0-A3EE-00A0C9223196",KSCATEGORY_COMMUNICATIONSTRANSFORM); -#define KSCATEGORY_COMMUNICATIONSTRANSFORM DEFINE_GUIDNAMED(KSCATEGORY_COMMUNICATIONSTRANSFORM) - -#define STATIC_KSCATEGORY_INTERFACETRANSFORM \ - 0xCF1DDA2DL,0x9743,0x11D0,0xA3,0xEE,0x00,0xA0,0xC9,0x22,0x31,0x96 -DEFINE_GUIDSTRUCT("CF1DDA2D-9743-11D0-A3EE-00A0C9223196",KSCATEGORY_INTERFACETRANSFORM); -#define KSCATEGORY_INTERFACETRANSFORM DEFINE_GUIDNAMED(KSCATEGORY_INTERFACETRANSFORM) - -#define STATIC_KSCATEGORY_MEDIUMTRANSFORM \ - 0xCF1DDA2EL,0x9743,0x11D0,0xA3,0xEE,0x00,0xA0,0xC9,0x22,0x31,0x96 -DEFINE_GUIDSTRUCT("CF1DDA2E-9743-11D0-A3EE-00A0C9223196",KSCATEGORY_MEDIUMTRANSFORM); -#define KSCATEGORY_MEDIUMTRANSFORM DEFINE_GUIDNAMED(KSCATEGORY_MEDIUMTRANSFORM) - -#define STATIC_KSCATEGORY_FILESYSTEM \ - 0x760FED5EL,0x9357,0x11D0,0xA3,0xCC,0x00,0xA0,0xC9,0x22,0x31,0x96 -DEFINE_GUIDSTRUCT("760FED5E-9357-11D0-A3CC-00A0C9223196",KSCATEGORY_FILESYSTEM); -#define KSCATEGORY_FILESYSTEM DEFINE_GUIDNAMED(KSCATEGORY_FILESYSTEM) - -#define STATIC_KSCATEGORY_CLOCK \ - 0x53172480L,0x4791,0x11D0,0xA5,0xD6,0x28,0xDB,0x04,0xC1,0x00,0x00 -DEFINE_GUIDSTRUCT("53172480-4791-11D0-A5D6-28DB04C10000",KSCATEGORY_CLOCK); -#define KSCATEGORY_CLOCK DEFINE_GUIDNAMED(KSCATEGORY_CLOCK) - -#define STATIC_KSCATEGORY_PROXY \ - 0x97EBAACAL,0x95BD,0x11D0,0xA3,0xEA,0x00,0xA0,0xC9,0x22,0x31,0x96 -DEFINE_GUIDSTRUCT("97EBAACA-95BD-11D0-A3EA-00A0C9223196",KSCATEGORY_PROXY); -#define KSCATEGORY_PROXY DEFINE_GUIDNAMED(KSCATEGORY_PROXY) - -#define STATIC_KSCATEGORY_QUALITY \ - 0x97EBAACBL,0x95BD,0x11D0,0xA3,0xEA,0x00,0xA0,0xC9,0x22,0x31,0x96 -DEFINE_GUIDSTRUCT("97EBAACB-95BD-11D0-A3EA-00A0C9223196",KSCATEGORY_QUALITY); -#define KSCATEGORY_QUALITY DEFINE_GUIDNAMED(KSCATEGORY_QUALITY) - -typedef struct { - ULONG FromNode; - ULONG FromNodePin; - ULONG ToNode; - ULONG ToNodePin; -} KSTOPOLOGY_CONNECTION,*PKSTOPOLOGY_CONNECTION; - -typedef struct { - ULONG CategoriesCount; - const GUID *Categories; - ULONG TopologyNodesCount; - const GUID *TopologyNodes; - ULONG TopologyConnectionsCount; - const KSTOPOLOGY_CONNECTION *TopologyConnections; - const GUID *TopologyNodesNames; - ULONG Reserved; -} KSTOPOLOGY,*PKSTOPOLOGY; - -#define KSFILTER_NODE ((ULONG)-1) -#define KSALL_NODES ((ULONG)-1) - -typedef struct { - ULONG CreateFlags; - ULONG Node; -} KSNODE_CREATE,*PKSNODE_CREATE; - -#define STATIC_KSTIME_FORMAT_NONE STATIC_GUID_NULL -#define KSTIME_FORMAT_NONE GUID_NULL - -#define STATIC_KSTIME_FORMAT_FRAME \ - 0x7b785570L,0x8c82,0x11cf,0xbc,0x0c,0x00,0xaa,0x00,0xac,0x74,0xf6 -DEFINE_GUIDSTRUCT("7b785570-8c82-11cf-bc0c-00aa00ac74f6",KSTIME_FORMAT_FRAME); -#define KSTIME_FORMAT_FRAME DEFINE_GUIDNAMED(KSTIME_FORMAT_FRAME) - -#define STATIC_KSTIME_FORMAT_BYTE \ - 0x7b785571L,0x8c82,0x11cf,0xbc,0x0c,0x00,0xaa,0x00,0xac,0x74,0xf6 -DEFINE_GUIDSTRUCT("7b785571-8c82-11cf-bc0c-00aa00ac74f6",KSTIME_FORMAT_BYTE); -#define KSTIME_FORMAT_BYTE DEFINE_GUIDNAMED(KSTIME_FORMAT_BYTE) - -#define STATIC_KSTIME_FORMAT_SAMPLE \ - 0x7b785572L,0x8c82,0x11cf,0xbc,0x0c,0x00,0xaa,0x00,0xac,0x74,0xf6 -DEFINE_GUIDSTRUCT("7b785572-8c82-11cf-bc0c-00aa00ac74f6",KSTIME_FORMAT_SAMPLE); -#define KSTIME_FORMAT_SAMPLE DEFINE_GUIDNAMED(KSTIME_FORMAT_SAMPLE) - -#define STATIC_KSTIME_FORMAT_FIELD \ - 0x7b785573L,0x8c82,0x11cf,0xbc,0x0c,0x00,0xaa,0x00,0xac,0x74,0xf6 -DEFINE_GUIDSTRUCT("7b785573-8c82-11cf-bc0c-00aa00ac74f6",KSTIME_FORMAT_FIELD); -#define KSTIME_FORMAT_FIELD DEFINE_GUIDNAMED(KSTIME_FORMAT_FIELD) - -#define STATIC_KSTIME_FORMAT_MEDIA_TIME \ - 0x7b785574L,0x8c82,0x11cf,0xbc,0x0c,0x00,0xaa,0x00,0xac,0x74,0xf6 -DEFINE_GUIDSTRUCT("7b785574-8c82-11cf-bc0c-00aa00ac74f6",KSTIME_FORMAT_MEDIA_TIME); -#define KSTIME_FORMAT_MEDIA_TIME DEFINE_GUIDNAMED(KSTIME_FORMAT_MEDIA_TIME) - -typedef KSIDENTIFIER KSPIN_INTERFACE,*PKSPIN_INTERFACE; - -#define STATIC_KSINTERFACESETID_Standard \ - 0x1A8766A0L,0x62CE,0x11CF,0xA5,0xD6,0x28,0xDB,0x04,0xC1,0x00,0x00 -DEFINE_GUIDSTRUCT("1A8766A0-62CE-11CF-A5D6-28DB04C10000",KSINTERFACESETID_Standard); -#define KSINTERFACESETID_Standard DEFINE_GUIDNAMED(KSINTERFACESETID_Standard) - -typedef enum { - KSINTERFACE_STANDARD_STREAMING, - KSINTERFACE_STANDARD_LOOPED_STREAMING, - KSINTERFACE_STANDARD_CONTROL -} KSINTERFACE_STANDARD; - -#define STATIC_KSINTERFACESETID_FileIo \ - 0x8C6F932CL,0xE771,0x11D0,0xB8,0xFF,0x00,0xA0,0xC9,0x22,0x31,0x96 -DEFINE_GUIDSTRUCT("8C6F932C-E771-11D0-B8FF-00A0C9223196",KSINTERFACESETID_FileIo); -#define KSINTERFACESETID_FileIo DEFINE_GUIDNAMED(KSINTERFACESETID_FileIo) - -typedef enum { - KSINTERFACE_FILEIO_STREAMING -} KSINTERFACE_FILEIO; - -#define KSMEDIUM_TYPE_ANYINSTANCE 0 - -#define STATIC_KSMEDIUMSETID_Standard \ - 0x4747B320L,0x62CE,0x11CF,0xA5,0xD6,0x28,0xDB,0x04,0xC1,0x00,0x00 -DEFINE_GUIDSTRUCT("4747B320-62CE-11CF-A5D6-28DB04C10000",KSMEDIUMSETID_Standard); -#define KSMEDIUMSETID_Standard DEFINE_GUIDNAMED(KSMEDIUMSETID_Standard) - -#define KSMEDIUM_STANDARD_DEVIO KSMEDIUM_TYPE_ANYINSTANCE - -#define STATIC_KSPROPSETID_Pin \ - 0x8C134960L,0x51AD,0x11CF,0x87,0x8A,0x94,0xF8,0x01,0xC1,0x00,0x00 -DEFINE_GUIDSTRUCT("8C134960-51AD-11CF-878A-94F801C10000",KSPROPSETID_Pin); -#define KSPROPSETID_Pin DEFINE_GUIDNAMED(KSPROPSETID_Pin) - -typedef enum { - KSPROPERTY_PIN_CINSTANCES, - KSPROPERTY_PIN_CTYPES, - KSPROPERTY_PIN_DATAFLOW, - KSPROPERTY_PIN_DATARANGES, - KSPROPERTY_PIN_DATAINTERSECTION, - KSPROPERTY_PIN_INTERFACES, - KSPROPERTY_PIN_MEDIUMS, - KSPROPERTY_PIN_COMMUNICATION, - KSPROPERTY_PIN_GLOBALCINSTANCES, - KSPROPERTY_PIN_NECESSARYINSTANCES, - KSPROPERTY_PIN_PHYSICALCONNECTION, - KSPROPERTY_PIN_CATEGORY, - KSPROPERTY_PIN_NAME, - KSPROPERTY_PIN_CONSTRAINEDDATARANGES, - KSPROPERTY_PIN_PROPOSEDATAFORMAT -} KSPROPERTY_PIN; - -typedef struct { - KSPROPERTY Property; - ULONG PinId; - ULONG Reserved; -} KSP_PIN,*PKSP_PIN; - -#define KSINSTANCE_INDETERMINATE ((ULONG)-1) - -typedef struct { - ULONG PossibleCount; - ULONG CurrentCount; -} KSPIN_CINSTANCES,*PKSPIN_CINSTANCES; - -typedef enum { - KSPIN_DATAFLOW_IN = 1, - KSPIN_DATAFLOW_OUT -} KSPIN_DATAFLOW,*PKSPIN_DATAFLOW; - -#define KSDATAFORMAT_BIT_TEMPORAL_COMPRESSION 0 -#define KSDATAFORMAT_TEMPORAL_COMPRESSION (1 << KSDATAFORMAT_BIT_TEMPORAL_COMPRESSION) -#define KSDATAFORMAT_BIT_ATTRIBUTES 1 -#define KSDATAFORMAT_ATTRIBUTES (1 << KSDATAFORMAT_BIT_ATTRIBUTES) - -#define KSDATARANGE_BIT_ATTRIBUTES 1 -#define KSDATARANGE_ATTRIBUTES (1 << KSDATARANGE_BIT_ATTRIBUTES) -#define KSDATARANGE_BIT_REQUIRED_ATTRIBUTES 2 -#define KSDATARANGE_REQUIRED_ATTRIBUTES (1 << KSDATARANGE_BIT_REQUIRED_ATTRIBUTES) - -typedef union { - __MINGW_EXTENSION struct { - ULONG FormatSize; - ULONG Flags; - ULONG SampleSize; - ULONG Reserved; - GUID MajorFormat; - GUID SubFormat; - GUID Specifier; - }; - LONGLONG Alignment; -} KSDATAFORMAT,*PKSDATAFORMAT,KSDATARANGE,*PKSDATARANGE; - -#define KSATTRIBUTE_REQUIRED 0x00000001 - -typedef struct { - ULONG Size; - ULONG Flags; - GUID Attribute; -} KSATTRIBUTE,*PKSATTRIBUTE; - -#if defined(_NTDDK_) -typedef struct { - ULONG Count; - PKSATTRIBUTE *Attributes; -} KSATTRIBUTE_LIST,*PKSATTRIBUTE_LIST; -#endif /* _NTDDK_ */ - -typedef enum { - KSPIN_COMMUNICATION_NONE, - KSPIN_COMMUNICATION_SINK, - KSPIN_COMMUNICATION_SOURCE, - KSPIN_COMMUNICATION_BOTH, - KSPIN_COMMUNICATION_BRIDGE -} KSPIN_COMMUNICATION,*PKSPIN_COMMUNICATION; - -typedef KSIDENTIFIER KSPIN_MEDIUM,*PKSPIN_MEDIUM; - -typedef struct { - KSPIN_INTERFACE Interface; - KSPIN_MEDIUM Medium; - ULONG PinId; - HANDLE PinToHandle; - KSPRIORITY Priority; -} KSPIN_CONNECT,*PKSPIN_CONNECT; - -typedef struct { - ULONG Size; - ULONG Pin; - WCHAR SymbolicLinkName[1]; -} KSPIN_PHYSICALCONNECTION,*PKSPIN_PHYSICALCONNECTION; - -#if defined(_NTDDK_) -typedef NTSTATUS (*PFNKSINTERSECTHANDLER) ( PIRP Irp, PKSP_PIN Pin, - PKSDATARANGE DataRange, - PVOID Data); -typedef NTSTATUS (*PFNKSINTERSECTHANDLEREX)(PVOID Context, PIRP Irp, - PKSP_PIN Pin, - PKSDATARANGE DataRange, - PKSDATARANGE MatchingDataRange, - ULONG DataBufferSize, - PVOID Data, - PULONG DataSize); -#endif /* _NTDDK_ */ - -#define DEFINE_KSPIN_INTERFACE_TABLE(tablename) \ - const KSPIN_INTERFACE tablename[] = - -#define DEFINE_KSPIN_INTERFACE_ITEM(guid,_interFace) \ - { \ - STATICGUIDOF(guid), \ - (_interFace), \ - 0 \ - } - -#define DEFINE_KSPIN_MEDIUM_TABLE(tablename) \ - const KSPIN_MEDIUM tablename[] = - -#define DEFINE_KSPIN_MEDIUM_ITEM(guid,medium) \ - DEFINE_KSPIN_INTERFACE_ITEM(guid,medium) - -#define DEFINE_KSPROPERTY_ITEM_PIN_CINSTANCES(Handler) \ - DEFINE_KSPROPERTY_ITEM( \ - KSPROPERTY_PIN_CINSTANCES, \ - (Handler), \ - sizeof(KSP_PIN), \ - sizeof(KSPIN_CINSTANCES), \ - NULL, NULL, 0, NULL, NULL, 0) - -#define DEFINE_KSPROPERTY_ITEM_PIN_CTYPES(Handler) \ - DEFINE_KSPROPERTY_ITEM( \ - KSPROPERTY_PIN_CTYPES, \ - (Handler), \ - sizeof(KSPROPERTY), \ - sizeof(ULONG), \ - NULL, NULL, 0, NULL, NULL, 0) - -#define DEFINE_KSPROPERTY_ITEM_PIN_DATAFLOW(Handler) \ - DEFINE_KSPROPERTY_ITEM( \ - KSPROPERTY_PIN_DATAFLOW, \ - (Handler), \ - sizeof(KSP_PIN), \ - sizeof(KSPIN_DATAFLOW), \ - NULL, NULL, 0, NULL, NULL, 0) - -#define DEFINE_KSPROPERTY_ITEM_PIN_DATARANGES(Handler) \ - DEFINE_KSPROPERTY_ITEM( \ - KSPROPERTY_PIN_DATARANGES, \ - (Handler), \ - sizeof(KSP_PIN), \ - 0, \ - NULL, NULL, 0, NULL, NULL, 0) - -#define DEFINE_KSPROPERTY_ITEM_PIN_DATAINTERSECTION(Handler) \ - DEFINE_KSPROPERTY_ITEM( \ - KSPROPERTY_PIN_DATAINTERSECTION, \ - (Handler), \ - sizeof(KSP_PIN) + sizeof(KSMULTIPLE_ITEM),\ - 0, \ - NULL, NULL, 0, NULL, NULL, 0) - -#define DEFINE_KSPROPERTY_ITEM_PIN_INTERFACES(Handler) \ - DEFINE_KSPROPERTY_ITEM( \ - KSPROPERTY_PIN_INTERFACES, \ - (Handler), \ - sizeof(KSP_PIN), \ - 0, \ - NULL, NULL, 0, NULL, NULL, 0) - -#define DEFINE_KSPROPERTY_ITEM_PIN_MEDIUMS(Handler) \ - DEFINE_KSPROPERTY_ITEM( \ - KSPROPERTY_PIN_MEDIUMS, \ - (Handler), \ - sizeof(KSP_PIN), \ - 0, \ - NULL, NULL, 0, NULL, NULL, 0) - -#define DEFINE_KSPROPERTY_ITEM_PIN_COMMUNICATION(Handler) \ - DEFINE_KSPROPERTY_ITEM( \ - KSPROPERTY_PIN_COMMUNICATION, \ - (Handler), \ - sizeof(KSP_PIN), \ - sizeof(KSPIN_COMMUNICATION), \ - NULL, NULL, 0, NULL, NULL, 0) - -#define DEFINE_KSPROPERTY_ITEM_PIN_GLOBALCINSTANCES(Handler) \ - DEFINE_KSPROPERTY_ITEM( \ - KSPROPERTY_PIN_GLOBALCINSTANCES, \ - (Handler), \ - sizeof(KSP_PIN), \ - sizeof(KSPIN_CINSTANCES), \ - NULL, NULL, 0, NULL, NULL, 0) - -#define DEFINE_KSPROPERTY_ITEM_PIN_NECESSARYINSTANCES(Handler) \ - DEFINE_KSPROPERTY_ITEM( \ - KSPROPERTY_PIN_NECESSARYINSTANCES, \ - (Handler), \ - sizeof(KSP_PIN), \ - sizeof(ULONG), \ - NULL, NULL, 0, NULL, NULL, 0) - -#define DEFINE_KSPROPERTY_ITEM_PIN_PHYSICALCONNECTION(Handler) \ - DEFINE_KSPROPERTY_ITEM( \ - KSPROPERTY_PIN_PHYSICALCONNECTION, \ - (Handler), \ - sizeof(KSP_PIN), \ - 0, \ - NULL, NULL, 0, NULL, NULL, 0) - -#define DEFINE_KSPROPERTY_ITEM_PIN_CATEGORY(Handler) \ - DEFINE_KSPROPERTY_ITEM( \ - KSPROPERTY_PIN_CATEGORY, \ - (Handler), \ - sizeof(KSP_PIN), \ - sizeof(GUID), \ - NULL, NULL, 0, NULL, NULL, 0) - -#define DEFINE_KSPROPERTY_ITEM_PIN_NAME(Handler) \ - DEFINE_KSPROPERTY_ITEM( \ - KSPROPERTY_PIN_NAME, \ - (Handler), \ - sizeof(KSP_PIN), \ - 0, \ - NULL, NULL, 0, NULL, NULL, 0) - -#define DEFINE_KSPROPERTY_ITEM_PIN_CONSTRAINEDDATARANGES(Handler) \ - DEFINE_KSPROPERTY_ITEM( \ - KSPROPERTY_PIN_CONSTRAINEDDATARANGES, \ - (Handler), \ - sizeof(KSP_PIN), \ - 0, \ - NULL, NULL, 0, NULL, NULL, 0) - -#define DEFINE_KSPROPERTY_ITEM_PIN_PROPOSEDATAFORMAT(Handler) \ - DEFINE_KSPROPERTY_ITEM( \ - KSPROPERTY_PIN_PROPOSEDATAFORMAT, \ - NULL, \ - sizeof(KSP_PIN), \ - sizeof(KSDATAFORMAT), \ - (Handler), NULL, 0, NULL, NULL, 0) - -#define DEFINE_KSPROPERTY_PINSET(PinSet,PropGeneral,PropInstances,PropIntersection) \ -DEFINE_KSPROPERTY_TABLE(PinSet) { \ - DEFINE_KSPROPERTY_ITEM_PIN_CINSTANCES(PropInstances), \ - DEFINE_KSPROPERTY_ITEM_PIN_CTYPES(PropGeneral), \ - DEFINE_KSPROPERTY_ITEM_PIN_DATAFLOW(PropGeneral), \ - DEFINE_KSPROPERTY_ITEM_PIN_DATARANGES(PropGeneral), \ - DEFINE_KSPROPERTY_ITEM_PIN_DATAINTERSECTION(PropIntersection), \ - DEFINE_KSPROPERTY_ITEM_PIN_INTERFACES(PropGeneral), \ - DEFINE_KSPROPERTY_ITEM_PIN_MEDIUMS(PropGeneral), \ - DEFINE_KSPROPERTY_ITEM_PIN_COMMUNICATION(PropGeneral), \ - DEFINE_KSPROPERTY_ITEM_PIN_CATEGORY(PropGeneral), \ - DEFINE_KSPROPERTY_ITEM_PIN_NAME(PropGeneral) \ -} - -#define DEFINE_KSPROPERTY_PINSETCONSTRAINED(PinSet,PropGeneral,PropInstances,PropIntersection) \ -DEFINE_KSPROPERTY_TABLE(PinSet) { \ - DEFINE_KSPROPERTY_ITEM_PIN_CINSTANCES(PropInstances), \ - DEFINE_KSPROPERTY_ITEM_PIN_CTYPES(PropGeneral), \ - DEFINE_KSPROPERTY_ITEM_PIN_DATAFLOW(PropGeneral), \ - DEFINE_KSPROPERTY_ITEM_PIN_DATARANGES(PropGeneral), \ - DEFINE_KSPROPERTY_ITEM_PIN_DATAINTERSECTION(PropIntersection), \ - DEFINE_KSPROPERTY_ITEM_PIN_INTERFACES(PropGeneral), \ - DEFINE_KSPROPERTY_ITEM_PIN_MEDIUMS(PropGeneral), \ - DEFINE_KSPROPERTY_ITEM_PIN_COMMUNICATION(PropGeneral), \ - DEFINE_KSPROPERTY_ITEM_PIN_CATEGORY(PropGeneral), \ - DEFINE_KSPROPERTY_ITEM_PIN_NAME(PropGeneral), \ - DEFINE_KSPROPERTY_ITEM_PIN_CONSTRAINEDDATARANGES(PropGeneral) \ -} - -#define STATIC_KSNAME_Filter \ - 0x9b365890L,0x165f,0x11d0,0xa1,0x95,0x00,0x20,0xaf,0xd1,0x56,0xe4 -DEFINE_GUIDSTRUCT("9b365890-165f-11d0-a195-0020afd156e4",KSNAME_Filter); -#define KSNAME_Filter DEFINE_GUIDNAMED(KSNAME_Filter) - -#define KSSTRING_Filter L"{9B365890-165F-11D0-A195-0020AFD156E4}" - -#define STATIC_KSNAME_Pin \ - 0x146F1A80L,0x4791,0x11D0,0xA5,0xD6,0x28,0xDB,0x04,0xC1,0x00,0x00 -DEFINE_GUIDSTRUCT("146F1A80-4791-11D0-A5D6-28DB04C10000",KSNAME_Pin); -#define KSNAME_Pin DEFINE_GUIDNAMED(KSNAME_Pin) - -#define KSSTRING_Pin L"{146F1A80-4791-11D0-A5D6-28DB04C10000}" - -#define STATIC_KSNAME_Clock \ - 0x53172480L,0x4791,0x11D0,0xA5,0xD6,0x28,0xDB,0x04,0xC1,0x00,0x00 -DEFINE_GUIDSTRUCT("53172480-4791-11D0-A5D6-28DB04C10000",KSNAME_Clock); -#define KSNAME_Clock DEFINE_GUIDNAMED(KSNAME_Clock) - -#define KSSTRING_Clock L"{53172480-4791-11D0-A5D6-28DB04C10000}" - -#define STATIC_KSNAME_Allocator \ - 0x642F5D00L,0x4791,0x11D0,0xA5,0xD6,0x28,0xDB,0x04,0xC1,0x00,0x00 -DEFINE_GUIDSTRUCT("642F5D00-4791-11D0-A5D6-28DB04C10000",KSNAME_Allocator); -#define KSNAME_Allocator DEFINE_GUIDNAMED(KSNAME_Allocator) - -#define KSSTRING_Allocator L"{642F5D00-4791-11D0-A5D6-28DB04C10000}" - -#define KSSTRING_AllocatorEx L"{091BB63B-603F-11D1-B067-00A0C9062802}" - -#define STATIC_KSNAME_TopologyNode \ - 0x0621061AL,0xEE75,0x11D0,0xB9,0x15,0x00,0xA0,0xC9,0x22,0x31,0x96 -DEFINE_GUIDSTRUCT("0621061A-EE75-11D0-B915-00A0C9223196",KSNAME_TopologyNode); -#define KSNAME_TopologyNode DEFINE_GUIDNAMED(KSNAME_TopologyNode) - -#define KSSTRING_TopologyNode L"{0621061A-EE75-11D0-B915-00A0C9223196}" - -#if defined(_NTDDK_) -typedef struct { - ULONG InterfacesCount; - const KSPIN_INTERFACE *Interfaces; - ULONG MediumsCount; - const KSPIN_MEDIUM *Mediums; - ULONG DataRangesCount; - const PKSDATARANGE *DataRanges; - KSPIN_DATAFLOW DataFlow; - KSPIN_COMMUNICATION Communication; - const GUID *Category; - const GUID *Name; - __MINGW_EXTENSION union { - LONGLONG Reserved; - __MINGW_EXTENSION struct { - ULONG ConstrainedDataRangesCount; - PKSDATARANGE *ConstrainedDataRanges; - }; - }; -} KSPIN_DESCRIPTOR, *PKSPIN_DESCRIPTOR; -typedef const KSPIN_DESCRIPTOR *PCKSPIN_DESCRIPTOR; - -#define DEFINE_KSPIN_DESCRIPTOR_TABLE(tablename) \ - const KSPIN_DESCRIPTOR tablename[] = - -#define DEFINE_KSPIN_DESCRIPTOR_ITEM(InterfacesCount,Interfaces,MediumsCount, Mediums,DataRangesCount,DataRanges,DataFlow,Communication)\ -{ \ - InterfacesCount, Interfaces, MediumsCount, Mediums, \ - DataRangesCount, DataRanges, DataFlow, Communication, \ - NULL, NULL, 0 \ -} - -#define DEFINE_KSPIN_DESCRIPTOR_ITEMEX(InterfacesCount,Interfaces,MediumsCount,Mediums,DataRangesCount,DataRanges,DataFlow,Communication,Category,Name)\ -{ \ - InterfacesCount, Interfaces, MediumsCount, Mediums, \ - DataRangesCount, DataRanges, DataFlow, Communication, \ - Category, Name, 0 \ -} -#endif /* _NTDDK_ */ - -#define STATIC_KSDATAFORMAT_TYPE_WILDCARD STATIC_GUID_NULL -#define KSDATAFORMAT_TYPE_WILDCARD GUID_NULL - -#define STATIC_KSDATAFORMAT_SUBTYPE_WILDCARD STATIC_GUID_NULL -#define KSDATAFORMAT_SUBTYPE_WILDCARD GUID_NULL - -#define STATIC_KSDATAFORMAT_TYPE_STREAM \ - 0xE436EB83L,0x524F,0x11CE,0x9F,0x53,0x00,0x20,0xAF,0x0B,0xA7,0x70 -DEFINE_GUIDSTRUCT("E436EB83-524F-11CE-9F53-0020AF0BA770",KSDATAFORMAT_TYPE_STREAM); -#define KSDATAFORMAT_TYPE_STREAM DEFINE_GUIDNAMED(KSDATAFORMAT_TYPE_STREAM) - -#define STATIC_KSDATAFORMAT_SUBTYPE_NONE \ - 0xE436EB8EL,0x524F,0x11CE,0x9F,0x53,0x00,0x20,0xAF,0x0B,0xA7,0x70 -DEFINE_GUIDSTRUCT("E436EB8E-524F-11CE-9F53-0020AF0BA770",KSDATAFORMAT_SUBTYPE_NONE); -#define KSDATAFORMAT_SUBTYPE_NONE DEFINE_GUIDNAMED(KSDATAFORMAT_SUBTYPE_NONE) - -#define STATIC_KSDATAFORMAT_SPECIFIER_WILDCARD STATIC_GUID_NULL -#define KSDATAFORMAT_SPECIFIER_WILDCARD GUID_NULL - -#define STATIC_KSDATAFORMAT_SPECIFIER_FILENAME \ - 0xAA797B40L,0xE974,0x11CF,0xA5,0xD6,0x28,0xDB,0x04,0xC1,0x00,0x00 -DEFINE_GUIDSTRUCT("AA797B40-E974-11CF-A5D6-28DB04C10000",KSDATAFORMAT_SPECIFIER_FILENAME); -#define KSDATAFORMAT_SPECIFIER_FILENAME DEFINE_GUIDNAMED(KSDATAFORMAT_SPECIFIER_FILENAME) - -#define STATIC_KSDATAFORMAT_SPECIFIER_FILEHANDLE \ - 0x65E8773CL,0x8F56,0x11D0,0xA3,0xB9,0x00,0xA0,0xC9,0x22,0x31,0x96 -DEFINE_GUIDSTRUCT("65E8773C-8F56-11D0-A3B9-00A0C9223196",KSDATAFORMAT_SPECIFIER_FILEHANDLE); -#define KSDATAFORMAT_SPECIFIER_FILEHANDLE DEFINE_GUIDNAMED(KSDATAFORMAT_SPECIFIER_FILEHANDLE) - -#define STATIC_KSDATAFORMAT_SPECIFIER_NONE \ - 0x0F6417D6L,0xC318,0x11D0,0xA4,0x3F,0x00,0xA0,0xC9,0x22,0x31,0x96 -DEFINE_GUIDSTRUCT("0F6417D6-C318-11D0-A43F-00A0C9223196",KSDATAFORMAT_SPECIFIER_NONE); -#define KSDATAFORMAT_SPECIFIER_NONE DEFINE_GUIDNAMED(KSDATAFORMAT_SPECIFIER_NONE) - -#define STATIC_KSPROPSETID_Quality \ - 0xD16AD380L,0xAC1A,0x11CF,0xA5,0xD6,0x28,0xDB,0x04,0xC1,0x00,0x00 -DEFINE_GUIDSTRUCT("D16AD380-AC1A-11CF-A5D6-28DB04C10000",KSPROPSETID_Quality); -#define KSPROPSETID_Quality DEFINE_GUIDNAMED(KSPROPSETID_Quality) - -typedef enum { - KSPROPERTY_QUALITY_REPORT, - KSPROPERTY_QUALITY_ERROR -} KSPROPERTY_QUALITY; - -#define DEFINE_KSPROPERTY_ITEM_QUALITY_REPORT(GetHandler,SetHandler) \ - DEFINE_KSPROPERTY_ITEM( \ - KSPROPERTY_QUALITY_REPORT, \ - (GetHandler), \ - sizeof(KSPROPERTY), \ - sizeof(KSQUALITY), \ - (SetHandler), \ - NULL, 0, NULL, NULL, 0) - -#define DEFINE_KSPROPERTY_ITEM_QUALITY_ERROR(GetHandler,SetHandler) \ - DEFINE_KSPROPERTY_ITEM( \ - KSPROPERTY_QUALITY_ERROR, \ - (GetHandler), \ - sizeof(KSPROPERTY), \ - sizeof(KSERROR), \ - (SetHandler), \ - NULL, 0, NULL, NULL, 0) - -#define STATIC_KSPROPSETID_Connection \ - 0x1D58C920L,0xAC9B,0x11CF,0xA5,0xD6,0x28,0xDB,0x04,0xC1,0x00,0x00 -DEFINE_GUIDSTRUCT("1D58C920-AC9B-11CF-A5D6-28DB04C10000",KSPROPSETID_Connection); -#define KSPROPSETID_Connection DEFINE_GUIDNAMED(KSPROPSETID_Connection) - -typedef enum { - KSPROPERTY_CONNECTION_STATE, - KSPROPERTY_CONNECTION_PRIORITY, - KSPROPERTY_CONNECTION_DATAFORMAT, - KSPROPERTY_CONNECTION_ALLOCATORFRAMING, - KSPROPERTY_CONNECTION_PROPOSEDATAFORMAT, - KSPROPERTY_CONNECTION_ACQUIREORDERING, - KSPROPERTY_CONNECTION_ALLOCATORFRAMING_EX, - KSPROPERTY_CONNECTION_STARTAT -} KSPROPERTY_CONNECTION; - -#define DEFINE_KSPROPERTY_ITEM_CONNECTION_STATE(GetHandler,SetHandler) \ - DEFINE_KSPROPERTY_ITEM( \ - KSPROPERTY_CONNECTION_STATE, \ - (GetHandler), \ - sizeof(KSPROPERTY), \ - sizeof(KSSTATE), \ - (SetHandler), \ - NULL, 0, NULL, NULL, 0) - -#define DEFINE_KSPROPERTY_ITEM_CONNECTION_PRIORITY(GetHandler,SetHandler) \ - DEFINE_KSPROPERTY_ITEM( \ - KSPROPERTY_CONNECTION_PRIORITY, \ - (GetHandler), \ - sizeof(KSPROPERTY), \ - sizeof(KSPRIORITY), \ - (SetHandler), \ - NULL, 0, NULL, NULL, 0) - -#define DEFINE_KSPROPERTY_ITEM_CONNECTION_DATAFORMAT(GetHandler,SetHandler)\ - DEFINE_KSPROPERTY_ITEM( \ - KSPROPERTY_CONNECTION_DATAFORMAT, \ - (GetHandler), \ - sizeof(KSPROPERTY), \ - 0, \ - (SetHandler), \ - NULL, 0, NULL, NULL, 0) - -#define DEFINE_KSPROPERTY_ITEM_CONNECTION_ALLOCATORFRAMING(Handler) \ - DEFINE_KSPROPERTY_ITEM( \ - KSPROPERTY_CONNECTION_ALLOCATORFRAMING, \ - (Handler), \ - sizeof(KSPROPERTY), \ - sizeof(KSALLOCATOR_FRAMING), \ - NULL, NULL, 0, NULL, NULL, 0) - -#define DEFINE_KSPROPERTY_ITEM_CONNECTION_ALLOCATORFRAMING_EX(Handler) \ - DEFINE_KSPROPERTY_ITEM( \ - KSPROPERTY_CONNECTION_ALLOCATORFRAMING_EX,\ - (Handler), \ - sizeof(KSPROPERTY), \ - 0, \ - NULL, NULL, 0, NULL, NULL, 0) - -#define DEFINE_KSPROPERTY_ITEM_CONNECTION_PROPOSEDATAFORMAT(Handler) \ - DEFINE_KSPROPERTY_ITEM( \ - KSPROPERTY_CONNECTION_PROPOSEDATAFORMAT,\ - NULL, \ - sizeof(KSPROPERTY), \ - sizeof(KSDATAFORMAT), \ - (Handler), \ - NULL, 0, NULL, NULL, 0) - -#define DEFINE_KSPROPERTY_ITEM_CONNECTION_ACQUIREORDERING(Handler) \ - DEFINE_KSPROPERTY_ITEM( \ - KSPROPERTY_CONNECTION_ACQUIREORDERING, \ - (Handler), \ - sizeof(KSPROPERTY), \ - sizeof(int), \ - NULL, NULL, 0, NULL, NULL, 0) - -#define DEFINE_KSPROPERTY_ITEM_CONNECTION_STARTAT(Handler) \ - DEFINE_KSPROPERTY_ITEM( \ - KSPROPERTY_CONNECTION_STARTAT, \ - NULL, \ - sizeof(KSPROPERTY), \ - sizeof(KSRELATIVEEVENT), \ - (Handler), \ - NULL, 0, NULL, NULL, 0) - -#define KSALLOCATOR_REQUIREMENTF_INPLACE_MODIFIER 0x00000001 -#define KSALLOCATOR_REQUIREMENTF_SYSTEM_MEMORY 0x00000002 -#define KSALLOCATOR_REQUIREMENTF_FRAME_INTEGRITY 0x00000004 -#define KSALLOCATOR_REQUIREMENTF_MUST_ALLOCATE 0x00000008 -#define KSALLOCATOR_REQUIREMENTF_PREFERENCES_ONLY 0x80000000 - -#define KSALLOCATOR_OPTIONF_COMPATIBLE 0x00000001 -#define KSALLOCATOR_OPTIONF_SYSTEM_MEMORY 0x00000002 -#define KSALLOCATOR_OPTIONF_VALID 0x00000003 - -#define KSALLOCATOR_FLAG_PARTIAL_READ_SUPPORT 0x00000010 -#define KSALLOCATOR_FLAG_DEVICE_SPECIFIC 0x00000020 -#define KSALLOCATOR_FLAG_CAN_ALLOCATE 0x00000040 -#define KSALLOCATOR_FLAG_INSIST_ON_FRAMESIZE_RATIO 0x00000080 -#define KSALLOCATOR_FLAG_NO_FRAME_INTEGRITY 0x00000100 -#define KSALLOCATOR_FLAG_MULTIPLE_OUTPUT 0x00000200 -#define KSALLOCATOR_FLAG_CYCLE 0x00000400 -#define KSALLOCATOR_FLAG_ALLOCATOR_EXISTS 0x00000800 -#define KSALLOCATOR_FLAG_INDEPENDENT_RANGES 0x00001000 -#define KSALLOCATOR_FLAG_ATTENTION_STEPPING 0x00002000 - -typedef struct { - __MINGW_EXTENSION union { - ULONG OptionsFlags; - ULONG RequirementsFlags; - }; -#if defined(_NTDDK_) - POOL_TYPE PoolType; -#else - ULONG PoolType; -#endif /* _NTDDK_ */ - ULONG Frames; - ULONG FrameSize; - ULONG FileAlignment; - ULONG Reserved; -} KSALLOCATOR_FRAMING,*PKSALLOCATOR_FRAMING; - -#if defined(_NTDDK_) -typedef PVOID (*PFNKSDEFAULTALLOCATE)(PVOID Context); -typedef VOID (*PFNKSDEFAULTFREE)(PVOID Context, PVOID Buffer); -typedef NTSTATUS (*PFNKSINITIALIZEALLOCATOR)(PVOID InitialContext, - PKSALLOCATOR_FRAMING AllocatorFraming, - PVOID* Context); -typedef VOID (*PFNKSDELETEALLOCATOR) (PVOID Context); -#endif /* _NTDDK_ */ - -typedef struct { - ULONG MinFrameSize; - ULONG MaxFrameSize; - ULONG Stepping; -} KS_FRAMING_RANGE,*PKS_FRAMING_RANGE; - -typedef struct { - KS_FRAMING_RANGE Range; - ULONG InPlaceWeight; - ULONG NotInPlaceWeight; -} KS_FRAMING_RANGE_WEIGHTED,*PKS_FRAMING_RANGE_WEIGHTED; - -typedef struct { - ULONG RatioNumerator; - ULONG RatioDenominator; - ULONG RatioConstantMargin; -} KS_COMPRESSION,*PKS_COMPRESSION; - -typedef struct { - GUID MemoryType; - GUID BusType; - ULONG MemoryFlags; - ULONG BusFlags; - ULONG Flags; - ULONG Frames; - ULONG FileAlignment; - ULONG MemoryTypeWeight; - KS_FRAMING_RANGE PhysicalRange; - KS_FRAMING_RANGE_WEIGHTED FramingRange; -} KS_FRAMING_ITEM,*PKS_FRAMING_ITEM; - -typedef struct { - ULONG CountItems; - ULONG PinFlags; - KS_COMPRESSION OutputCompression; - ULONG PinWeight; - KS_FRAMING_ITEM FramingItem[1]; -} KSALLOCATOR_FRAMING_EX,*PKSALLOCATOR_FRAMING_EX; - -#define KSMEMORY_TYPE_WILDCARD GUID_NULL -#define STATIC_KSMEMORY_TYPE_WILDCARD STATIC_GUID_NULL - -#define KSMEMORY_TYPE_DONT_CARE GUID_NULL -#define STATIC_KSMEMORY_TYPE_DONT_CARE STATIC_GUID_NULL - -#define KS_TYPE_DONT_CARE GUID_NULL -#define STATIC_KS_TYPE_DONT_CARE STATIC_GUID_NULL - -#define STATIC_KSMEMORY_TYPE_SYSTEM \ - 0x091bb638L,0x603f,0x11d1,0xb0,0x67,0x00,0xa0,0xc9,0x06,0x28,0x02 -DEFINE_GUIDSTRUCT("091bb638-603f-11d1-b067-00a0c9062802",KSMEMORY_TYPE_SYSTEM); -#define KSMEMORY_TYPE_SYSTEM DEFINE_GUIDNAMED(KSMEMORY_TYPE_SYSTEM) - -#define STATIC_KSMEMORY_TYPE_USER \ - 0x8cb0fc28L,0x7893,0x11d1,0xb0,0x69,0x00,0xa0,0xc9,0x06,0x28,0x02 -DEFINE_GUIDSTRUCT("8cb0fc28-7893-11d1-b069-00a0c9062802",KSMEMORY_TYPE_USER); -#define KSMEMORY_TYPE_USER DEFINE_GUIDNAMED(KSMEMORY_TYPE_USER) - -#define STATIC_KSMEMORY_TYPE_KERNEL_PAGED \ - 0xd833f8f8L,0x7894,0x11d1,0xb0,0x69,0x00,0xa0,0xc9,0x06,0x28,0x02 -DEFINE_GUIDSTRUCT("d833f8f8-7894-11d1-b069-00a0c9062802",KSMEMORY_TYPE_KERNEL_PAGED); -#define KSMEMORY_TYPE_KERNEL_PAGED DEFINE_GUIDNAMED(KSMEMORY_TYPE_KERNEL_PAGED) - -#define STATIC_KSMEMORY_TYPE_KERNEL_NONPAGED \ - 0x4a6d5fc4L,0x7895,0x11d1,0xb0,0x69,0x00,0xa0,0xc9,0x06,0x28,0x02 -DEFINE_GUIDSTRUCT("4a6d5fc4-7895-11d1-b069-00a0c9062802",KSMEMORY_TYPE_KERNEL_NONPAGED); -#define KSMEMORY_TYPE_KERNEL_NONPAGED DEFINE_GUIDNAMED(KSMEMORY_TYPE_KERNEL_NONPAGED) - -#define STATIC_KSMEMORY_TYPE_DEVICE_UNKNOWN \ - 0x091bb639L,0x603f,0x11d1,0xb0,0x67,0x00,0xa0,0xc9,0x06,0x28,0x02 -DEFINE_GUIDSTRUCT("091bb639-603f-11d1-b067-00a0c9062802",KSMEMORY_TYPE_DEVICE_UNKNOWN); -#define KSMEMORY_TYPE_DEVICE_UNKNOWN DEFINE_GUIDNAMED(KSMEMORY_TYPE_DEVICE_UNKNOWN) - -#define DECLARE_SIMPLE_FRAMING_EX(FramingExName,MemoryType,Flags,Frames,Alignment,MinFrameSize,MaxFrameSize) \ -const KSALLOCATOR_FRAMING_EX FramingExName = \ -{ \ - 1, \ - 0, \ - { \ - 1, \ - 1, \ - 0 \ - }, \ - 0, \ - { \ - { \ - MemoryType, \ - STATIC_KS_TYPE_DONT_CARE, \ - 0, \ - 0, \ - Flags, \ - Frames, \ - Alignment, \ - 0, \ - { \ - 0, \ - (ULONG)-1, \ - 1 \ - }, \ - { \ - { \ - MinFrameSize, \ - MaxFrameSize, \ - 1 \ - }, \ - 0, \ - 0 \ - } \ - } \ - } \ -} - -#define SetDefaultKsCompression(KsCompressionPointer) \ -{ \ - KsCompressionPointer->RatioNumerator = 1; \ - KsCompressionPointer->RatioDenominator = 1; \ - KsCompressionPointer->RatioConstantMargin = 0; \ -} - -#define SetDontCareKsFramingRange(KsFramingRangePointer) \ -{ \ - KsFramingRangePointer->MinFrameSize = 0; \ - KsFramingRangePointer->MaxFrameSize = (ULONG) -1; \ - KsFramingRangePointer->Stepping = 1; \ -} - -#define SetKsFramingRange(KsFramingRangePointer,P_MinFrameSize,P_MaxFrameSize) \ -{ \ - KsFramingRangePointer->MinFrameSize = P_MinFrameSize; \ - KsFramingRangePointer->MaxFrameSize = P_MaxFrameSize; \ - KsFramingRangePointer->Stepping = 1; \ -} - -#define SetKsFramingRangeWeighted(KsFramingRangeWeightedPointer,P_MinFrameSize,P_MaxFrameSize) \ -{ \ - KS_FRAMING_RANGE *KsFramingRange = \ - &KsFramingRangeWeightedPointer->Range; \ - SetKsFramingRange(KsFramingRange,P_MinFrameSize,P_MaxFrameSize);\ - KsFramingRangeWeightedPointer->InPlaceWeight = 0; \ - KsFramingRangeWeightedPointer->NotInPlaceWeight = 0; \ -} - -#define INITIALIZE_SIMPLE_FRAMING_EX(FramingExPointer,P_MemoryType,P_Flags,P_Frames,P_Alignment,P_MinFrameSize,P_MaxFrameSize) \ -{ \ - KS_COMPRESSION *KsCompression = \ - &FramingExPointer->OutputCompression; \ - KS_FRAMING_RANGE *KsFramingRange = \ - &FramingExPointer->FramingItem[0].PhysicalRange;\ - KS_FRAMING_RANGE_WEIGHTED *KsFramingRangeWeighted = \ - &FramingExPointer->FramingItem[0].FramingRange; \ - FramingExPointer->CountItems = 1; \ - FramingExPointer->PinFlags = 0; \ - SetDefaultKsCompression(KsCompression); \ - FramingExPointer->PinWeight = 0; \ - FramingExPointer->FramingItem[0].MemoryType = P_MemoryType; \ - FramingExPointer->FramingItem[0].BusType = KS_TYPE_DONT_CARE; \ - FramingExPointer->FramingItem[0].MemoryFlags = 0; \ - FramingExPointer->FramingItem[0].BusFlags = 0; \ - FramingExPointer->FramingItem[0].Flags = P_Flags; \ - FramingExPointer->FramingItem[0].Frames = P_Frames; \ - FramingExPointer->FramingItem[0].FileAlignment = P_Alignment; \ - FramingExPointer->FramingItem[0].MemoryTypeWeight = 0; \ - SetDontCareKsFramingRange(KsFramingRange); \ - SetKsFramingRangeWeighted(KsFramingRangeWeighted, \ - P_MinFrameSize,P_MaxFrameSize); \ -} - -#define STATIC_KSEVENTSETID_StreamAllocator \ - 0x75d95571L,0x073c,0x11d0,0xa1,0x61,0x00,0x20,0xaf,0xd1,0x56,0xe4 -DEFINE_GUIDSTRUCT("75d95571-073c-11d0-a161-0020afd156e4",KSEVENTSETID_StreamAllocator); -#define KSEVENTSETID_StreamAllocator DEFINE_GUIDNAMED(KSEVENTSETID_StreamAllocator) - -typedef enum { - KSEVENT_STREAMALLOCATOR_INTERNAL_FREEFRAME, - KSEVENT_STREAMALLOCATOR_FREEFRAME -} KSEVENT_STREAMALLOCATOR; - -#define STATIC_KSMETHODSETID_StreamAllocator \ - 0xcf6e4341L,0xec87,0x11cf,0xa1,0x30,0x00,0x20,0xaf,0xd1,0x56,0xe4 -DEFINE_GUIDSTRUCT("cf6e4341-ec87-11cf-a130-0020afd156e4",KSMETHODSETID_StreamAllocator); -#define KSMETHODSETID_StreamAllocator DEFINE_GUIDNAMED(KSMETHODSETID_StreamAllocator) - -typedef enum { - KSMETHOD_STREAMALLOCATOR_ALLOC, - KSMETHOD_STREAMALLOCATOR_FREE -} KSMETHOD_STREAMALLOCATOR; - -#define DEFINE_KSMETHOD_ITEM_STREAMALLOCATOR_ALLOC(Handler) \ - DEFINE_KSMETHOD_ITEM( \ - KSMETHOD_STREAMALLOCATOR_ALLOC, \ - KSMETHOD_TYPE_WRITE, \ - (Handler), \ - sizeof(KSMETHOD), \ - sizeof(PVOID), \ - NULL) - -#define DEFINE_KSMETHOD_ITEM_STREAMALLOCATOR_FREE(Handler) \ - DEFINE_KSMETHOD_ITEM( \ - KSMETHOD_STREAMALLOCATOR_FREE, \ - KSMETHOD_TYPE_READ, \ - (Handler), \ - sizeof(KSMETHOD), \ - sizeof(PVOID), \ - NULL) - -#define DEFINE_KSMETHOD_ALLOCATORSET(AllocatorSet,MethodAlloc,MethodFree)\ -DEFINE_KSMETHOD_TABLE(AllocatorSet) { \ - DEFINE_KSMETHOD_ITEM_STREAMALLOCATOR_ALLOC(MethodAlloc), \ - DEFINE_KSMETHOD_ITEM_STREAMALLOCATOR_FREE(MethodFree) \ -} - -#define STATIC_KSPROPSETID_StreamAllocator \ - 0xcf6e4342L,0xec87,0x11cf,0xa1,0x30,0x00,0x20,0xaf,0xd1,0x56,0xe4 -DEFINE_GUIDSTRUCT("cf6e4342-ec87-11cf-a130-0020afd156e4",KSPROPSETID_StreamAllocator); -#define KSPROPSETID_StreamAllocator DEFINE_GUIDNAMED(KSPROPSETID_StreamAllocator) - -#if defined(_NTDDK_) -typedef enum { - KSPROPERTY_STREAMALLOCATOR_FUNCTIONTABLE, - KSPROPERTY_STREAMALLOCATOR_STATUS -} KSPROPERTY_STREAMALLOCATOR; - -#define DEFINE_KSPROPERTY_ITEM_STREAMALLOCATOR_FUNCTIONTABLE(Handler) \ - DEFINE_KSPROPERTY_ITEM( \ - KSPROPERTY_STREAMALLOCATOR_FUNCTIONTABLE,\ - (Handler), \ - sizeof(KSPROPERTY), \ - sizeof(KSSTREAMALLOCATOR_FUNCTIONTABLE),\ - NULL, NULL, 0, NULL, NULL, 0) - -#define DEFINE_KSPROPERTY_ITEM_STREAMALLOCATOR_STATUS(Handler) \ - DEFINE_KSPROPERTY_ITEM( \ - KSPROPERTY_STREAMALLOCATOR_STATUS, \ - (Handler), \ - sizeof(KSPROPERTY), \ - sizeof(KSSTREAMALLOCATOR_STATUS), \ - NULL, NULL, 0, NULL, NULL, 0) - -#define DEFINE_KSPROPERTY_ALLOCATORSET(AllocatorSet,PropFunctionTable,PropStatus)\ -DEFINE_KSPROPERTY_TABLE(AllocatorSet) { \ - DEFINE_KSPROPERTY_ITEM_STREAMALLOCATOR_STATUS(PropStatus), \ - DEFINE_KSPROPERTY_ITEM_STREAMALLOCATOR_FUNCTIONTABLE(PropFunctionTable)\ -} - -typedef NTSTATUS (*PFNALLOCATOR_ALLOCATEFRAME) (PFILE_OBJECT FileObject, - PVOID *Frame); -typedef VOID (*PFNALLOCATOR_FREEFRAME) (PFILE_OBJECT FileObject, PVOID Frame); - -typedef struct { - PFNALLOCATOR_ALLOCATEFRAME AllocateFrame; - PFNALLOCATOR_FREEFRAME FreeFrame; -} KSSTREAMALLOCATOR_FUNCTIONTABLE, *PKSSTREAMALLOCATOR_FUNCTIONTABLE; -#endif /* _NTDDK_ */ - -typedef struct { - KSALLOCATOR_FRAMING Framing; - ULONG AllocatedFrames; - ULONG Reserved; -} KSSTREAMALLOCATOR_STATUS,*PKSSTREAMALLOCATOR_STATUS; - -typedef struct { - KSALLOCATOR_FRAMING_EX Framing; - ULONG AllocatedFrames; - ULONG Reserved; -} KSSTREAMALLOCATOR_STATUS_EX,*PKSSTREAMALLOCATOR_STATUS_EX; - -#define KSSTREAM_HEADER_OPTIONSF_SPLICEPOINT 0x00000001 -#define KSSTREAM_HEADER_OPTIONSF_PREROLL 0x00000002 -#define KSSTREAM_HEADER_OPTIONSF_DATADISCONTINUITY 0x00000004 -#define KSSTREAM_HEADER_OPTIONSF_TYPECHANGED 0x00000008 -#define KSSTREAM_HEADER_OPTIONSF_TIMEVALID 0x00000010 -#define KSSTREAM_HEADER_OPTIONSF_TIMEDISCONTINUITY 0x00000040 -#define KSSTREAM_HEADER_OPTIONSF_FLUSHONPAUSE 0x00000080 -#define KSSTREAM_HEADER_OPTIONSF_DURATIONVALID 0x00000100 -#define KSSTREAM_HEADER_OPTIONSF_ENDOFSTREAM 0x00000200 -#define KSSTREAM_HEADER_OPTIONSF_LOOPEDDATA 0x80000000 - -typedef struct { - LONGLONG Time; - ULONG Numerator; - ULONG Denominator; -} KSTIME,*PKSTIME; - -typedef struct { - ULONG Size; - ULONG TypeSpecificFlags; - KSTIME PresentationTime; - LONGLONG Duration; - ULONG FrameExtent; - ULONG DataUsed; - PVOID Data; - ULONG OptionsFlags; -#ifdef _WIN64 - ULONG Reserved; -#endif -} KSSTREAM_HEADER,*PKSSTREAM_HEADER; - -#define STATIC_KSPROPSETID_StreamInterface \ - 0x1fdd8ee1L,0x9cd3,0x11d0,0x82,0xaa,0x00,0x00,0xf8,0x22,0xfe,0x8a -DEFINE_GUIDSTRUCT("1fdd8ee1-9cd3-11d0-82aa-0000f822fe8a",KSPROPSETID_StreamInterface); -#define KSPROPSETID_StreamInterface DEFINE_GUIDNAMED(KSPROPSETID_StreamInterface) - -typedef enum { - KSPROPERTY_STREAMINTERFACE_HEADERSIZE -} KSPROPERTY_STREAMINTERFACE; - -#define DEFINE_KSPROPERTY_ITEM_STREAMINTERFACE_HEADERSIZE(GetHandler) \ - DEFINE_KSPROPERTY_ITEM( \ - KSPROPERTY_STREAMINTERFACE_HEADERSIZE, \ - (GetHandler), \ - sizeof(KSPROPERTY), \ - sizeof(ULONG), \ - NULL,NULL,0,NULL,NULL,0) - -#define DEFINE_KSPROPERTY_STREAMINTERFACESET(StreamInterfaceSet,HeaderSizeHandler) \ -DEFINE_KSPROPERTY_TABLE(StreamInterfaceSet) { \ - DEFINE_KSPROPERTY_ITEM_STREAMINTERFACE_HEADERSIZE(HeaderSizeHandler)\ -} - -#define STATIC_KSPROPSETID_Stream \ - 0x65aaba60L,0x98ae,0x11cf,0xa1,0x0d,0x00,0x20,0xaf,0xd1,0x56,0xe4 -DEFINE_GUIDSTRUCT("65aaba60-98ae-11cf-a10d-0020afd156e4",KSPROPSETID_Stream); -#define KSPROPSETID_Stream DEFINE_GUIDNAMED(KSPROPSETID_Stream) - -typedef enum { - KSPROPERTY_STREAM_ALLOCATOR, - KSPROPERTY_STREAM_QUALITY, - KSPROPERTY_STREAM_DEGRADATION, - KSPROPERTY_STREAM_MASTERCLOCK, - KSPROPERTY_STREAM_TIMEFORMAT, - KSPROPERTY_STREAM_PRESENTATIONTIME, - KSPROPERTY_STREAM_PRESENTATIONEXTENT, - KSPROPERTY_STREAM_FRAMETIME, - KSPROPERTY_STREAM_RATECAPABILITY, - KSPROPERTY_STREAM_RATE, - KSPROPERTY_STREAM_PIPE_ID -} KSPROPERTY_STREAM; - -#define DEFINE_KSPROPERTY_ITEM_STREAM_ALLOCATOR(GetHandler,SetHandler) \ - DEFINE_KSPROPERTY_ITEM( \ - KSPROPERTY_STREAM_ALLOCATOR, \ - (GetHandler), \ - sizeof(KSPROPERTY), \ - sizeof(HANDLE), \ - (SetHandler), \ - NULL, 0, NULL, NULL, 0) - -#define DEFINE_KSPROPERTY_ITEM_STREAM_QUALITY(Handler) \ - DEFINE_KSPROPERTY_ITEM( \ - KSPROPERTY_STREAM_QUALITY, \ - (Handler), \ - sizeof(KSPROPERTY), \ - sizeof(KSQUALITY_MANAGER), \ - NULL, NULL, 0, NULL, NULL, 0) - -#define DEFINE_KSPROPERTY_ITEM_STREAM_DEGRADATION(GetHandler,SetHandler)\ - DEFINE_KSPROPERTY_ITEM( \ - KSPROPERTY_STREAM_DEGRADATION, \ - (GetHandler), \ - sizeof(KSPROPERTY), \ - 0, \ - (SetHandler), \ - NULL, 0, NULL, NULL, 0) - -#define DEFINE_KSPROPERTY_ITEM_STREAM_MASTERCLOCK(GetHandler,SetHandler)\ - DEFINE_KSPROPERTY_ITEM( \ - KSPROPERTY_STREAM_MASTERCLOCK, \ - (GetHandler), \ - sizeof(KSPROPERTY), \ - sizeof(HANDLE), \ - (SetHandler), \ - NULL, 0, NULL, NULL, 0) - -#define DEFINE_KSPROPERTY_ITEM_STREAM_TIMEFORMAT(Handler) \ - DEFINE_KSPROPERTY_ITEM( \ - KSPROPERTY_STREAM_TIMEFORMAT, \ - (Handler), \ - sizeof(KSPROPERTY), \ - sizeof(GUID), \ - NULL, NULL, 0, NULL, NULL, 0) - -#define DEFINE_KSPROPERTY_ITEM_STREAM_PRESENTATIONTIME(GetHandler,SetHandler)\ - DEFINE_KSPROPERTY_ITEM( \ - KSPROPERTY_STREAM_PRESENTATIONTIME, \ - (GetHandler), \ - sizeof(KSPROPERTY), \ - sizeof(KSTIME), \ - (SetHandler), \ - NULL, 0, NULL, NULL, 0) - -#define DEFINE_KSPROPERTY_ITEM_STREAM_PRESENTATIONEXTENT(Handler) \ - DEFINE_KSPROPERTY_ITEM( \ - KSPROPERTY_STREAM_PRESENTATIONEXTENT, \ - (Handler), \ - sizeof(KSPROPERTY), \ - sizeof(LONGLONG), \ - NULL, NULL, 0, NULL, NULL, 0) - -#define DEFINE_KSPROPERTY_ITEM_STREAM_FRAMETIME(Handler) \ - DEFINE_KSPROPERTY_ITEM( \ - KSPROPERTY_STREAM_FRAMETIME, \ - (Handler), \ - sizeof(KSPROPERTY), \ - sizeof(KSFRAMETIME), \ - NULL, NULL, 0, NULL, NULL, 0) - -#define DEFINE_KSPROPERTY_ITEM_STREAM_RATECAPABILITY(Handler) \ - DEFINE_KSPROPERTY_ITEM( \ - KSPROPERTY_STREAM_RATECAPABILITY, \ - (Handler), \ - sizeof(KSRATE_CAPABILITY), \ - sizeof(KSRATE), \ - NULL, NULL, 0, NULL, NULL, 0) - -#define DEFINE_KSPROPERTY_ITEM_STREAM_RATE(GetHandler,SetHandler) \ - DEFINE_KSPROPERTY_ITEM( \ - KSPROPERTY_STREAM_RATE, \ - (GetHandler), \ - sizeof(KSPROPERTY), \ - sizeof(KSRATE), \ - (SetHandler), \ - NULL, 0, NULL, NULL, 0) - -#define DEFINE_KSPROPERTY_ITEM_STREAM_PIPE_ID(GetHandler,SetHandler) \ - DEFINE_KSPROPERTY_ITEM( \ - KSPROPERTY_STREAM_PIPE_ID, \ - (GetHandler), \ - sizeof(KSPROPERTY), \ - sizeof(HANDLE), \ - (SetHandler), \ - NULL, 0, NULL, NULL, 0) - -typedef struct { - HANDLE QualityManager; - PVOID Context; -} KSQUALITY_MANAGER,*PKSQUALITY_MANAGER; - -typedef struct { - LONGLONG Duration; - ULONG FrameFlags; - ULONG Reserved; -} KSFRAMETIME,*PKSFRAMETIME; - -#define KSFRAMETIME_VARIABLESIZE 0x00000001 - -typedef struct { - LONGLONG PresentationStart; - LONGLONG Duration; - KSPIN_INTERFACE Interface; - LONG Rate; - ULONG Flags; -} KSRATE,*PKSRATE; - -#define KSRATE_NOPRESENTATIONSTART 0x00000001 -#define KSRATE_NOPRESENTATIONDURATION 0x00000002 - -typedef struct { - KSPROPERTY Property; - KSRATE Rate; -} KSRATE_CAPABILITY,*PKSRATE_CAPABILITY; - -#define STATIC_KSPROPSETID_Clock \ - 0xDF12A4C0L,0xAC17,0x11CF,0xA5,0xD6,0x28,0xDB,0x04,0xC1,0x00,0x00 -DEFINE_GUIDSTRUCT("DF12A4C0-AC17-11CF-A5D6-28DB04C10000",KSPROPSETID_Clock); -#define KSPROPSETID_Clock DEFINE_GUIDNAMED(KSPROPSETID_Clock) - -#define NANOSECONDS 10000000 -#define KSCONVERT_PERFORMANCE_TIME(Frequency,PerformanceTime) \ - ((((ULONGLONG)(ULONG)(PerformanceTime).HighPart *NANOSECONDS / (Frequency)) << 32) + \ - ((((((ULONGLONG)(ULONG)(PerformanceTime).HighPart *NANOSECONDS) % (Frequency)) << 32) +\ - ((ULONGLONG)(PerformanceTime).LowPart *NANOSECONDS)) / (Frequency))) - -typedef struct { - ULONG CreateFlags; -} KSCLOCK_CREATE,*PKSCLOCK_CREATE; - -typedef struct { - LONGLONG Time; - LONGLONG SystemTime; -} KSCORRELATED_TIME,*PKSCORRELATED_TIME; - -typedef struct { - LONGLONG Granularity; - LONGLONG Error; -} KSRESOLUTION,*PKSRESOLUTION; - -typedef enum { - KSPROPERTY_CLOCK_TIME, - KSPROPERTY_CLOCK_PHYSICALTIME, - KSPROPERTY_CLOCK_CORRELATEDTIME, - KSPROPERTY_CLOCK_CORRELATEDPHYSICALTIME, - KSPROPERTY_CLOCK_RESOLUTION, - KSPROPERTY_CLOCK_STATE, -#if defined(_NTDDK_) - KSPROPERTY_CLOCK_FUNCTIONTABLE -#endif /* _NTDDK_ */ -} KSPROPERTY_CLOCK; - -#if defined(_NTDDK_) -typedef LONGLONG (FASTCALL *PFNKSCLOCK_GETTIME)(PFILE_OBJECT FileObject); -typedef LONGLONG (FASTCALL *PFNKSCLOCK_CORRELATEDTIME)(PFILE_OBJECT FileObject, - PLONGLONG SystemTime); - -typedef struct { - PFNKSCLOCK_GETTIME GetTime; - PFNKSCLOCK_GETTIME GetPhysicalTime; - PFNKSCLOCK_CORRELATEDTIME GetCorrelatedTime; - PFNKSCLOCK_CORRELATEDTIME GetCorrelatedPhysicalTime; -} KSCLOCK_FUNCTIONTABLE, *PKSCLOCK_FUNCTIONTABLE; - -typedef BOOLEAN (*PFNKSSETTIMER)(PVOID Context, PKTIMER Timer, - LARGE_INTEGER DueTime, PKDPC Dpc); -typedef BOOLEAN (*PFNKSCANCELTIMER) (PVOID Context, PKTIMER Timer); -typedef LONGLONG (FASTCALL *PFNKSCORRELATEDTIME)(PVOID Context, - PLONGLONG SystemTime); - -typedef PVOID PKSDEFAULTCLOCK; - -#define DEFINE_KSPROPERTY_ITEM_CLOCK_TIME(Handler) \ - DEFINE_KSPROPERTY_ITEM( \ - KSPROPERTY_CLOCK_TIME, \ - (Handler), \ - sizeof(KSPROPERTY), sizeof(LONGLONG), \ - NULL, NULL, 0, NULL, NULL, 0) - -#define DEFINE_KSPROPERTY_ITEM_CLOCK_PHYSICALTIME(Handler) \ - DEFINE_KSPROPERTY_ITEM( \ - KSPROPERTY_CLOCK_PHYSICALTIME, \ - (Handler), \ - sizeof(KSPROPERTY), sizeof(LONGLONG), \ - NULL, NULL, 0, NULL, NULL, 0) - -#define DEFINE_KSPROPERTY_ITEM_CLOCK_CORRELATEDTIME(Handler) \ - DEFINE_KSPROPERTY_ITEM( \ - KSPROPERTY_CLOCK_CORRELATEDTIME, \ - (Handler), \ - sizeof(KSPROPERTY), \ - sizeof(KSCORRELATED_TIME), \ - NULL, NULL, 0, NULL, NULL, 0) - -#define DEFINE_KSPROPERTY_ITEM_CLOCK_CORRELATEDPHYSICALTIME(Handler) \ - DEFINE_KSPROPERTY_ITEM( \ - KSPROPERTY_CLOCK_CORRELATEDPHYSICALTIME,\ - (Handler), \ - sizeof(KSPROPERTY), \ - sizeof(KSCORRELATED_TIME), \ - NULL, NULL, 0, NULL, NULL, 0) - -#define DEFINE_KSPROPERTY_ITEM_CLOCK_RESOLUTION(Handler) \ - DEFINE_KSPROPERTY_ITEM( \ - KSPROPERTY_CLOCK_RESOLUTION, \ - (Handler), \ - sizeof(KSPROPERTY),sizeof(KSRESOLUTION),\ - NULL, NULL, 0, NULL, NULL, 0) - -#define DEFINE_KSPROPERTY_ITEM_CLOCK_STATE(Handler) \ - DEFINE_KSPROPERTY_ITEM( \ - KSPROPERTY_CLOCK_STATE, \ - (Handler), \ - sizeof(KSPROPERTY), sizeof(KSSTATE), \ - NULL, NULL, 0, NULL, NULL, 0) - -#define DEFINE_KSPROPERTY_ITEM_CLOCK_FUNCTIONTABLE(Handler) \ - DEFINE_KSPROPERTY_ITEM( \ - KSPROPERTY_CLOCK_FUNCTIONTABLE, \ - (Handler), \ - sizeof(KSPROPERTY), \ - sizeof(KSCLOCK_FUNCTIONTABLE), \ - NULL, NULL, 0, NULL, NULL, 0) - -#define DEFINE_KSPROPERTY_CLOCKSET(ClockSet,PropTime,PropPhysicalTime,PropCorrelatedTime,PropCorrelatedPhysicalTime,PropResolution,PropState,PropFunctionTable)\ -DEFINE_KSPROPERTY_TABLE(ClockSet) { \ - DEFINE_KSPROPERTY_ITEM_CLOCK_TIME(PropTime), \ - DEFINE_KSPROPERTY_ITEM_CLOCK_PHYSICALTIME(PropPhysicalTime), \ - DEFINE_KSPROPERTY_ITEM_CLOCK_CORRELATEDTIME(PropCorrelatedTime),\ - DEFINE_KSPROPERTY_ITEM_CLOCK_CORRELATEDPHYSICALTIME(PropCorrelatedPhysicalTime),\ - DEFINE_KSPROPERTY_ITEM_CLOCK_RESOLUTION(PropResolution), \ - DEFINE_KSPROPERTY_ITEM_CLOCK_STATE(PropState), \ - DEFINE_KSPROPERTY_ITEM_CLOCK_FUNCTIONTABLE(PropFunctionTable), \ -} -#endif /* _NTDDK_ */ - -#define STATIC_KSEVENTSETID_Clock \ - 0x364D8E20L,0x62C7,0x11CF,0xA5,0xD6,0x28,0xDB,0x04,0xC1,0x00,0x00 -DEFINE_GUIDSTRUCT("364D8E20-62C7-11CF-A5D6-28DB04C10000",KSEVENTSETID_Clock); -#define KSEVENTSETID_Clock DEFINE_GUIDNAMED(KSEVENTSETID_Clock) - -typedef enum { - KSEVENT_CLOCK_INTERVAL_MARK, - KSEVENT_CLOCK_POSITION_MARK -} KSEVENT_CLOCK_POSITION; - -#define STATIC_KSEVENTSETID_Connection \ - 0x7f4bcbe0L,0x9ea5,0x11cf,0xa5,0xd6,0x28,0xdb,0x04,0xc1,0x00,0x00 -DEFINE_GUIDSTRUCT("7f4bcbe0-9ea5-11cf-a5d6-28db04c10000",KSEVENTSETID_Connection); -#define KSEVENTSETID_Connection DEFINE_GUIDNAMED(KSEVENTSETID_Connection) - -typedef enum { - KSEVENT_CONNECTION_POSITIONUPDATE, - KSEVENT_CONNECTION_DATADISCONTINUITY, - KSEVENT_CONNECTION_TIMEDISCONTINUITY, - KSEVENT_CONNECTION_PRIORITY, - KSEVENT_CONNECTION_ENDOFSTREAM -} KSEVENT_CONNECTION; - -typedef struct { - PVOID Context; - ULONG Proportion; - LONGLONG DeltaTime; -} KSQUALITY,*PKSQUALITY; - -typedef struct { - PVOID Context; - ULONG Status; -} KSERROR,*PKSERROR; - -typedef KSIDENTIFIER KSDEGRADE,*PKSDEGRADE; - -#define STATIC_KSDEGRADESETID_Standard \ - 0x9F564180L,0x704C,0x11D0,0xA5,0xD6,0x28,0xDB,0x04,0xC1,0x00,0x00 -DEFINE_GUIDSTRUCT("9F564180-704C-11D0-A5D6-28DB04C10000",KSDEGRADESETID_Standard); -#define KSDEGRADESETID_Standard DEFINE_GUIDNAMED(KSDEGRADESETID_Standard) - -typedef enum { - KSDEGRADE_STANDARD_SAMPLE, - KSDEGRADE_STANDARD_QUALITY, - KSDEGRADE_STANDARD_COMPUTATION, - KSDEGRADE_STANDARD_SKIP -} KSDEGRADE_STANDARD; - -#if defined(_NTDDK_) - -#define KSPROBE_STREAMREAD 0x00000000 -#define KSPROBE_STREAMWRITE 0x00000001 -#define KSPROBE_ALLOCATEMDL 0x00000010 -#define KSPROBE_PROBEANDLOCK 0x00000020 -#define KSPROBE_SYSTEMADDRESS 0x00000040 -#define KSPROBE_MODIFY 0x00000200 -#define KSPROBE_STREAMWRITEMODIFY (KSPROBE_MODIFY | KSPROBE_STREAMWRITE) -#define KSPROBE_ALLOWFORMATCHANGE 0x00000080 -#define KSSTREAM_READ KSPROBE_STREAMREAD -#define KSSTREAM_WRITE KSPROBE_STREAMWRITE -#define KSSTREAM_PAGED_DATA 0x00000000 -#define KSSTREAM_NONPAGED_DATA 0x00000100 -#define KSSTREAM_SYNCHRONOUS 0x00001000 -#define KSSTREAM_FAILUREEXCEPTION 0x00002000 - -typedef NTSTATUS (*PFNKSCONTEXT_DISPATCH)(PVOID Context, PIRP Irp); -typedef NTSTATUS (*PFNKSHANDLER)(PIRP Irp, PKSIDENTIFIER Request, PVOID Data); -typedef BOOLEAN (*PFNKSFASTHANDLER)(PFILE_OBJECT FileObject, - PKSIDENTIFIER Request, - ULONG RequestLength, PVOID Data, - ULONG DataLength, - PIO_STATUS_BLOCK IoStatus); -typedef NTSTATUS (*PFNKSALLOCATOR) (PIRP Irp, ULONG BufferSize, - BOOLEAN InputOperation); - -typedef struct { - KSPROPERTY_MEMBERSHEADER MembersHeader; - const VOID *Members; -} KSPROPERTY_MEMBERSLIST, *PKSPROPERTY_MEMBERSLIST; - -typedef struct { - KSIDENTIFIER PropTypeSet; - ULONG MembersListCount; - const KSPROPERTY_MEMBERSLIST *MembersList; -} KSPROPERTY_VALUES, *PKSPROPERTY_VALUES; - -#define DEFINE_KSPROPERTY_TABLE(tablename) \ - const KSPROPERTY_ITEM tablename[] = - -#define DEFINE_KSPROPERTY_ITEM(PropertyId,GetHandler,MinProperty,MinData,SetHandler,Values,RelationsCount,Relations,SupportHandler,SerializedSize)\ -{ \ - PropertyId, (PFNKSHANDLER)GetHandler, \ - MinProperty, MinData, \ - (PFNKSHANDLER)SetHandler, \ - (PKSPROPERTY_VALUES)Values, RelationsCount, \ - (PKSPROPERTY)Relations, \ - (PFNKSHANDLER)SupportHandler, \ - (ULONG)SerializedSize \ -} - -typedef struct { - ULONG PropertyId; - __MINGW_EXTENSION union { - PFNKSHANDLER GetPropertyHandler; - BOOLEAN GetSupported; - }; - ULONG MinProperty; - ULONG MinData; - __MINGW_EXTENSION union { - PFNKSHANDLER SetPropertyHandler; - BOOLEAN SetSupported; - }; - const KSPROPERTY_VALUES *Values; - ULONG RelationsCount; - const KSPROPERTY *Relations; - PFNKSHANDLER SupportHandler; - ULONG SerializedSize; -} KSPROPERTY_ITEM, *PKSPROPERTY_ITEM; - -#define DEFINE_KSFASTPROPERTY_ITEM(PropertyId, GetHandler, SetHandler) \ -{ \ - PropertyId, (PFNKSFASTHANDLER)GetHandler, \ - (PFNKSFASTHANDLER)SetHandler, 0 \ -} - -typedef struct { - ULONG PropertyId; - __MINGW_EXTENSION union { - PFNKSFASTHANDLER GetPropertyHandler; - BOOLEAN GetSupported; - }; - __MINGW_EXTENSION union { - PFNKSFASTHANDLER SetPropertyHandler; - BOOLEAN SetSupported; - }; - ULONG Reserved; -} KSFASTPROPERTY_ITEM, *PKSFASTPROPERTY_ITEM; - -#define DEFINE_KSPROPERTY_SET(Set,PropertiesCount,PropertyItem,FastIoCount,FastIoTable)\ -{ \ - Set, \ - PropertiesCount, PropertyItem, \ - FastIoCount, FastIoTable \ -} - -#define DEFINE_KSPROPERTY_SET_TABLE(tablename) \ - const KSPROPERTY_SET tablename[] = - -typedef struct { - const GUID *Set; - ULONG PropertiesCount; - const KSPROPERTY_ITEM *PropertyItem; - ULONG FastIoCount; - const KSFASTPROPERTY_ITEM *FastIoTable; -} KSPROPERTY_SET, *PKSPROPERTY_SET; - -#define DEFINE_KSMETHOD_TABLE(tablename) \ - const KSMETHOD_ITEM tablename[] = - -#define DEFINE_KSMETHOD_ITEM(MethodId,Flags,MethodHandler,MinMethod,MinData,SupportHandler)\ -{ \ - MethodId, (PFNKSHANDLER)MethodHandler, \ - MinMethod, MinData, \ - SupportHandler, Flags \ -} - -typedef struct { - ULONG MethodId; - __MINGW_EXTENSION union { - PFNKSHANDLER MethodHandler; - BOOLEAN MethodSupported; - }; - ULONG MinMethod; - ULONG MinData; - PFNKSHANDLER SupportHandler; - ULONG Flags; -} KSMETHOD_ITEM, *PKSMETHOD_ITEM; - -#define DEFINE_KSFASTMETHOD_ITEM(MethodId,MethodHandler) \ -{ \ - MethodId, (PFNKSFASTHANDLER)MethodHandler \ -} - -typedef struct { - ULONG MethodId; - __MINGW_EXTENSION union { - PFNKSFASTHANDLER MethodHandler; - BOOLEAN MethodSupported; - }; -} KSFASTMETHOD_ITEM, *PKSFASTMETHOD_ITEM; - -#define DEFINE_KSMETHOD_SET(Set,MethodsCount,MethodItem,FastIoCount,FastIoTable)\ -{ \ - Set, \ - MethodsCount, MethodItem, \ - FastIoCount, FastIoTable \ -} - -#define DEFINE_KSMETHOD_SET_TABLE(tablename) \ - const KSMETHOD_SET tablename[] = - -typedef struct { - const GUID *Set; - ULONG MethodsCount; - const KSMETHOD_ITEM *MethodItem; - ULONG FastIoCount; - const KSFASTMETHOD_ITEM *FastIoTable; -} KSMETHOD_SET, *PKSMETHOD_SET; - -typedef struct _KSEVENT_ENTRY KSEVENT_ENTRY, *PKSEVENT_ENTRY; -typedef NTSTATUS (*PFNKSADDEVENT)(PIRP Irp, PKSEVENTDATA EventData, - struct _KSEVENT_ENTRY* EventEntry); -typedef VOID (*PFNKSREMOVEEVENT)(PFILE_OBJECT FileObject, - struct _KSEVENT_ENTRY* EventEntry); - -#define DEFINE_KSEVENT_TABLE(tablename) \ - const KSEVENT_ITEM tablename[] = - -#define DEFINE_KSEVENT_ITEM(EventId,DataInput,ExtraEntryData,AddHandler,RemoveHandler,SupportHandler)\ -{ \ - EventId, DataInput, ExtraEntryData, \ - AddHandler, RemoveHandler, SupportHandler \ -} - -typedef struct { - ULONG EventId; - ULONG DataInput; - ULONG ExtraEntryData; - PFNKSADDEVENT AddHandler; - PFNKSREMOVEEVENT RemoveHandler; - PFNKSHANDLER SupportHandler; -} KSEVENT_ITEM, *PKSEVENT_ITEM; - -#define DEFINE_KSEVENT_SET(Set,EventsCount,EventItem) \ -{ \ - Set, EventsCount, EventItem \ -} - -#define DEFINE_KSEVENT_SET_TABLE(tablename) \ - const KSEVENT_SET tablename[] = - -typedef struct { - const GUID *Set; - ULONG EventsCount; - const KSEVENT_ITEM *EventItem; -} KSEVENT_SET, *PKSEVENT_SET; - -typedef struct { - KDPC Dpc; - ULONG ReferenceCount; - KSPIN_LOCK AccessLock; -} KSDPC_ITEM, *PKSDPC_ITEM; - -typedef struct { - KSDPC_ITEM DpcItem; - LIST_ENTRY BufferList; -} KSBUFFER_ITEM, *PKSBUFFER_ITEM; - - -#define KSEVENT_ENTRY_DELETED 1 -#define KSEVENT_ENTRY_ONESHOT 2 -#define KSEVENT_ENTRY_BUFFERED 4 - -struct _KSEVENT_ENTRY { - LIST_ENTRY ListEntry; - PVOID Object; - __MINGW_EXTENSION union { - PKSDPC_ITEM DpcItem; - PKSBUFFER_ITEM BufferItem; - }; - PKSEVENTDATA EventData; - ULONG NotificationType; - const KSEVENT_SET *EventSet; - const KSEVENT_ITEM *EventItem; - PFILE_OBJECT FileObject; - ULONG SemaphoreAdjustment; - ULONG Reserved; - ULONG Flags; -}; - -typedef enum { - KSEVENTS_NONE, - KSEVENTS_SPINLOCK, - KSEVENTS_MUTEX, - KSEVENTS_FMUTEX, - KSEVENTS_FMUTEXUNSAFE, - KSEVENTS_INTERRUPT, - KSEVENTS_ERESOURCE -} KSEVENTS_LOCKTYPE; - -#define KSDISPATCH_FASTIO 0x80000000 - -typedef struct { - PDRIVER_DISPATCH Create; - PVOID Context; - UNICODE_STRING ObjectClass; - PSECURITY_DESCRIPTOR SecurityDescriptor; - ULONG Flags; -} KSOBJECT_CREATE_ITEM, *PKSOBJECT_CREATE_ITEM; - -typedef VOID (*PFNKSITEMFREECALLBACK)(PKSOBJECT_CREATE_ITEM CreateItem); - -#define KSCREATE_ITEM_SECURITYCHANGED 0x00000001 -#define KSCREATE_ITEM_WILDCARD 0x00000002 -#define KSCREATE_ITEM_NOPARAMETERS 0x00000004 -#define KSCREATE_ITEM_FREEONSTOP 0x00000008 - -#define DEFINE_KSCREATE_DISPATCH_TABLE( tablename ) \ - KSOBJECT_CREATE_ITEM tablename[] = - -#define DEFINE_KSCREATE_ITEM(DispatchCreate,TypeName,Context) \ -{ \ - (DispatchCreate), (PVOID)(Context), \ - { \ - sizeof(TypeName) - sizeof(UNICODE_NULL),\ - sizeof(TypeName), \ - (PWCHAR)(TypeName) \ - }, \ - NULL, 0 \ -} - -#define DEFINE_KSCREATE_ITEMEX(DispatchCreate,TypeName,Context,Flags) \ -{ \ - (DispatchCreate), \ - (PVOID)(Context), \ - { \ - sizeof(TypeName) - sizeof(UNICODE_NULL),\ - sizeof(TypeName), \ - (PWCHAR)(TypeName) \ - }, \ - NULL, (Flags) \ -} - -#define DEFINE_KSCREATE_ITEMNULL(DispatchCreate,Context) \ -{ \ - DispatchCreate, Context, \ - { \ - 0, 0, NULL, \ - }, \ - NULL, 0 \ -} - -typedef struct { - ULONG CreateItemsCount; - PKSOBJECT_CREATE_ITEM CreateItemsList; -} KSOBJECT_CREATE, *PKSOBJECT_CREATE; - -typedef struct { - PDRIVER_DISPATCH DeviceIoControl; - PDRIVER_DISPATCH Read; - PDRIVER_DISPATCH Write; - PDRIVER_DISPATCH Flush; - PDRIVER_DISPATCH Close; - PDRIVER_DISPATCH QuerySecurity; - PDRIVER_DISPATCH SetSecurity; - PFAST_IO_DEVICE_CONTROL FastDeviceIoControl; - PFAST_IO_READ FastRead; - PFAST_IO_WRITE FastWrite; -} KSDISPATCH_TABLE, *PKSDISPATCH_TABLE; - -#define DEFINE_KSDISPATCH_TABLE(tablename,DeviceIoControl,Read,Write,Flush,Close,QuerySecurity,SetSecurity,FastDeviceIoControl,FastRead,FastWrite)\ - const KSDISPATCH_TABLE tablename = \ - { \ - DeviceIoControl, \ - Read, \ - Write, \ - Flush, \ - Close, \ - QuerySecurity, \ - SetSecurity, \ - FastDeviceIoControl, \ - FastRead, \ - FastWrite, \ - } - -#define KSCREATE_ITEM_IRP_STORAGE(Irp) \ - (*(PKSOBJECT_CREATE_ITEM *)&(Irp)->Tail.Overlay.DriverContext[0]) -#define KSEVENT_SET_IRP_STORAGE(Irp) \ - (*(const KSEVENT_SET **)&(Irp)->Tail.Overlay.DriverContext[0]) -#define KSEVENT_ITEM_IRP_STORAGE(Irp) \ - (*(const KSEVENT_ITEM **)&(Irp)->Tail.Overlay.DriverContext[3]) -#define KSEVENT_ENTRY_IRP_STORAGE(Irp) \ - (*(PKSEVENT_ENTRY *)&(Irp)->Tail.Overlay.DriverContext[0]) -#define KSMETHOD_SET_IRP_STORAGE(Irp) \ - (*(const KSMETHOD_SET **)&(Irp)->Tail.Overlay.DriverContext[0]) -#define KSMETHOD_ITEM_IRP_STORAGE(Irp) \ - (*(const KSMETHOD_ITEM **)&(Irp)->Tail.Overlay.DriverContext[3]) -#define KSMETHOD_TYPE_IRP_STORAGE(Irp) \ - (*(ULONG_PTR *)(&(Irp)->Tail.Overlay.DriverContext[2])) -#define KSQUEUE_SPINLOCK_IRP_STORAGE(Irp) \ - (*(PKSPIN_LOCK *)&(Irp)->Tail.Overlay.DriverContext[1]) -#define KSPROPERTY_SET_IRP_STORAGE(Irp) \ - (*(const KSPROPERTY_SET **)&(Irp)->Tail.Overlay.DriverContext[0]) -#define KSPROPERTY_ITEM_IRP_STORAGE(Irp) \ - (*(const KSPROPERTY_ITEM **)&(Irp)->Tail.Overlay.DriverContext[3]) -#define KSPROPERTY_ATTRIBUTES_IRP_STORAGE(Irp) \ - (*(PKSATTRIBUTE_LIST *)&(Irp)->Tail.Overlay.DriverContext[2]) - -typedef PVOID KSDEVICE_HEADER, KSOBJECT_HEADER; - -typedef enum { - KsInvokeOnSuccess = 1, - KsInvokeOnError = 2, - KsInvokeOnCancel = 4 -} KSCOMPLETION_INVOCATION; - -typedef enum { - KsListEntryTail, - KsListEntryHead -} KSLIST_ENTRY_LOCATION; - -typedef enum { - KsAcquireOnly, - KsAcquireAndRemove, - KsAcquireOnlySingleItem, - KsAcquireAndRemoveOnlySingleItem -} KSIRP_REMOVAL_OPERATION; - -typedef enum { - KsStackCopyToNewLocation, - KsStackReuseCurrentLocation, - KsStackUseNewLocation -} KSSTACK_USE; - -typedef enum { - KSTARGET_STATE_DISABLED, - KSTARGET_STATE_ENABLED -} KSTARGET_STATE; - -typedef NTSTATUS (*PFNKSIRPLISTCALLBACK)(PIRP Irp, PVOID Context); -typedef VOID (*PFNREFERENCEDEVICEOBJECT)(PVOID Context); -typedef VOID (*PFNDEREFERENCEDEVICEOBJECT)(PVOID Context); -typedef NTSTATUS (*PFNQUERYREFERENCESTRING)(PVOID Context, PWCHAR *String); - -#define BUS_INTERFACE_REFERENCE_VERSION 0x100 - -typedef struct { - INTERFACE Interface; - - PFNREFERENCEDEVICEOBJECT ReferenceDeviceObject; - PFNDEREFERENCEDEVICEOBJECT DereferenceDeviceObject; - PFNQUERYREFERENCESTRING QueryReferenceString; -} BUS_INTERFACE_REFERENCE, *PBUS_INTERFACE_REFERENCE; - -#define STATIC_REFERENCE_BUS_INTERFACE STATIC_KSMEDIUMSETID_Standard -#define REFERENCE_BUS_INTERFACE KSMEDIUMSETID_Standard - -#endif /* _NTDDK_ */ - -#ifndef PACK_PRAGMAS_NOT_SUPPORTED -#include <pshpack1.h> -#endif - -typedef struct { - GUID PropertySet; - ULONG Count; -} KSPROPERTY_SERIALHDR,*PKSPROPERTY_SERIALHDR; - -#ifndef PACK_PRAGMAS_NOT_SUPPORTED -#include <poppack.h> -#endif - -typedef struct { - KSIDENTIFIER PropTypeSet; - ULONG Id; - ULONG PropertyLength; -} KSPROPERTY_SERIAL,*PKSPROPERTY_SERIAL; - - -#if defined(_NTDDK_) - -#define IOCTL_KS_HANDSHAKE \ - CTL_CODE(FILE_DEVICE_KS, 0x007, METHOD_NEITHER, FILE_ANY_ACCESS) - -typedef struct { - GUID ProtocolId; - PVOID Argument1; - PVOID Argument2; -} KSHANDSHAKE, *PKSHANDSHAKE; - -typedef struct _KSGATE KSGATE, *PKSGATE; - -struct _KSGATE { - LONG Count; - PKSGATE NextGate; -}; - -typedef PVOID KSOBJECT_BAG; - - -typedef BOOLEAN (*PFNKSGENERATEEVENTCALLBACK)(PVOID Context, - PKSEVENT_ENTRY EventEntry); - -typedef NTSTATUS (*PFNKSDEVICECREATE)(PKSDEVICE Device); - -typedef NTSTATUS (*PFNKSDEVICEPNPSTART)(PKSDEVICE Device,PIRP Irp, - PCM_RESOURCE_LIST TranslatedResourceList, - PCM_RESOURCE_LIST UntranslatedResourceList); - -typedef NTSTATUS (*PFNKSDEVICE)(PKSDEVICE Device); - -typedef NTSTATUS (*PFNKSDEVICEIRP)(PKSDEVICE Device,PIRP Irp); - -typedef void (*PFNKSDEVICEIRPVOID)(PKSDEVICE Device,PIRP Irp); - -typedef NTSTATUS (*PFNKSDEVICEQUERYCAPABILITIES)(PKSDEVICE Device,PIRP Irp, - PDEVICE_CAPABILITIES Capabilities); - -typedef NTSTATUS (*PFNKSDEVICEQUERYPOWER)(PKSDEVICE Device,PIRP Irp, - DEVICE_POWER_STATE DeviceTo, - DEVICE_POWER_STATE DeviceFrom, - SYSTEM_POWER_STATE SystemTo, - SYSTEM_POWER_STATE SystemFrom, - POWER_ACTION Action); - -typedef void (*PFNKSDEVICESETPOWER)(PKSDEVICE Device,PIRP Irp, - DEVICE_POWER_STATE To, - DEVICE_POWER_STATE From); - -typedef NTSTATUS (*PFNKSFILTERFACTORYVOID)(PKSFILTERFACTORY FilterFactory); - -typedef void (*PFNKSFILTERFACTORYPOWER)(PKSFILTERFACTORY FilterFactory, - DEVICE_POWER_STATE State); - -typedef NTSTATUS (*PFNKSFILTERIRP)(PKSFILTER Filter,PIRP Irp); - -typedef NTSTATUS (*PFNKSFILTERPROCESS)(PKSFILTER Filter, - PKSPROCESSPIN_INDEXENTRY Index); - -typedef NTSTATUS (*PFNKSFILTERVOID)(PKSFILTER Filter); - -typedef void (*PFNKSFILTERPOWER)(PKSFILTER Filter,DEVICE_POWER_STATE State); - -typedef NTSTATUS (*PFNKSPINIRP)(PKSPIN Pin,PIRP Irp); - -typedef NTSTATUS (*PFNKSPINSETDEVICESTATE)(PKSPIN Pin,KSSTATE ToState, - KSSTATE FromState); - -typedef NTSTATUS (*PFNKSPINSETDATAFORMAT)(PKSPIN Pin,PKSDATAFORMAT OldFormat, - PKSMULTIPLE_ITEM OldAttributeList, - const KSDATARANGE *DataRange, - const KSATTRIBUTE_LIST *AttributeRange); - -typedef NTSTATUS (*PFNKSPINHANDSHAKE)(PKSPIN Pin,PKSHANDSHAKE In, - PKSHANDSHAKE Out); - -typedef NTSTATUS (*PFNKSPIN)(PKSPIN Pin); - -typedef void (*PFNKSPINVOID)(PKSPIN Pin); - -typedef void (*PFNKSPINPOWER)(PKSPIN Pin,DEVICE_POWER_STATE State); - -typedef BOOLEAN (*PFNKSPINSETTIMER)(PKSPIN Pin,PKTIMER Timer, - LARGE_INTEGER DueTime,PKDPC Dpc); - -typedef BOOLEAN (*PFNKSPINCANCELTIMER)(PKSPIN Pin,PKTIMER Timer); - -typedef LONGLONG (FASTCALL *PFNKSPINCORRELATEDTIME)(PKSPIN Pin, - PLONGLONG SystemTime); - -typedef void (*PFNKSPINRESOLUTION)(PKSPIN Pin,PKSRESOLUTION Resolution); - -typedef NTSTATUS (*PFNKSPININITIALIZEALLOCATOR)(PKSPIN Pin, - PKSALLOCATOR_FRAMING AllocatorFraming, - PVOID *Context); - -typedef void (*PFNKSSTREAMPOINTER)(PKSSTREAM_POINTER StreamPointer); - - -typedef struct KSAUTOMATION_TABLE_ KSAUTOMATION_TABLE,*PKSAUTOMATION_TABLE; - -struct KSAUTOMATION_TABLE_ { - ULONG PropertySetsCount; - ULONG PropertyItemSize; - const KSPROPERTY_SET *PropertySets; - ULONG MethodSetsCount; - ULONG MethodItemSize; - const KSMETHOD_SET *MethodSets; - ULONG EventSetsCount; - ULONG EventItemSize; - const KSEVENT_SET *EventSets; -#ifndef _WIN64 - PVOID Alignment; -#endif -}; - -#define DEFINE_KSAUTOMATION_TABLE(table) \ - const KSAUTOMATION_TABLE table = - -#define DEFINE_KSAUTOMATION_PROPERTIES(table) \ - SIZEOF_ARRAY(table), \ - sizeof(KSPROPERTY_ITEM), \ - table - -#define DEFINE_KSAUTOMATION_METHODS(table) \ - SIZEOF_ARRAY(table), \ - sizeof(KSMETHOD_ITEM), \ - table - -#define DEFINE_KSAUTOMATION_EVENTS(table) \ - SIZEOF_ARRAY(table), \ - sizeof(KSEVENT_ITEM), \ - table - -#define DEFINE_KSAUTOMATION_PROPERTIES_NULL \ - 0, \ - sizeof(KSPROPERTY_ITEM), \ - NULL - -#define DEFINE_KSAUTOMATION_METHODS_NULL \ - 0, \ - sizeof(KSMETHOD_ITEM), \ - NULL - -#define DEFINE_KSAUTOMATION_EVENTS_NULL \ - 0, \ - sizeof(KSEVENT_ITEM), \ - NULL - -#define MIN_DEV_VER_FOR_QI (0x100) - -struct _KSDEVICE_DISPATCH { - PFNKSDEVICECREATE Add; - PFNKSDEVICEPNPSTART Start; - PFNKSDEVICE PostStart; - PFNKSDEVICEIRP QueryStop; - PFNKSDEVICEIRPVOID CancelStop; - PFNKSDEVICEIRPVOID Stop; - PFNKSDEVICEIRP QueryRemove; - PFNKSDEVICEIRPVOID CancelRemove; - PFNKSDEVICEIRPVOID Remove; - PFNKSDEVICEQUERYCAPABILITIES QueryCapabilities; - PFNKSDEVICEIRPVOID SurpriseRemoval; - PFNKSDEVICEQUERYPOWER QueryPower; - PFNKSDEVICESETPOWER SetPower; - PFNKSDEVICEIRP QueryInterface; -}; - -struct _KSFILTER_DISPATCH { - PFNKSFILTERIRP Create; - PFNKSFILTERIRP Close; - PFNKSFILTERPROCESS Process; - PFNKSFILTERVOID Reset; -}; - -struct _KSPIN_DISPATCH { - PFNKSPINIRP Create; - PFNKSPINIRP Close; - PFNKSPIN Process; - PFNKSPINVOID Reset; - PFNKSPINSETDATAFORMAT SetDataFormat; - PFNKSPINSETDEVICESTATE SetDeviceState; - PFNKSPIN Connect; - PFNKSPINVOID Disconnect; - const KSCLOCK_DISPATCH *Clock; - const KSALLOCATOR_DISPATCH *Allocator; -}; - -struct _KSCLOCK_DISPATCH { - PFNKSPINSETTIMER SetTimer; - PFNKSPINCANCELTIMER CancelTimer; - PFNKSPINCORRELATEDTIME CorrelatedTime; - PFNKSPINRESOLUTION Resolution; -}; - -struct _KSALLOCATOR_DISPATCH { - PFNKSPININITIALIZEALLOCATOR InitializeAllocator; - PFNKSDELETEALLOCATOR DeleteAllocator; - PFNKSDEFAULTALLOCATE Allocate; - PFNKSDEFAULTFREE Free; -}; - -#define KSDEVICE_DESCRIPTOR_VERSION (0x100) - -struct _KSDEVICE_DESCRIPTOR { - const KSDEVICE_DISPATCH *Dispatch; - ULONG FilterDescriptorsCount; - const KSFILTER_DESCRIPTOR*const *FilterDescriptors; - ULONG Version; -}; - -struct _KSFILTER_DESCRIPTOR { - const KSFILTER_DISPATCH *Dispatch; - const KSAUTOMATION_TABLE *AutomationTable; - ULONG Version; -#define KSFILTER_DESCRIPTOR_VERSION ((ULONG)-1) - ULONG Flags; -#define KSFILTER_FLAG_DISPATCH_LEVEL_PROCESSING 0x00000001 -#define KSFILTER_FLAG_CRITICAL_PROCESSING 0x00000002 -#define KSFILTER_FLAG_HYPERCRITICAL_PROCESSING 0x00000004 -#define KSFILTER_FLAG_RECEIVE_ZERO_LENGTH_SAMPLES 0x00000008 -#define KSFILTER_FLAG_DENY_USERMODE_ACCESS 0x80000000 - const GUID *ReferenceGuid; - ULONG PinDescriptorsCount; - ULONG PinDescriptorSize; - const KSPIN_DESCRIPTOR_EX *PinDescriptors; - ULONG CategoriesCount; - const GUID *Categories; - ULONG NodeDescriptorsCount; - ULONG NodeDescriptorSize; - const KSNODE_DESCRIPTOR *NodeDescriptors; - ULONG ConnectionsCount; - const KSTOPOLOGY_CONNECTION *Connections; - const KSCOMPONENTID *ComponentId; -}; - -#define DEFINE_KSFILTER_DESCRIPTOR(descriptor) \ - const KSFILTER_DESCRIPTOR descriptor = - -#define DEFINE_KSFILTER_PIN_DESCRIPTORS(table) \ - SIZEOF_ARRAY(table), \ - sizeof(table[0]), \ - table - -#define DEFINE_KSFILTER_CATEGORIES(table) \ - SIZEOF_ARRAY(table), \ - table - -#define DEFINE_KSFILTER_CATEGORY(category) \ - 1, \ - &(category) - -#define DEFINE_KSFILTER_CATEGORIES_NULL \ - 0, \ - NULL - -#define DEFINE_KSFILTER_NODE_DESCRIPTORS(table) \ - SIZEOF_ARRAY(table), \ - sizeof(table[0]), \ - table - -#define DEFINE_KSFILTER_NODE_DESCRIPTORS_NULL \ - 0, \ - sizeof(KSNODE_DESCRIPTOR), \ - NULL - -#define DEFINE_KSFILTER_CONNECTIONS(table) \ - SIZEOF_ARRAY(table), \ - table - -#define DEFINE_KSFILTER_DEFAULT_CONNECTIONS \ - 0, \ - NULL - -#define DEFINE_KSFILTER_DESCRIPTOR_TABLE(table) \ - const KSFILTER_DESCRIPTOR*const table[] = - -struct _KSPIN_DESCRIPTOR_EX { - const KSPIN_DISPATCH *Dispatch; - const KSAUTOMATION_TABLE *AutomationTable; - KSPIN_DESCRIPTOR PinDescriptor; - ULONG Flags; -#define KSPIN_FLAG_DISPATCH_LEVEL_PROCESSING KSFILTER_FLAG_DISPATCH_LEVEL_PROCESSING -#define KSPIN_FLAG_CRITICAL_PROCESSING KSFILTER_FLAG_CRITICAL_PROCESSING -#define KSPIN_FLAG_HYPERCRITICAL_PROCESSING KSFILTER_FLAG_HYPERCRITICAL_PROCESSING -#define KSPIN_FLAG_ASYNCHRONOUS_PROCESSING 0x00000008 -#define KSPIN_FLAG_DO_NOT_INITIATE_PROCESSING 0x00000010 -#define KSPIN_FLAG_INITIATE_PROCESSING_ON_EVERY_ARRIVAL 0x00000020 -#define KSPIN_FLAG_FRAMES_NOT_REQUIRED_FOR_PROCESSING 0x00000040 -#define KSPIN_FLAG_ENFORCE_FIFO 0x00000080 -#define KSPIN_FLAG_GENERATE_MAPPINGS 0x00000100 -#define KSPIN_FLAG_DISTINCT_TRAILING_EDGE 0x00000200 -#define KSPIN_FLAG_PROCESS_IN_RUN_STATE_ONLY 0x00010000 -#define KSPIN_FLAG_SPLITTER 0x00020000 -#define KSPIN_FLAG_USE_STANDARD_TRANSPORT 0x00040000 -#define KSPIN_FLAG_DO_NOT_USE_STANDARD_TRANSPORT 0x00080000 -#define KSPIN_FLAG_FIXED_FORMAT 0x00100000 -#define KSPIN_FLAG_GENERATE_EOS_EVENTS 0x00200000 -#define KSPIN_FLAG_RENDERER (KSPIN_FLAG_PROCESS_IN_RUN_STATE_ONLY|KSPIN_FLAG_GENERATE_EOS_EVENTS) -#define KSPIN_FLAG_IMPLEMENT_CLOCK 0x00400000 -#define KSPIN_FLAG_SOME_FRAMES_REQUIRED_FOR_PROCESSING 0x00800000 -#define KSPIN_FLAG_PROCESS_IF_ANY_IN_RUN_STATE 0x01000000 -#define KSPIN_FLAG_DENY_USERMODE_ACCESS 0x80000000 - ULONG InstancesPossible; - ULONG InstancesNecessary; - const KSALLOCATOR_FRAMING_EX *AllocatorFraming; - PFNKSINTERSECTHANDLEREX IntersectHandler; -}; - -#define DEFINE_KSPIN_DEFAULT_INTERFACES \ - 0, \ - NULL - -#define DEFINE_KSPIN_DEFAULT_MEDIUMS \ - 0, \ - NULL - -struct _KSNODE_DESCRIPTOR { - const KSAUTOMATION_TABLE *AutomationTable; - const GUID *Type; - const GUID *Name; -#ifndef _WIN64 - PVOID Alignment; -#endif -}; - -#ifndef _WIN64 -#define DEFINE_NODE_DESCRIPTOR(automation,type,name) \ - { (automation), (type), (name), NULL } -#else -#define DEFINE_NODE_DESCRIPTOR(automation,type,name) \ - { (automation), (type), (name) } -#endif - -struct _KSDEVICE { - const KSDEVICE_DESCRIPTOR *Descriptor; - KSOBJECT_BAG Bag; - PVOID Context; - PDEVICE_OBJECT FunctionalDeviceObject; - PDEVICE_OBJECT PhysicalDeviceObject; - PDEVICE_OBJECT NextDeviceObject; - BOOLEAN Started; - SYSTEM_POWER_STATE SystemPowerState; - DEVICE_POWER_STATE DevicePowerState; -}; - -struct _KSFILTERFACTORY { - const KSFILTER_DESCRIPTOR *FilterDescriptor; - KSOBJECT_BAG Bag; - PVOID Context; -}; - -struct _KSFILTER { - const KSFILTER_DESCRIPTOR *Descriptor; - KSOBJECT_BAG Bag; - PVOID Context; -}; - -struct _KSPIN { - const KSPIN_DESCRIPTOR_EX *Descriptor; - KSOBJECT_BAG Bag; - PVOID Context; - ULONG Id; - KSPIN_COMMUNICATION Communication; - BOOLEAN ConnectionIsExternal; - KSPIN_INTERFACE ConnectionInterface; - KSPIN_MEDIUM ConnectionMedium; - KSPRIORITY ConnectionPriority; - PKSDATAFORMAT ConnectionFormat; - PKSMULTIPLE_ITEM AttributeList; - ULONG StreamHeaderSize; - KSPIN_DATAFLOW DataFlow; - KSSTATE DeviceState; - KSRESET ResetState; - KSSTATE ClientState; -}; - -struct _KSMAPPING { - PHYSICAL_ADDRESS PhysicalAddress; - ULONG ByteCount; - ULONG Alignment; -}; - -struct _KSSTREAM_POINTER_OFFSET -{ -#if defined(_NTDDK_) - __MINGW_EXTENSION union { - PUCHAR Data; - PKSMAPPING Mappings; - }; -#else - PUCHAR Data; -#endif /* _NTDDK_ */ -#ifndef _WIN64 - PVOID Alignment; -#endif - ULONG Count; - ULONG Remaining; -}; - -struct _KSSTREAM_POINTER -{ - PVOID Context; - PKSPIN Pin; - PKSSTREAM_HEADER StreamHeader; - PKSSTREAM_POINTER_OFFSET Offset; - KSSTREAM_POINTER_OFFSET OffsetIn; - KSSTREAM_POINTER_OFFSET OffsetOut; -}; - -struct _KSPROCESSPIN { - PKSPIN Pin; - PKSSTREAM_POINTER StreamPointer; - PKSPROCESSPIN InPlaceCounterpart; - PKSPROCESSPIN DelegateBranch; - PKSPROCESSPIN CopySource; - PVOID Data; - ULONG BytesAvailable; - ULONG BytesUsed; - ULONG Flags; - BOOLEAN Terminate; -}; - -struct _KSPROCESSPIN_INDEXENTRY { - PKSPROCESSPIN *Pins; - ULONG Count; -}; - -typedef enum { - KsObjectTypeDevice, - KsObjectTypeFilterFactory, - KsObjectTypeFilter, - KsObjectTypePin -} KSOBJECTTYPE; - - -typedef void (*PFNKSFREE)(PVOID Data); - -typedef void (*PFNKSPINFRAMERETURN)(PKSPIN Pin,PVOID Data,ULONG Size,PMDL Mdl, - PVOID Context,NTSTATUS Status); - -typedef void (*PFNKSPINIRPCOMPLETION)(PKSPIN Pin,PIRP Irp); - - -#if defined(_UNKNOWN_H_) || defined(__IUnknown_INTERFACE_DEFINED__) -#ifndef _IKsControl_ -#define _IKsControl_ - -typedef struct IKsControl *PIKSCONTROL; - -#ifndef DEFINE_ABSTRACT_UNKNOWN -#define DEFINE_ABSTRACT_UNKNOWN() \ - STDMETHOD_(NTSTATUS,QueryInterface) (THIS_ \ - REFIID InterfaceId, \ - PVOID *Interface \ - ) PURE; \ - STDMETHOD_(ULONG,AddRef)(THIS) PURE; \ - STDMETHOD_(ULONG,Release)(THIS) PURE; -#endif - -#undef INTERFACE -#define INTERFACE IKsControl -DECLARE_INTERFACE_(IKsControl,IUnknown) -{ - DEFINE_ABSTRACT_UNKNOWN() - STDMETHOD_(NTSTATUS,KsProperty)(THIS_ - PKSPROPERTY Property, - ULONG PropertyLength, - PVOID PropertyData, - ULONG DataLength, - ULONG *BytesReturned - ) PURE; - STDMETHOD_(NTSTATUS,KsMethod) (THIS_ - PKSMETHOD Method, - ULONG MethodLength, - PVOID MethodData, - ULONG DataLength, - ULONG *BytesReturned - ) PURE; - STDMETHOD_(NTSTATUS,KsEvent) (THIS_ - PKSEVENT Event, - ULONG EventLength, - PVOID EventData, - ULONG DataLength, - ULONG *BytesReturned - ) PURE; -}; -typedef struct IKsReferenceClock *PIKSREFERENCECLOCK; - -#undef INTERFACE -#define INTERFACE IKsReferenceClock -DECLARE_INTERFACE_(IKsReferenceClock,IUnknown) -{ - DEFINE_ABSTRACT_UNKNOWN() - STDMETHOD_(LONGLONG,GetTime) (THIS) PURE; - STDMETHOD_(LONGLONG,GetPhysicalTime) (THIS) PURE; - STDMETHOD_(LONGLONG,GetCorrelatedTime)(THIS_ - PLONGLONG SystemTime - ) PURE; - STDMETHOD_(LONGLONG,GetCorrelatedPhysicalTime)(THIS_ - PLONGLONG SystemTime - ) PURE; - STDMETHOD_(NTSTATUS,GetResolution) (THIS_ - PKSRESOLUTION Resolution - ) PURE; - STDMETHOD_(NTSTATUS,GetState) (THIS_ - PKSSTATE State - ) PURE; -}; -#undef INTERFACE - -#define INTERFACE IKsDeviceFunctions -DECLARE_INTERFACE_(IKsDeviceFunctions,IUnknown) -{ - DEFINE_ABSTRACT_UNKNOWN() - STDMETHOD_(NTSTATUS,RegisterAdapterObjectEx) (THIS_ - PADAPTER_OBJECT AdapterObject, - PDEVICE_DESCRIPTION DeviceDescription, - ULONG NumberOfMapRegisters, - ULONG MaxMappingsByteCount, - ULONG MappingTableStride - ) PURE; -}; - -#undef INTERFACE -#define STATIC_IID_IKsControl \ - 0x28F54685L,0x06FD,0x11D2,0xB2,0x7A,0x00,0xA0,0xC9,0x22,0x31,0x96 -DEFINE_GUID(IID_IKsControl, - 0x28F54685L,0x06FD,0x11D2,0xB2,0x7A,0x00,0xA0,0xC9,0x22,0x31,0x96); -#define STATIC_IID_IKsFastClock \ - 0xc9902485,0xc180,0x11d2,0x84,0x73,0xd4,0x23,0x94,0x45,0x9e,0x5e -DEFINE_GUID(IID_IKsFastClock, - 0xc9902485,0xc180,0x11d2,0x84,0x73,0xd4,0x23,0x94,0x45,0x9e,0x5e); -#define STATIC_IID_IKsDeviceFunctions \ - 0xe234f2e2,0xbd69,0x4f8c,0xb3,0xf2,0x7c,0xd7,0x9e,0xd4,0x66,0xbd -DEFINE_GUID(IID_IKsDeviceFunctions, - 0xe234f2e2,0xbd69,0x4f8c,0xb3,0xf2,0x7c,0xd7,0x9e,0xd4,0x66,0xbd); -#endif /* _IKsControl_ */ -#endif /* defined(_UNKNOWN_H_) || defined(__IUnknown_INTERFACE_DEFINED__) */ - -#endif /* _NTDDK_ */ - - -#ifdef __cplusplus -extern "C" { -#endif - -#ifdef _KSDDK_ -#define KSDDKAPI -#else -#define KSDDKAPI DECLSPEC_IMPORT -#endif - -#if defined(_NTDDK_) - -KSDDKAPI NTSTATUS NTAPI KsEnableEvent - (PIRP Irp, ULONG EventSetsCount, const KSEVENT_SET *EventSet, - PLIST_ENTRY EventsList, KSEVENTS_LOCKTYPE EventsFlags, - PVOID EventsLock); - -KSDDKAPI NTSTATUS NTAPI KsEnableEventWithAllocator - (PIRP Irp, ULONG EventSetsCount, const KSEVENT_SET *EventSet, - PLIST_ENTRY EventsList, KSEVENTS_LOCKTYPE EventsFlags, - PVOID EventsLock, PFNKSALLOCATOR Allocator, ULONG EventItemSize); - -KSDDKAPI NTSTATUS NTAPI KsDisableEvent - (PIRP Irp, PLIST_ENTRY EventsList, KSEVENTS_LOCKTYPE EventsFlags, - PVOID EventsLock); - -KSDDKAPI VOID NTAPI KsDiscardEvent (PKSEVENT_ENTRY EventEntry); - -KSDDKAPI VOID NTAPI KsFreeEventList - (PFILE_OBJECT FileObject, PLIST_ENTRY EventsList, - KSEVENTS_LOCKTYPE EventsFlags, PVOID EventsLock); - -KSDDKAPI NTSTATUS NTAPI KsGenerateEvent (PKSEVENT_ENTRY EventEntry); - -KSDDKAPI NTSTATUS NTAPI KsGenerateDataEvent - (PKSEVENT_ENTRY EventEntry, ULONG DataSize, PVOID Data); - -KSDDKAPI VOID NTAPI KsGenerateEventList - (GUID *Set, ULONG EventId, PLIST_ENTRY EventsList, - KSEVENTS_LOCKTYPE EventsFlags, PVOID EventsLock); - -KSDDKAPI NTSTATUS NTAPI KsPropertyHandler - (PIRP Irp, ULONG PropertySetsCount, - const KSPROPERTY_SET *PropertySet); - -KSDDKAPI NTSTATUS NTAPI KsPropertyHandlerWithAllocator - (PIRP Irp, ULONG PropertySetsCount, - const KSPROPERTY_SET *PropertySet, PFNKSALLOCATOR Allocator, - ULONG PropertyItemSize); - -KSDDKAPI BOOLEAN NTAPI KsFastPropertyHandler - (PFILE_OBJECT FileObject, PKSPROPERTY Property, - ULONG PropertyLength, PVOID Data, ULONG DataLength, - PIO_STATUS_BLOCK IoStatus, ULONG PropertySetsCount, - const KSPROPERTY_SET *PropertySet); - -KSDDKAPI NTSTATUS NTAPI KsMethodHandler - (PIRP Irp, ULONG MethodSetsCount, - const KSMETHOD_SET *MethodSet); - -KSDDKAPI NTSTATUS NTAPI KsMethodHandlerWithAllocator - (PIRP Irp, ULONG MethodSetsCount, - const KSMETHOD_SET *MethodSet, PFNKSALLOCATOR Allocator, - ULONG MethodItemSize); - -KSDDKAPI BOOLEAN NTAPI KsFastMethodHandler - (PFILE_OBJECT FileObject, PKSMETHOD Method, ULONG MethodLength, - PVOID Data, ULONG DataLength, PIO_STATUS_BLOCK IoStatus, - ULONG MethodSetsCount, const KSMETHOD_SET *MethodSet); - -KSDDKAPI NTSTATUS NTAPI KsCreateDefaultAllocator (PIRP Irp); - -KSDDKAPI NTSTATUS NTAPI KsCreateDefaultAllocatorEx - (PIRP Irp, PVOID InitializeContext, - PFNKSDEFAULTALLOCATE DefaultAllocate, - PFNKSDEFAULTFREE DefaultFree, - PFNKSINITIALIZEALLOCATOR InitializeAllocator, - PFNKSDELETEALLOCATOR DeleteAllocator); - -KSDDKAPI NTSTATUS NTAPI KsCreateAllocator - (HANDLE ConnectionHandle, PKSALLOCATOR_FRAMING AllocatorFraming, - PHANDLE AllocatorHandle); - -KSDDKAPI NTSTATUS NTAPI KsValidateAllocatorCreateRequest - (PIRP Irp, PKSALLOCATOR_FRAMING *AllocatorFraming); - -KSDDKAPI NTSTATUS NTAPI KsValidateAllocatorFramingEx - (PKSALLOCATOR_FRAMING_EX Framing, ULONG BufferSize, - const KSALLOCATOR_FRAMING_EX *PinFraming); - -KSDDKAPI NTSTATUS NTAPI KsAllocateDefaultClock (PKSDEFAULTCLOCK *DefaultClock); - -KSDDKAPI NTSTATUS NTAPI KsAllocateDefaultClockEx - (PKSDEFAULTCLOCK *DefaultClock, PVOID Context, - PFNKSSETTIMER SetTimer, PFNKSCANCELTIMER CancelTimer, - PFNKSCORRELATEDTIME CorrelatedTime, - const KSRESOLUTION *Resolution, ULONG Flags); - -KSDDKAPI VOID NTAPI KsFreeDefaultClock (PKSDEFAULTCLOCK DefaultClock); -KSDDKAPI NTSTATUS NTAPI KsCreateDefaultClock (PIRP Irp, PKSDEFAULTCLOCK DefaultClock); - -KSDDKAPI NTSTATUS NTAPI KsCreateClock - (HANDLE ConnectionHandle, PKSCLOCK_CREATE ClockCreate, - PHANDLE ClockHandle); - -KSDDKAPI NTSTATUS NTAPI KsValidateClockCreateRequest - (PIRP Irp, PKSCLOCK_CREATE *ClockCreate); - -KSDDKAPI KSSTATE NTAPI KsGetDefaultClockState (PKSDEFAULTCLOCK DefaultClock); -KSDDKAPI VOID NTAPI KsSetDefaultClockState(PKSDEFAULTCLOCK DefaultClock, KSSTATE State); -KSDDKAPI LONGLONG NTAPI KsGetDefaultClockTime (PKSDEFAULTCLOCK DefaultClock); -KSDDKAPI VOID NTAPI KsSetDefaultClockTime(PKSDEFAULTCLOCK DefaultClock, LONGLONG Time); - -KSDDKAPI NTSTATUS NTAPI KsCreatePin - (HANDLE FilterHandle, PKSPIN_CONNECT Connect, - ACCESS_MASK DesiredAccess, PHANDLE ConnectionHandle); - -KSDDKAPI NTSTATUS NTAPI KsValidateConnectRequest - (PIRP Irp, ULONG DescriptorsCount, - const KSPIN_DESCRIPTOR *Descriptor, PKSPIN_CONNECT *Connect); - -KSDDKAPI NTSTATUS NTAPI KsPinPropertyHandler - (PIRP Irp, PKSPROPERTY Property, PVOID Data, - ULONG DescriptorsCount, const KSPIN_DESCRIPTOR *Descriptor); - -KSDDKAPI NTSTATUS NTAPI KsPinDataIntersection - (PIRP Irp, PKSP_PIN Pin, PVOID Data, ULONG DescriptorsCount, - const KSPIN_DESCRIPTOR *Descriptor, - PFNKSINTERSECTHANDLER IntersectHandler); - -KSDDKAPI NTSTATUS NTAPI KsPinDataIntersectionEx - (PIRP Irp, PKSP_PIN Pin, PVOID Data, ULONG DescriptorsCount, - const KSPIN_DESCRIPTOR *Descriptor, ULONG DescriptorSize, - PFNKSINTERSECTHANDLEREX IntersectHandler, PVOID HandlerContext); - -KSDDKAPI NTSTATUS NTAPI KsHandleSizedListQuery - (PIRP Irp, ULONG DataItemsCount, ULONG DataItemSize, - const VOID *DataItems); - -#ifndef MAKEINTRESOURCE -#define MAKEINTRESOURCE(r) ((ULONG_PTR) (USHORT) r) -#endif -#ifndef RT_STRING -#define RT_STRING MAKEINTRESOURCE(6) -#define RT_RCDATA MAKEINTRESOURCE(10) -#endif - -KSDDKAPI NTSTATUS NTAPI KsLoadResource - (PVOID ImageBase, POOL_TYPE PoolType, ULONG_PTR ResourceName, - ULONG ResourceType, PVOID *Resource, PULONG ResourceSize); - -KSDDKAPI NTSTATUS NTAPI KsGetImageNameAndResourceId - (HANDLE RegKey, PUNICODE_STRING ImageName, PULONG_PTR ResourceId, - PULONG ValueType); - -KSDDKAPI NTSTATUS NTAPI KsMapModuleName - (PDEVICE_OBJECT PhysicalDeviceObject, PUNICODE_STRING ModuleName, - PUNICODE_STRING ImageName, PULONG_PTR ResourceId, - PULONG ValueType); - -KSDDKAPI NTSTATUS NTAPI KsReferenceBusObject (KSDEVICE_HEADER Header); -KSDDKAPI VOID NTAPI KsDereferenceBusObject (KSDEVICE_HEADER Header); -KSDDKAPI NTSTATUS NTAPI KsDispatchQuerySecurity (PDEVICE_OBJECT DeviceObject, PIRP Irp); -KSDDKAPI NTSTATUS NTAPI KsDispatchSetSecurity (PDEVICE_OBJECT DeviceObject, PIRP Irp); -KSDDKAPI NTSTATUS NTAPI KsDispatchSpecificProperty (PIRP Irp, PFNKSHANDLER Handler); -KSDDKAPI NTSTATUS NTAPI KsDispatchSpecificMethod (PIRP Irp, PFNKSHANDLER Handler); - -KSDDKAPI NTSTATUS NTAPI KsReadFile - (PFILE_OBJECT FileObject, PKEVENT Event, PVOID PortContext, - PIO_STATUS_BLOCK IoStatusBlock, PVOID Buffer, ULONG Length, - ULONG Key, KPROCESSOR_MODE RequestorMode); - -KSDDKAPI NTSTATUS NTAPI KsWriteFile - (PFILE_OBJECT FileObject, PKEVENT Event, PVOID PortContext, - PIO_STATUS_BLOCK IoStatusBlock, PVOID Buffer, ULONG Length, - ULONG Key, KPROCESSOR_MODE RequestorMode); - -KSDDKAPI NTSTATUS NTAPI KsQueryInformationFile - (PFILE_OBJECT FileObject, PVOID FileInformation, ULONG Length, - FILE_INFORMATION_CLASS FileInformationClass); - -KSDDKAPI NTSTATUS NTAPI KsSetInformationFile - (PFILE_OBJECT FileObject, PVOID FileInformation, ULONG Length, - FILE_INFORMATION_CLASS FileInformationClass); - -KSDDKAPI NTSTATUS NTAPI KsStreamIo - (PFILE_OBJECT FileObject, PKEVENT Event, PVOID PortContext, - PIO_COMPLETION_ROUTINE CompletionRoutine, PVOID CompletionContext, - KSCOMPLETION_INVOCATION CompletionInvocationFlags, - PIO_STATUS_BLOCK IoStatusBlock, PVOID StreamHeaders, ULONG Length, - ULONG Flags, KPROCESSOR_MODE RequestorMode); - -KSDDKAPI NTSTATUS NTAPI KsProbeStreamIrp(PIRP Irp, ULONG ProbeFlags, ULONG HeaderSize); -KSDDKAPI NTSTATUS NTAPI KsAllocateExtraData(PIRP Irp, ULONG ExtraSize, PVOID *ExtraBuffer); -KSDDKAPI VOID NTAPI KsNullDriverUnload (PDRIVER_OBJECT DriverObject); - -KSDDKAPI NTSTATUS NTAPI KsSetMajorFunctionHandler - (PDRIVER_OBJECT DriverObject, ULONG MajorFunction); - -KSDDKAPI NTSTATUS NTAPI KsDispatchInvalidDeviceRequest - (PDEVICE_OBJECT DeviceObject, PIRP Irp); - -KSDDKAPI NTSTATUS NTAPI KsDefaultDeviceIoCompletion - (PDEVICE_OBJECT DeviceObject, PIRP Irp); - -KSDDKAPI NTSTATUS NTAPI KsDispatchIrp(PDEVICE_OBJECT DeviceObject, PIRP Irp); - -KSDDKAPI BOOLEAN NTAPI KsDispatchFastIoDeviceControlFailure - (PFILE_OBJECT FileObject, BOOLEAN Wait, PVOID InputBuffer, - ULONG InputBufferLength, PVOID OutputBuffer, - ULONG OutputBufferLength, ULONG IoControlCode, - PIO_STATUS_BLOCK IoStatus, PDEVICE_OBJECT DeviceObject); - -KSDDKAPI BOOLEAN NTAPI KsDispatchFastReadFailure - (PFILE_OBJECT FileObject, PLARGE_INTEGER FileOffset, - ULONG Length, BOOLEAN Wait, ULONG LockKey, PVOID Buffer, - PIO_STATUS_BLOCK IoStatus, PDEVICE_OBJECT DeviceObject); - -#define KsDispatchFastWriteFailure KsDispatchFastReadFailure - -KSDDKAPI VOID NTAPI KsCancelRoutine(PDEVICE_OBJECT DeviceObject, PIRP Irp); -KSDDKAPI VOID NTAPI KsCancelIo(PLIST_ENTRY QueueHead, PKSPIN_LOCK SpinLock); -KSDDKAPI VOID NTAPI KsReleaseIrpOnCancelableQueue(PIRP Irp, PDRIVER_CANCEL DriverCancel); - -KSDDKAPI PIRP NTAPI KsRemoveIrpFromCancelableQueue - (PLIST_ENTRY QueueHead, PKSPIN_LOCK SpinLock, - KSLIST_ENTRY_LOCATION ListLocation, - KSIRP_REMOVAL_OPERATION RemovalOperation); - -KSDDKAPI NTSTATUS NTAPI KsMoveIrpsOnCancelableQueue - (PLIST_ENTRY SourceList, PKSPIN_LOCK SourceLock, - PLIST_ENTRY DestinationList, PKSPIN_LOCK DestinationLock, - KSLIST_ENTRY_LOCATION ListLocation, - PFNKSIRPLISTCALLBACK ListCallback, PVOID Context); - -KSDDKAPI VOID NTAPI KsRemoveSpecificIrpFromCancelableQueue (PIRP Irp); - -KSDDKAPI VOID NTAPI KsAddIrpToCancelableQueue - (PLIST_ENTRY QueueHead, PKSPIN_LOCK SpinLock, PIRP Irp, - KSLIST_ENTRY_LOCATION ListLocation, PDRIVER_CANCEL DriverCancel); - -KSDDKAPI NTSTATUS NTAPI KsAcquireResetValue(PIRP Irp, KSRESET *ResetValue); - -KSDDKAPI NTSTATUS NTAPI KsTopologyPropertyHandler - (PIRP Irp, PKSPROPERTY Property, PVOID Data, - const KSTOPOLOGY *Topology); - -KSDDKAPI VOID NTAPI KsAcquireDeviceSecurityLock(KSDEVICE_HEADER Header, BOOLEAN Exclusive); -KSDDKAPI VOID NTAPI KsReleaseDeviceSecurityLock (KSDEVICE_HEADER Header); -KSDDKAPI NTSTATUS NTAPI KsDefaultDispatchPnp(PDEVICE_OBJECT DeviceObject, PIRP Irp); -KSDDKAPI NTSTATUS NTAPI KsDefaultDispatchPower(PDEVICE_OBJECT DeviceObject, PIRP Irp); -KSDDKAPI NTSTATUS NTAPI KsDefaultForwardIrp(PDEVICE_OBJECT DeviceObject, PIRP Irp); - -KSDDKAPI VOID NTAPI KsSetDevicePnpAndBaseObject - (KSDEVICE_HEADER Header, PDEVICE_OBJECT PnpDeviceObject, - PDEVICE_OBJECT BaseObject); - -KSDDKAPI PDEVICE_OBJECT NTAPI KsQueryDevicePnpObject (KSDEVICE_HEADER Header); -KSDDKAPI ACCESS_MASK NTAPI KsQueryObjectAccessMask (KSOBJECT_HEADER Header); - -KSDDKAPI VOID NTAPI KsRecalculateStackDepth - (KSDEVICE_HEADER Header, BOOLEAN ReuseStackLocation); - -KSDDKAPI VOID NTAPI KsSetTargetState - (KSOBJECT_HEADER Header, KSTARGET_STATE TargetState); - -KSDDKAPI VOID NTAPI KsSetTargetDeviceObject - (KSOBJECT_HEADER Header, PDEVICE_OBJECT TargetDevice); - -KSDDKAPI VOID NTAPI KsSetPowerDispatch - (KSOBJECT_HEADER Header, PFNKSCONTEXT_DISPATCH PowerDispatch, - PVOID PowerContext); - -KSDDKAPI PKSOBJECT_CREATE_ITEM NTAPI KsQueryObjectCreateItem (KSOBJECT_HEADER Header); - -KSDDKAPI NTSTATUS NTAPI KsAllocateDeviceHeader - (KSDEVICE_HEADER *Header, ULONG ItemsCount, - PKSOBJECT_CREATE_ITEM ItemsList); - -KSDDKAPI VOID NTAPI KsFreeDeviceHeader (KSDEVICE_HEADER Header); - -KSDDKAPI NTSTATUS NTAPI KsAllocateObjectHeader - (KSOBJECT_HEADER *Header, ULONG ItemsCount, - PKSOBJECT_CREATE_ITEM ItemsList, PIRP Irp, - const KSDISPATCH_TABLE *Table); - -KSDDKAPI VOID NTAPI KsFreeObjectHeader (KSOBJECT_HEADER Header); - -KSDDKAPI NTSTATUS NTAPI KsAddObjectCreateItemToDeviceHeader - (KSDEVICE_HEADER Header, PDRIVER_DISPATCH Create, PVOID Context, - PWSTR ObjectClass, PSECURITY_DESCRIPTOR SecurityDescriptor); - -KSDDKAPI NTSTATUS NTAPI KsAddObjectCreateItemToObjectHeader - (KSOBJECT_HEADER Header, PDRIVER_DISPATCH Create, PVOID Context, - PWSTR ObjectClass, PSECURITY_DESCRIPTOR SecurityDescriptor); - -KSDDKAPI NTSTATUS NTAPI KsAllocateObjectCreateItem - (KSDEVICE_HEADER Header, PKSOBJECT_CREATE_ITEM CreateItem, - BOOLEAN AllocateEntry, PFNKSITEMFREECALLBACK ItemFreeCallback); - -KSDDKAPI NTSTATUS NTAPI KsFreeObjectCreateItem - (KSDEVICE_HEADER Header, PUNICODE_STRING CreateItem); - -KSDDKAPI NTSTATUS NTAPI KsFreeObjectCreateItemsByContext - (KSDEVICE_HEADER Header, PVOID Context); - -KSDDKAPI NTSTATUS NTAPI KsCreateDefaultSecurity - (PSECURITY_DESCRIPTOR ParentSecurity, - PSECURITY_DESCRIPTOR *DefaultSecurity); - -KSDDKAPI NTSTATUS NTAPI KsForwardIrp - (PIRP Irp, PFILE_OBJECT FileObject, BOOLEAN ReuseStackLocation); - -KSDDKAPI NTSTATUS NTAPI KsForwardAndCatchIrp - (PDEVICE_OBJECT DeviceObject, PIRP Irp, PFILE_OBJECT FileObject, - KSSTACK_USE StackUse); - -KSDDKAPI NTSTATUS NTAPI KsSynchronousIoControlDevice - (PFILE_OBJECT FileObject, KPROCESSOR_MODE RequestorMode, - ULONG IoControl, PVOID InBuffer, ULONG InSize, PVOID OutBuffer, - ULONG OutSize, PULONG BytesReturned); - -KSDDKAPI NTSTATUS NTAPI KsUnserializeObjectPropertiesFromRegistry - (PFILE_OBJECT FileObject, HANDLE ParentKey, - PUNICODE_STRING RegistryPath); - -KSDDKAPI NTSTATUS NTAPI KsCacheMedium - (PUNICODE_STRING SymbolicLink, PKSPIN_MEDIUM Medium, - ULONG PinDirection); - -KSDDKAPI NTSTATUS NTAPI KsRegisterWorker - (WORK_QUEUE_TYPE WorkQueueType, PKSWORKER *Worker); - -KSDDKAPI NTSTATUS NTAPI KsRegisterCountedWorker - (WORK_QUEUE_TYPE WorkQueueType, PWORK_QUEUE_ITEM CountedWorkItem, - PKSWORKER *Worker); - -KSDDKAPI VOID NTAPI KsUnregisterWorker (PKSWORKER Worker); -KSDDKAPI NTSTATUS NTAPI KsQueueWorkItem(PKSWORKER Worker, PWORK_QUEUE_ITEM WorkItem); -KSDDKAPI ULONG NTAPI KsIncrementCountedWorker (PKSWORKER Worker); -KSDDKAPI ULONG NTAPI KsDecrementCountedWorker (PKSWORKER Worker); - -KSDDKAPI NTSTATUS NTAPI KsCreateTopologyNode - (HANDLE ParentHandle, PKSNODE_CREATE NodeCreate, - ACCESS_MASK DesiredAccess, PHANDLE NodeHandle); - -KSDDKAPI NTSTATUS NTAPI KsValidateTopologyNodeCreateRequest - (PIRP Irp, PKSTOPOLOGY Topology, PKSNODE_CREATE *NodeCreate); - -KSDDKAPI NTSTATUS NTAPI KsMergeAutomationTables - (PKSAUTOMATION_TABLE *AutomationTableAB, - PKSAUTOMATION_TABLE AutomationTableA, - PKSAUTOMATION_TABLE AutomationTableB, - KSOBJECT_BAG Bag); - -KSDDKAPI NTSTATUS NTAPI KsInitializeDriver - (PDRIVER_OBJECT DriverObject, PUNICODE_STRING RegistryPathName, - const KSDEVICE_DESCRIPTOR *Descriptor); - -KSDDKAPI NTSTATUS NTAPI KsAddDevice - (PDRIVER_OBJECT DriverObject, PDEVICE_OBJECT PhysicalDeviceObject); - -KSDDKAPI NTSTATUS NTAPI KsCreateDevice - (PDRIVER_OBJECT DriverObject, PDEVICE_OBJECT PhysicalDeviceObject, - const KSDEVICE_DESCRIPTOR *Descriptor, ULONG ExtensionSize, - PKSDEVICE *Device); - -KSDDKAPI NTSTATUS NTAPI KsInitializeDevice - (PDEVICE_OBJECT FunctionalDeviceObject, - PDEVICE_OBJECT PhysicalDeviceObject, - PDEVICE_OBJECT NextDeviceObject, - const KSDEVICE_DESCRIPTOR *Descriptor); - -KSDDKAPI void NTAPI KsTerminateDevice (PDEVICE_OBJECT DeviceObject); -KSDDKAPI PKSDEVICE NTAPI KsGetDeviceForDeviceObject (PDEVICE_OBJECT FunctionalDeviceObject); -KSDDKAPI void NTAPI KsAcquireDevice (PKSDEVICE Device); -KSDDKAPI void NTAPI KsReleaseDevice (PKSDEVICE Device); - -KSDDKAPI void NTAPI KsDeviceRegisterAdapterObject - (PKSDEVICE Device, PADAPTER_OBJECT AdapterObject, - ULONG MaxMappingsByteCount, ULONG MappingTableStride); - -KSDDKAPI ULONG NTAPI KsDeviceGetBusData - (PKSDEVICE Device, ULONG DataType, PVOID Buffer, ULONG Offset, - ULONG Length); - -KSDDKAPI ULONG NTAPI KsDeviceSetBusData - (PKSDEVICE Device, ULONG DataType, PVOID Buffer, ULONG Offset, - ULONG Length); - -KSDDKAPI NTSTATUS NTAPI KsCreateFilterFactory - (PDEVICE_OBJECT DeviceObject, const KSFILTER_DESCRIPTOR *Descriptor, - PWSTR RefString, PSECURITY_DESCRIPTOR SecurityDescriptor, - ULONG CreateItemFlags, PFNKSFILTERFACTORYPOWER SleepCallback, - PFNKSFILTERFACTORYPOWER WakeCallback, - PKSFILTERFACTORY *FilterFactory); - -#define KsDeleteFilterFactory(FilterFactory) \ - KsFreeObjectCreateItemsByContext( *(KSDEVICE_HEADER *)( \ - KsFilterFactoryGetParentDevice(FilterFactory)->FunctionalDeviceObject->DeviceExtension),\ - FilterFactory) - -KSDDKAPI NTSTATUS NTAPI KsFilterFactoryUpdateCacheData - (PKSFILTERFACTORY FilterFactory, - const KSFILTER_DESCRIPTOR *FilterDescriptor); - -KSDDKAPI NTSTATUS NTAPI KsFilterFactoryAddCreateItem - (PKSFILTERFACTORY FilterFactory, PWSTR RefString, - PSECURITY_DESCRIPTOR SecurityDescriptor, ULONG CreateItemFlags); - -KSDDKAPI NTSTATUS NTAPI KsFilterFactorySetDeviceClassesState - (PKSFILTERFACTORY FilterFactory, BOOLEAN NewState); - -KSDDKAPI PUNICODE_STRING NTAPI KsFilterFactoryGetSymbolicLink - (PKSFILTERFACTORY FilterFactory); - -KSDDKAPI void NTAPI KsAddEvent(PVOID Object, PKSEVENT_ENTRY EventEntry); - -void __forceinline KsFilterAddEvent (PKSFILTER Filter, PKSEVENT_ENTRY EventEntry) -{ - KsAddEvent(Filter, EventEntry); -} - -void __forceinline KsPinAddEvent (PKSPIN Pin, PKSEVENT_ENTRY EventEntry) -{ - KsAddEvent(Pin, EventEntry); -} - -KSDDKAPI NTSTATUS NTAPI KsDefaultAddEventHandler - (PIRP Irp, PKSEVENTDATA EventData, PKSEVENT_ENTRY EventEntry); - -KSDDKAPI void NTAPI KsGenerateEvents - (PVOID Object, const GUID *EventSet, ULONG EventId, - ULONG DataSize, PVOID Data, PFNKSGENERATEEVENTCALLBACK CallBack, - PVOID CallBackContext); - -void __forceinline KsFilterGenerateEvents - (PKSFILTER Filter, const GUID *EventSet, ULONG EventId, - ULONG DataSize, PVOID Data, PFNKSGENERATEEVENTCALLBACK CallBack, - PVOID CallBackContext) -{ - KsGenerateEvents(Filter, EventSet, EventId, DataSize, Data, CallBack, - CallBackContext); -} - -void __forceinline KsPinGenerateEvents - (PKSPIN Pin, const GUID *EventSet, ULONG EventId, - ULONG DataSize, PVOID Data, PFNKSGENERATEEVENTCALLBACK CallBack, - PVOID CallBackContext) -{ - KsGenerateEvents(Pin, EventSet, EventId, DataSize, Data, CallBack, - CallBackContext); -} - -typedef enum { - KSSTREAM_POINTER_STATE_UNLOCKED = 0, - KSSTREAM_POINTER_STATE_LOCKED -} KSSTREAM_POINTER_STATE; - -KSDDKAPI NTSTATUS NTAPI KsPinGetAvailableByteCount - (PKSPIN Pin, PLONG InputDataBytes, PLONG OutputBufferBytes); - -KSDDKAPI PKSSTREAM_POINTER NTAPI KsPinGetLeadingEdgeStreamPointer - (PKSPIN Pin, KSSTREAM_POINTER_STATE State); - -KSDDKAPI PKSSTREAM_POINTER NTAPI KsPinGetTrailingEdgeStreamPointer - (PKSPIN Pin, KSSTREAM_POINTER_STATE State); - -KSDDKAPI NTSTATUS NTAPI KsStreamPointerSetStatusCode - (PKSSTREAM_POINTER StreamPointer, NTSTATUS Status); - -KSDDKAPI NTSTATUS NTAPI KsStreamPointerLock (PKSSTREAM_POINTER StreamPointer); -KSDDKAPI void NTAPI KsStreamPointerUnlock(PKSSTREAM_POINTER StreamPointer, BOOLEAN Eject); - -KSDDKAPI void NTAPI KsStreamPointerAdvanceOffsetsAndUnlock - (PKSSTREAM_POINTER StreamPointer, ULONG InUsed, ULONG OutUsed, - BOOLEAN Eject); - -KSDDKAPI void NTAPI KsStreamPointerDelete (PKSSTREAM_POINTER StreamPointer); - -KSDDKAPI NTSTATUS NTAPI KsStreamPointerClone - (PKSSTREAM_POINTER StreamPointer, PFNKSSTREAMPOINTER CancelCallback, - ULONG ContextSize, PKSSTREAM_POINTER *CloneStreamPointer); - -KSDDKAPI NTSTATUS NTAPI KsStreamPointerAdvanceOffsets - (PKSSTREAM_POINTER StreamPointer, ULONG InUsed, ULONG OutUsed, - BOOLEAN Eject); - -KSDDKAPI NTSTATUS NTAPI KsStreamPointerAdvance (PKSSTREAM_POINTER StreamPointer); -KSDDKAPI PMDL NTAPI KsStreamPointerGetMdl (PKSSTREAM_POINTER StreamPointer); - -KSDDKAPI PIRP NTAPI KsStreamPointerGetIrp - (PKSSTREAM_POINTER StreamPointer, PBOOLEAN FirstFrameInIrp, - PBOOLEAN LastFrameInIrp); - -KSDDKAPI void NTAPI KsStreamPointerScheduleTimeout - (PKSSTREAM_POINTER StreamPointer, PFNKSSTREAMPOINTER Callback, - ULONGLONG Interval); - -KSDDKAPI void NTAPI KsStreamPointerCancelTimeout (PKSSTREAM_POINTER StreamPointer); -KSDDKAPI PKSSTREAM_POINTER NTAPI KsPinGetFirstCloneStreamPointer (PKSPIN Pin); - -KSDDKAPI PKSSTREAM_POINTER NTAPI KsStreamPointerGetNextClone - (PKSSTREAM_POINTER StreamPointer); - -KSDDKAPI NTSTATUS NTAPI KsPinHandshake(PKSPIN Pin, PKSHANDSHAKE In, PKSHANDSHAKE Out); -KSDDKAPI void NTAPI KsCompletePendingRequest (PIRP Irp); -KSDDKAPI KSOBJECTTYPE NTAPI KsGetObjectTypeFromIrp (PIRP Irp); -KSDDKAPI PVOID NTAPI KsGetObjectFromFileObject (PFILE_OBJECT FileObject); -KSDDKAPI KSOBJECTTYPE NTAPI KsGetObjectTypeFromFileObject (PFILE_OBJECT FileObject); - -PKSFILTER __forceinline KsGetFilterFromFileObject (PFILE_OBJECT FileObject) -{ - return (PKSFILTER) KsGetObjectFromFileObject(FileObject); -} - -PKSPIN __forceinline KsGetPinFromFileObject (PFILE_OBJECT FileObject) -{ - return (PKSPIN) KsGetObjectFromFileObject(FileObject); -} - -KSDDKAPI PKSGATE NTAPI KsFilterGetAndGate (PKSFILTER Filter); -KSDDKAPI void NTAPI KsFilterAcquireProcessingMutex (PKSFILTER Filter); -KSDDKAPI void NTAPI KsFilterReleaseProcessingMutex (PKSFILTER Filter); -KSDDKAPI void NTAPI KsFilterAttemptProcessing(PKSFILTER Filter, BOOLEAN Asynchronous); -KSDDKAPI PKSGATE NTAPI KsPinGetAndGate(PKSPIN Pin); -KSDDKAPI void NTAPI KsPinAttachAndGate(PKSPIN Pin, PKSGATE AndGate); -KSDDKAPI void NTAPI KsPinAttachOrGate (PKSPIN Pin, PKSGATE OrGate); -KSDDKAPI void NTAPI KsPinAcquireProcessingMutex (PKSPIN Pin); -KSDDKAPI void NTAPI KsPinReleaseProcessingMutex (PKSPIN Pin); -KSDDKAPI BOOLEAN NTAPI KsProcessPinUpdate (PKSPROCESSPIN ProcessPin); - -KSDDKAPI void NTAPI KsPinGetCopyRelationships - (PKSPIN Pin, PKSPIN *CopySource, PKSPIN *DelegateBranch); - -KSDDKAPI void NTAPI KsPinAttemptProcessing(PKSPIN Pin, BOOLEAN Asynchronous); -KSDDKAPI PVOID NTAPI KsGetParent (PVOID Object); - -PKSDEVICE __forceinline KsFilterFactoryGetParentDevice (PKSFILTERFACTORY FilterFactory) -{ - return (PKSDEVICE) KsGetParent((PVOID) FilterFactory); -} - -PKSFILTERFACTORY __forceinline KsFilterGetParentFilterFactory (PKSFILTER Filter) -{ - return (PKSFILTERFACTORY) KsGetParent((PVOID) Filter); -} - -KSDDKAPI PKSFILTER NTAPI KsPinGetParentFilter (PKSPIN Pin); -KSDDKAPI PVOID NTAPI KsGetFirstChild (PVOID Object); - -PKSFILTERFACTORY __forceinline KsDeviceGetFirstChildFilterFactory (PKSDEVICE Device) -{ - return (PKSFILTERFACTORY) KsGetFirstChild((PVOID) Device); -} - -PKSFILTER __forceinline KsFilterFactoryGetFirstChildFilter (PKSFILTERFACTORY FilterFactory) -{ - return (PKSFILTER) KsGetFirstChild((PVOID) FilterFactory); -} - -KSDDKAPI ULONG NTAPI KsFilterGetChildPinCount(PKSFILTER Filter, ULONG PinId); -KSDDKAPI PKSPIN NTAPI KsFilterGetFirstChildPin(PKSFILTER Filter, ULONG PinId); -KSDDKAPI PVOID NTAPI KsGetNextSibling (PVOID Object); -KSDDKAPI PKSPIN NTAPI KsPinGetNextSiblingPin (PKSPIN Pin); - -PKSFILTERFACTORY __forceinline KsFilterFactoryGetNextSiblingFilterFactory - (PKSFILTERFACTORY FilterFactory) -{ - return (PKSFILTERFACTORY) KsGetNextSibling((PVOID) FilterFactory); -} - -PKSFILTER __forceinline KsFilterGetNextSiblingFilter (PKSFILTER Filter) -{ - return (PKSFILTER) KsGetNextSibling((PVOID) Filter); -} - -KSDDKAPI PKSDEVICE NTAPI KsGetDevice (PVOID Object); - -PKSDEVICE __forceinline KsFilterFactoryGetDevice (PKSFILTERFACTORY FilterFactory) -{ - return KsGetDevice((PVOID) FilterFactory); -} - -PKSDEVICE __forceinline KsFilterGetDevice (PKSFILTER Filter) -{ - return KsGetDevice((PVOID) Filter); -} - -PKSDEVICE __forceinline KsPinGetDevice (PKSPIN Pin) -{ - return KsGetDevice((PVOID) Pin); -} - -KSDDKAPI PKSFILTER NTAPI KsGetFilterFromIrp (PIRP Irp); -KSDDKAPI PKSPIN NTAPI KsGetPinFromIrp (PIRP Irp); -KSDDKAPI ULONG NTAPI KsGetNodeIdFromIrp (PIRP Irp); -KSDDKAPI void NTAPI KsAcquireControl (PVOID Object); -KSDDKAPI void NTAPI KsReleaseControl (PVOID Object); - -void __forceinline KsFilterAcquireControl (PKSFILTER Filter) -{ - KsAcquireControl((PVOID) Filter); -} - -void __forceinline KsFilterReleaseControl (PKSFILTER Filter) -{ - KsReleaseControl((PVOID) Filter); -} - -void __forceinline KsPinAcquireControl (PKSPIN Pin) -{ - KsAcquireControl((PVOID) Pin); -} - -void __forceinline KsPinReleaseControl (PKSPIN Pin) -{ - KsReleaseControl((PVOID) Pin); -} - -KSDDKAPI NTSTATUS NTAPI KsAddItemToObjectBag - (KSOBJECT_BAG ObjectBag, PVOID Item, PFNKSFREE Free); - -KSDDKAPI ULONG NTAPI KsRemoveItemFromObjectBag - (KSOBJECT_BAG ObjectBag, PVOID Item, BOOLEAN Free); - -#define KsDiscard(Object,Pointer) \ - KsRemoveItemFromObjectBag((Object)->Bag, (PVOID)(Pointer), TRUE) - -KSDDKAPI NTSTATUS NTAPI KsAllocateObjectBag(PKSDEVICE Device, KSOBJECT_BAG *ObjectBag); -KSDDKAPI void NTAPI KsFreeObjectBag (KSOBJECT_BAG ObjectBag); - -KSDDKAPI NTSTATUS NTAPI KsCopyObjectBagItems - (KSOBJECT_BAG ObjectBagDestination, KSOBJECT_BAG ObjectBagSource); - -KSDDKAPI NTSTATUS NTAPI _KsEdit - (KSOBJECT_BAG ObjectBag, PVOID *PointerToPointerToItem, - ULONG NewSize, ULONG OldSize, ULONG Tag); - -#define KsEdit(Object, PointerToPointer, Tag) \ - _KsEdit((Object)->Bag, (PVOID*)(PointerToPointer), \ - sizeof(**(PointerToPointer)), sizeof(**(PointerToPointer)), (Tag)) - -#define KsEditSized(Object, PointerToPointer, NewSize, OldSize, Tag) \ - _KsEdit((Object)->Bag, (PVOID*)(PointerToPointer), (NewSize), (OldSize), (Tag)) - -KSDDKAPI NTSTATUS NTAPI KsRegisterFilterWithNoKSPins - (PDEVICE_OBJECT DeviceObject, const GUID *InterfaceClassGUID, - ULONG PinCount, WINBOOL *PinDirection, KSPIN_MEDIUM *MediumList, - GUID *CategoryList); - -KSDDKAPI NTSTATUS NTAPI KsFilterCreatePinFactory - (PKSFILTER Filter, const KSPIN_DESCRIPTOR_EX *const PinDescriptor, - PULONG PinID); - -KSDDKAPI NTSTATUS NTAPI KsFilterCreateNode - (PKSFILTER Filter, const KSNODE_DESCRIPTOR *const NodeDescriptor, - PULONG NodeID); - -KSDDKAPI NTSTATUS NTAPI KsFilterAddTopologyConnections - (PKSFILTER Filter, ULONG NewConnectionsCount, - const KSTOPOLOGY_CONNECTION *const NewTopologyConnections); - -KSDDKAPI NTSTATUS NTAPI KsPinGetConnectedPinInterface - (PKSPIN Pin, const GUID *InterfaceId, PVOID *Interface); - -KSDDKAPI PFILE_OBJECT NTAPI KsPinGetConnectedPinFileObject (PKSPIN Pin); -KSDDKAPI PDEVICE_OBJECT NTAPI KsPinGetConnectedPinDeviceObject (PKSPIN Pin); - -KSDDKAPI NTSTATUS NTAPI KsPinGetConnectedFilterInterface - (PKSPIN Pin, const GUID *InterfaceId, PVOID *Interface); - -#if defined(_UNKNOWN_H_) || defined(__IUnknown_INTERFACE_DEFINED__) -KSDDKAPI NTSTATUS NTAPI KsPinGetReferenceClockInterface - (PKSPIN Pin, PIKSREFERENCECLOCK *Interface); -#endif /* defined(_UNKNOWN_H_) || defined(__IUnknown_INTERFACE_DEFINED__) */ - -KSDDKAPI VOID NTAPI KsPinSetPinClockTime(PKSPIN Pin, LONGLONG Time); - -KSDDKAPI NTSTATUS NTAPI KsPinSubmitFrame - (PKSPIN Pin, PVOID Data, ULONG Size, - PKSSTREAM_HEADER StreamHeader, PVOID Context); - -KSDDKAPI NTSTATUS NTAPI KsPinSubmitFrameMdl - (PKSPIN Pin, PMDL Mdl, PKSSTREAM_HEADER StreamHeader, - PVOID Context); - -KSDDKAPI void NTAPI KsPinRegisterFrameReturnCallback - (PKSPIN Pin, PFNKSPINFRAMERETURN FrameReturn); - -KSDDKAPI void NTAPI KsPinRegisterIrpCompletionCallback - (PKSPIN Pin, PFNKSPINIRPCOMPLETION IrpCompletion); - -KSDDKAPI void NTAPI KsPinRegisterHandshakeCallback - (PKSPIN Pin, PFNKSPINHANDSHAKE Handshake); - -KSDDKAPI void NTAPI KsFilterRegisterPowerCallbacks - (PKSFILTER Filter, PFNKSFILTERPOWER Sleep, PFNKSFILTERPOWER Wake); - -KSDDKAPI void NTAPI KsPinRegisterPowerCallbacks - (PKSPIN Pin, PFNKSPINPOWER Sleep, PFNKSPINPOWER Wake); - -#if defined(_UNKNOWN_H_) || defined(__IUnknown_INTERFACE_DEFINED__) -KSDDKAPI PUNKNOWN NTAPI KsRegisterAggregatedClientUnknown - (PVOID Object, PUNKNOWN ClientUnknown); - -KSDDKAPI PUNKNOWN NTAPI KsGetOuterUnknown (PVOID Object); - -PUNKNOWN __forceinline KsDeviceRegisterAggregatedClientUnknown - (PKSDEVICE Device, PUNKNOWN ClientUnknown) -{ - return KsRegisterAggregatedClientUnknown((PVOID)Device, ClientUnknown); -} - -PUNKNOWN __forceinline KsDeviceGetOuterUnknown (PKSDEVICE Device) -{ - return KsGetOuterUnknown((PVOID) Device); -} - -PUNKNOWN __forceinline KsFilterFactoryRegisterAggregatedClientUnknown - (PKSFILTERFACTORY FilterFactory, PUNKNOWN ClientUnknown) -{ - return KsRegisterAggregatedClientUnknown((PVOID)FilterFactory, ClientUnknown); -} - -PUNKNOWN __forceinline KsFilterFactoryGetOuterUnknown (PKSFILTERFACTORY FilterFactory) -{ - return KsGetOuterUnknown((PVOID)FilterFactory); -} - -PUNKNOWN __forceinline KsFilterRegisterAggregatedClientUnknown - (PKSFILTER Filter, PUNKNOWN ClientUnknown) -{ - return KsRegisterAggregatedClientUnknown((PVOID)Filter, ClientUnknown); -} - -PUNKNOWN __forceinline KsFilterGetOuterUnknown (PKSFILTER Filter) -{ - return KsGetOuterUnknown((PVOID)Filter); -} - -PUNKNOWN __forceinline KsPinRegisterAggregatedClientUnknown - (PKSPIN Pin, PUNKNOWN ClientUnknown) -{ - return KsRegisterAggregatedClientUnknown((PVOID)Pin, ClientUnknown); -} - -PUNKNOWN __forceinline KsPinGetOuterUnknown (PKSPIN Pin) -{ - return KsGetOuterUnknown((PVOID)Pin); -} -#endif /* defined(_UNKNOWN_H_) || defined(__IUnknown_INTERFACE_DEFINED__) */ - -#else /* _NTDDK_ */ - -#ifndef KS_NO_CREATE_FUNCTIONS -KSDDKAPI DWORD WINAPI KsCreateAllocator(HANDLE ConnectionHandle,PKSALLOCATOR_FRAMING AllocatorFraming,PHANDLE AllocatorHandle); -KSDDKAPI DWORD NTAPI KsCreateClock(HANDLE ConnectionHandle,PKSCLOCK_CREATE ClockCreate,PHANDLE ClockHandle); -KSDDKAPI DWORD WINAPI KsCreatePin(HANDLE FilterHandle,PKSPIN_CONNECT Connect,ACCESS_MASK DesiredAccess,PHANDLE ConnectionHandle); -KSDDKAPI DWORD WINAPI KsCreateTopologyNode(HANDLE ParentHandle,PKSNODE_CREATE NodeCreate,ACCESS_MASK DesiredAccess,PHANDLE NodeHandle); -#endif - -#endif /* _NTDDK_ */ - -#ifdef __cplusplus -} -#endif - -#define DENY_USERMODE_ACCESS(pIrp,CompleteRequest) \ - if(pIrp->RequestorMode!=KernelMode) { \ - pIrp->IoStatus.Information = 0; \ - pIrp->IoStatus.Status = STATUS_INVALID_DEVICE_REQUEST; \ - if(CompleteRequest) \ - IoCompleteRequest (pIrp,IO_NO_INCREMENT); \ - return STATUS_INVALID_DEVICE_REQUEST; \ - } - -#endif /* _KS_ */ - diff --git a/portaudio/src/hostapi/wasapi/mingw-include/ksguid.h b/portaudio/src/hostapi/wasapi/mingw-include/ksguid.h deleted file mode 100644 index f0774d0..0000000 --- a/portaudio/src/hostapi/wasapi/mingw-include/ksguid.h +++ /dev/null @@ -1,28 +0,0 @@ -/** - * This file has no copyright assigned and is placed in the Public Domain. - * This file is part of the w64 mingw-runtime package. - * No warranty is given; refer to the file DISCLAIMER.PD within this package. - */ -#define INITGUID -#include <guiddef.h> - -#ifndef DECLSPEC_SELECTANY -#define DECLSPEC_SELECTANY __declspec(selectany) -#endif - -#ifdef DEFINE_GUIDEX -#undef DEFINE_GUIDEX -#endif - -#ifdef __cplusplus -#define DEFINE_GUIDEX(name) EXTERN_C const CDECL GUID DECLSPEC_SELECTANY name = { STATICGUIDOF(name) } -#else -#define DEFINE_GUIDEX(name) const CDECL GUID DECLSPEC_SELECTANY name = { STATICGUIDOF(name) } -#endif -#ifndef STATICGUIDOF -#define STATICGUIDOF(guid) STATIC_##guid -#endif - -#ifndef DEFINE_WAVEFORMATEX_GUID -#define DEFINE_WAVEFORMATEX_GUID(x) (USHORT)(x),0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71 -#endif diff --git a/portaudio/src/hostapi/wasapi/mingw-include/ksmedia.h b/portaudio/src/hostapi/wasapi/mingw-include/ksmedia.h deleted file mode 100644 index f029b01..0000000 --- a/portaudio/src/hostapi/wasapi/mingw-include/ksmedia.h +++ /dev/null @@ -1,4610 +0,0 @@ -/** - * This file has no copyright assigned and is placed in the Public Domain. - * This file is part of the w64 mingw-runtime package. - * No warranty is given; refer to the file DISCLAIMER.PD within this package. - */ -#if !defined(_KS_) -#warning ks.h must be included before ksmedia.h -#include "ks.h" -#endif - -#if __GNUC__ >= 3 -#pragma GCC system_header -#endif - -#if !defined(_KSMEDIA_) -#define _KSMEDIA_ - -typedef struct { - KSPROPERTY Property; - KSMULTIPLE_ITEM MultipleItem; -} KSMULTIPLE_DATA_PROP,*PKSMULTIPLE_DATA_PROP; - -#define STATIC_KSMEDIUMSETID_MidiBus \ - 0x05908040L,0x3246,0x11D0,0xA5,0xD6,0x28,0xDB,0x04,0xC1,0x00,0x00 -DEFINE_GUIDSTRUCT("05908040-3246-11D0-A5D6-28DB04C10000",KSMEDIUMSETID_MidiBus); -#define KSMEDIUMSETID_MidiBus DEFINE_GUIDNAMED(KSMEDIUMSETID_MidiBus) - -#define STATIC_KSMEDIUMSETID_VPBus \ - 0xA18C15ECL,0xCE43,0x11D0,0xAB,0xE7,0x00,0xA0,0xC9,0x22,0x31,0x96 -DEFINE_GUIDSTRUCT("A18C15EC-CE43-11D0-ABE7-00A0C9223196",KSMEDIUMSETID_VPBus); -#define KSMEDIUMSETID_VPBus DEFINE_GUIDNAMED(KSMEDIUMSETID_VPBus) - -#define STATIC_KSINTERFACESETID_Media \ - 0x3A13EB40L,0x30A7,0x11D0,0xA5,0xD6,0x28,0xDB,0x04,0xC1,0x00,0x00 -DEFINE_GUIDSTRUCT("3A13EB40-30A7-11D0-A5D6-28DB04C10000",KSINTERFACESETID_Media); -#define KSINTERFACESETID_Media DEFINE_GUIDNAMED(KSINTERFACESETID_Media) - -typedef enum { - KSINTERFACE_MEDIA_MUSIC, - KSINTERFACE_MEDIA_WAVE_BUFFERED, - KSINTERFACE_MEDIA_WAVE_QUEUED -} KSINTERFACE_MEDIA; - -#ifndef INIT_USBAUDIO_MID -#define INIT_USBAUDIO_MID(guid,id) \ -{ \ - (guid)->Data1 = 0x4e1cecd2 + (USHORT)(id); \ - (guid)->Data2 = 0x1679; \ - (guid)->Data3 = 0x463b; \ - (guid)->Data4[0] = 0xa7; \ - (guid)->Data4[1] = 0x2f; \ - (guid)->Data4[2] = 0xa5; \ - (guid)->Data4[3] = 0xbf; \ - (guid)->Data4[4] = 0x64; \ - (guid)->Data4[5] = 0xc8; \ - (guid)->Data4[6] = 0x6e; \ - (guid)->Data4[7] = 0xba; \ -} -#define EXTRACT_USBAUDIO_MID(guid) \ - (USHORT)((guid)->Data1 - 0x4e1cecd2) -#define DEFINE_USBAUDIO_MID_GUID(id) \ - 0x4e1cecd2+(USHORT)(id),0x1679,0x463b,0xa7,0x2f,0xa5,0xbf,0x64,0xc8,0x6e,0xba -#define IS_COMPATIBLE_USBAUDIO_MID(guid) \ - (((guid)->Data1 >= 0x4e1cecd2) && \ - ((guid)->Data1 < 0x4e1cecd2 + 0xffff) && \ - ((guid)->Data2 == 0x1679) && \ - ((guid)->Data3 == 0x463b) && \ - ((guid)->Data4[0] == 0xa7) && \ - ((guid)->Data4[1] == 0x2f) && \ - ((guid)->Data4[2] == 0xa5) && \ - ((guid)->Data4[3] == 0xbf) && \ - ((guid)->Data4[4] == 0x64) && \ - ((guid)->Data4[5] == 0xc8) && \ - ((guid)->Data4[6] == 0x6e) && \ - ((guid)->Data4[7] == 0xba) ) -#endif /* INIT_USBAUDIO_MID */ - -#ifndef INIT_USBAUDIO_PID -#define INIT_USBAUDIO_PID(guid,id) \ -{ \ - (guid)->Data1 = 0xabcc5a5e + (USHORT)(id); \ - (guid)->Data2 = 0xc263; \ - (guid)->Data3 = 0x463b; \ - (guid)->Data4[0] = 0xa7; \ - (guid)->Data4[1] = 0x2f; \ - (guid)->Data4[2] = 0xa5; \ - (guid)->Data4[3] = 0xbf; \ - (guid)->Data4[4] = 0x64; \ - (guid)->Data4[5] = 0xc8; \ - (guid)->Data4[6] = 0x6e; \ - (guid)->Data4[7] = 0xba; \ -} -#define EXTRACT_USBAUDIO_PID(guid) \ - (USHORT)((guid)->Data1 - 0xabcc5a5e) -#define DEFINE_USBAUDIO_PID_GUID(id) \ - 0xabcc5a5e+(USHORT)(id),0xc263,0x463b,0xa7,0x2f,0xa5,0xbf,0x64,0xc8,0x6e,0xba -#define IS_COMPATIBLE_USBAUDIO_PID(guid) \ - (((guid)->Data1 >= 0xabcc5a5e) && \ - ((guid)->Data1 < 0xabcc5a5e + 0xffff) && \ - ((guid)->Data2 == 0xc263) && \ - ((guid)->Data3 == 0x463b) && \ - ((guid)->Data4[0] == 0xa7) && \ - ((guid)->Data4[1] == 0x2f) && \ - ((guid)->Data4[2] == 0xa5) && \ - ((guid)->Data4[3] == 0xbf) && \ - ((guid)->Data4[4] == 0x64) && \ - ((guid)->Data4[5] == 0xc8) && \ - ((guid)->Data4[6] == 0x6e) && \ - ((guid)->Data4[7] == 0xba) ) -#endif /* INIT_USBAUDIO_PID */ - -#ifndef INIT_USBAUDIO_PRODUCT_NAME -#define INIT_USBAUDIO_PRODUCT_NAME(guid,vid,pid,strIndex) \ -{ \ - (guid)->Data1 = 0XFC575048 + (USHORT)(vid); \ - (guid)->Data2 = 0x2E08 + (USHORT)(pid); \ - (guid)->Data3 = 0x463B + (USHORT)(strIndex); \ - (guid)->Data4[0] = 0xA7; \ - (guid)->Data4[1] = 0x2F; \ - (guid)->Data4[2] = 0xA5; \ - (guid)->Data4[3] = 0xBF; \ - (guid)->Data4[4] = 0x64; \ - (guid)->Data4[5] = 0xC8; \ - (guid)->Data4[6] = 0x6E; \ - (guid)->Data4[7] = 0xBA; \ -} -#define DEFINE_USBAUDIO_PRODUCT_NAME(vid,pid,strIndex) \ - 0xFC575048+(USHORT)(vid),0x2E08+(USHORT)(pid),0x463B+(USHORT)(strIndex),0xA7,0x2F,0xA5,0xBF,0x64,0xC8,0x6E,0xBA -#endif /* INIT_USBAUDIO_PRODUCT_NAME */ - -#define STATIC_KSCOMPONENTID_USBAUDIO \ - 0x8F1275F0,0x26E9,0x4264,0xBA,0x4D,0x39,0xFF,0xF0,0x1D,0x94,0xAA -DEFINE_GUIDSTRUCT("8F1275F0-26E9-4264-BA4D-39FFF01D94AA",KSCOMPONENTID_USBAUDIO); -#define KSCOMPONENTID_USBAUDIO DEFINE_GUIDNAMED(KSCOMPONENTID_USBAUDIO) - -#define INIT_USB_TERMINAL(guid,id) \ -{ \ - (guid)->Data1 = 0xDFF219E0 + (USHORT)(id); \ - (guid)->Data2 = 0xF70F; \ - (guid)->Data3 = 0x11D0; \ - (guid)->Data4[0] = 0xb9; \ - (guid)->Data4[1] = 0x17; \ - (guid)->Data4[2] = 0x00; \ - (guid)->Data4[3] = 0xa0; \ - (guid)->Data4[4] = 0xc9; \ - (guid)->Data4[5] = 0x22; \ - (guid)->Data4[6] = 0x31; \ - (guid)->Data4[7] = 0x96; \ -} -#define EXTRACT_USB_TERMINAL(guid) \ - (USHORT)((guid)->Data1 - 0xDFF219E0) -#define DEFINE_USB_TERMINAL_GUID(id) \ - 0xDFF219E0+(USHORT)(id),0xF70F,0x11D0,0xB9,0x17,0x00,0xA0,0xC9,0x22,0x31,0x96 - -#define STATIC_KSNODETYPE_MICROPHONE \ - DEFINE_USB_TERMINAL_GUID(0x0201) -DEFINE_GUIDSTRUCT("DFF21BE1-F70F-11D0-B917-00A0C9223196",KSNODETYPE_MICROPHONE); -#define KSNODETYPE_MICROPHONE DEFINE_GUIDNAMED(KSNODETYPE_MICROPHONE) - -#define STATIC_KSNODETYPE_DESKTOP_MICROPHONE \ - DEFINE_USB_TERMINAL_GUID(0x0202) -DEFINE_GUIDSTRUCT("DFF21BE2-F70F-11D0-B917-00A0C9223196",KSNODETYPE_DESKTOP_MICROPHONE); -#define KSNODETYPE_DESKTOP_MICROPHONE DEFINE_GUIDNAMED(KSNODETYPE_DESKTOP_MICROPHONE) - -#define STATIC_KSNODETYPE_PERSONAL_MICROPHONE \ - DEFINE_USB_TERMINAL_GUID(0x0203) -DEFINE_GUIDSTRUCT("DFF21BE3-F70F-11D0-B917-00A0C9223196",KSNODETYPE_PERSONAL_MICROPHONE); -#define KSNODETYPE_PERSONAL_MICROPHONE DEFINE_GUIDNAMED(KSNODETYPE_PERSONAL_MICROPHONE) - -#define STATIC_KSNODETYPE_OMNI_DIRECTIONAL_MICROPHONE \ - DEFINE_USB_TERMINAL_GUID(0x0204) -DEFINE_GUIDSTRUCT("DFF21BE4-F70F-11D0-B917-00A0C9223196",KSNODETYPE_OMNI_DIRECTIONAL_MICROPHONE); -#define KSNODETYPE_OMNI_DIRECTIONAL_MICROPHONE DEFINE_GUIDNAMED(KSNODETYPE_OMNI_DIRECTIONAL_MICROPHONE) - -#define STATIC_KSNODETYPE_MICROPHONE_ARRAY \ - DEFINE_USB_TERMINAL_GUID(0x0205) -DEFINE_GUIDSTRUCT("DFF21BE5-F70F-11D0-B917-00A0C9223196",KSNODETYPE_MICROPHONE_ARRAY); -#define KSNODETYPE_MICROPHONE_ARRAY DEFINE_GUIDNAMED(KSNODETYPE_MICROPHONE_ARRAY) - -#define STATIC_KSNODETYPE_PROCESSING_MICROPHONE_ARRAY \ - DEFINE_USB_TERMINAL_GUID(0x0206) -DEFINE_GUIDSTRUCT("DFF21BE6-F70F-11D0-B917-00A0C9223196",KSNODETYPE_PROCESSING_MICROPHONE_ARRAY); -#define KSNODETYPE_PROCESSING_MICROPHONE_ARRAY DEFINE_GUIDNAMED(KSNODETYPE_PROCESSING_MICROPHONE_ARRAY) - -#define STATIC_KSCATEGORY_MICROPHONE_ARRAY_PROCESSOR \ - 0x830a44f2,0xa32d,0x476b,0xbe,0x97,0x42,0x84,0x56,0x73,0xb3,0x5a -DEFINE_GUIDSTRUCT("830a44f2-a32d-476b-be97-42845673b35a",KSCATEGORY_MICROPHONE_ARRAY_PROCESSOR); -#define KSCATEGORY_MICROPHONE_ARRAY_PROCESSOR DEFINE_GUIDNAMED(KSCATEGORY_MICROPHONE_ARRAY_PROCESSOR) - -#define STATIC_KSNODETYPE_SPEAKER \ - DEFINE_USB_TERMINAL_GUID(0x0301) -DEFINE_GUIDSTRUCT("DFF21CE1-F70F-11D0-B917-00A0C9223196",KSNODETYPE_SPEAKER); -#define KSNODETYPE_SPEAKER DEFINE_GUIDNAMED(KSNODETYPE_SPEAKER) - -#define STATIC_KSNODETYPE_HEADPHONES \ - DEFINE_USB_TERMINAL_GUID(0x0302) -DEFINE_GUIDSTRUCT("DFF21CE2-F70F-11D0-B917-00A0C9223196",KSNODETYPE_HEADPHONES); -#define KSNODETYPE_HEADPHONES DEFINE_GUIDNAMED(KSNODETYPE_HEADPHONES) - -#define STATIC_KSNODETYPE_HEAD_MOUNTED_DISPLAY_AUDIO \ - DEFINE_USB_TERMINAL_GUID(0x0303) -DEFINE_GUIDSTRUCT("DFF21CE3-F70F-11D0-B917-00A0C9223196",KSNODETYPE_HEAD_MOUNTED_DISPLAY_AUDIO); -#define KSNODETYPE_HEAD_MOUNTED_DISPLAY_AUDIO DEFINE_GUIDNAMED(KSNODETYPE_HEAD_MOUNTED_DISPLAY_AUDIO) - -#define STATIC_KSNODETYPE_DESKTOP_SPEAKER \ - DEFINE_USB_TERMINAL_GUID(0x0304) -DEFINE_GUIDSTRUCT("DFF21CE4-F70F-11D0-B917-00A0C9223196",KSNODETYPE_DESKTOP_SPEAKER); -#define KSNODETYPE_DESKTOP_SPEAKER DEFINE_GUIDNAMED(KSNODETYPE_DESKTOP_SPEAKER) - -#define STATIC_KSNODETYPE_ROOM_SPEAKER \ - DEFINE_USB_TERMINAL_GUID(0x0305) -DEFINE_GUIDSTRUCT("DFF21CE5-F70F-11D0-B917-00A0C9223196",KSNODETYPE_ROOM_SPEAKER); -#define KSNODETYPE_ROOM_SPEAKER DEFINE_GUIDNAMED(KSNODETYPE_ROOM_SPEAKER) - -#define STATIC_KSNODETYPE_COMMUNICATION_SPEAKER \ - DEFINE_USB_TERMINAL_GUID(0x0306) -DEFINE_GUIDSTRUCT("DFF21CE6-F70F-11D0-B917-00A0C9223196",KSNODETYPE_COMMUNICATION_SPEAKER); -#define KSNODETYPE_COMMUNICATION_SPEAKER DEFINE_GUIDNAMED(KSNODETYPE_COMMUNICATION_SPEAKER) - -#define STATIC_KSNODETYPE_LOW_FREQUENCY_EFFECTS_SPEAKER \ - DEFINE_USB_TERMINAL_GUID(0x0307) -DEFINE_GUIDSTRUCT("DFF21CE7-F70F-11D0-B917-00A0C9223196",KSNODETYPE_LOW_FREQUENCY_EFFECTS_SPEAKER); -#define KSNODETYPE_LOW_FREQUENCY_EFFECTS_SPEAKER DEFINE_GUIDNAMED(KSNODETYPE_LOW_FREQUENCY_EFFECTS_SPEAKER) - -#define STATIC_KSNODETYPE_HANDSET \ - DEFINE_USB_TERMINAL_GUID(0x0401) -DEFINE_GUIDSTRUCT("DFF21DE1-F70F-11D0-B917-00A0C9223196",KSNODETYPE_HANDSET); -#define KSNODETYPE_HANDSET DEFINE_GUIDNAMED(KSNODETYPE_HANDSET) - -#define STATIC_KSNODETYPE_HEADSET \ - DEFINE_USB_TERMINAL_GUID(0x0402) -DEFINE_GUIDSTRUCT("DFF21DE2-F70F-11D0-B917-00A0C9223196",KSNODETYPE_HEADSET); -#define KSNODETYPE_HEADSET DEFINE_GUIDNAMED(KSNODETYPE_HEADSET) - -#define STATIC_KSNODETYPE_SPEAKERPHONE_NO_ECHO_REDUCTION \ - DEFINE_USB_TERMINAL_GUID(0x0403) -DEFINE_GUIDSTRUCT("DFF21DE3-F70F-11D0-B917-00A0C9223196",KSNODETYPE_SPEAKERPHONE_NO_ECHO_REDUCTION); -#define KSNODETYPE_SPEAKERPHONE_NO_ECHO_REDUCTION DEFINE_GUIDNAMED(KSNODETYPE_SPEAKERPHONE_NO_ECHO_REDUCTION) - -#define STATIC_KSNODETYPE_ECHO_SUPPRESSING_SPEAKERPHONE \ - DEFINE_USB_TERMINAL_GUID(0x0404) -DEFINE_GUIDSTRUCT("DFF21DE4-F70F-11D0-B917-00A0C9223196",KSNODETYPE_ECHO_SUPPRESSING_SPEAKERPHONE); -#define KSNODETYPE_ECHO_SUPPRESSING_SPEAKERPHONE DEFINE_GUIDNAMED(KSNODETYPE_ECHO_SUPPRESSING_SPEAKERPHONE) - -#define STATIC_KSNODETYPE_ECHO_CANCELING_SPEAKERPHONE \ - DEFINE_USB_TERMINAL_GUID(0x0405) -DEFINE_GUIDSTRUCT("DFF21DE5-F70F-11D0-B917-00A0C9223196",KSNODETYPE_ECHO_CANCELING_SPEAKERPHONE); -#define KSNODETYPE_ECHO_CANCELING_SPEAKERPHONE DEFINE_GUIDNAMED(KSNODETYPE_ECHO_CANCELING_SPEAKERPHONE) - -#define STATIC_KSNODETYPE_PHONE_LINE \ - DEFINE_USB_TERMINAL_GUID(0x0501) -DEFINE_GUIDSTRUCT("DFF21EE1-F70F-11D0-B917-00A0C9223196",KSNODETYPE_PHONE_LINE); -#define KSNODETYPE_PHONE_LINE DEFINE_GUIDNAMED(KSNODETYPE_PHONE_LINE) - -#define STATIC_KSNODETYPE_TELEPHONE \ - DEFINE_USB_TERMINAL_GUID(0x0502) -DEFINE_GUIDSTRUCT("DFF21EE2-F70F-11D0-B917-00A0C9223196",KSNODETYPE_TELEPHONE); -#define KSNODETYPE_TELEPHONE DEFINE_GUIDNAMED(KSNODETYPE_TELEPHONE) - -#define STATIC_KSNODETYPE_DOWN_LINE_PHONE \ - DEFINE_USB_TERMINAL_GUID(0x0503) -DEFINE_GUIDSTRUCT("DFF21EE3-F70F-11D0-B917-00A0C9223196",KSNODETYPE_DOWN_LINE_PHONE); -#define KSNODETYPE_DOWN_LINE_PHONE DEFINE_GUIDNAMED(KSNODETYPE_DOWN_LINE_PHONE) - -#define STATIC_KSNODETYPE_ANALOG_CONNECTOR \ - DEFINE_USB_TERMINAL_GUID(0x601) -DEFINE_GUIDSTRUCT("DFF21FE1-F70F-11D0-B917-00A0C9223196",KSNODETYPE_ANALOG_CONNECTOR); -#define KSNODETYPE_ANALOG_CONNECTOR DEFINE_GUIDNAMED(KSNODETYPE_ANALOG_CONNECTOR) - -#define STATIC_KSNODETYPE_DIGITAL_AUDIO_INTERFACE \ - DEFINE_USB_TERMINAL_GUID(0x0602) -DEFINE_GUIDSTRUCT("DFF21FE2-F70F-11D0-B917-00A0C9223196",KSNODETYPE_DIGITAL_AUDIO_INTERFACE); -#define KSNODETYPE_DIGITAL_AUDIO_INTERFACE DEFINE_GUIDNAMED(KSNODETYPE_DIGITAL_AUDIO_INTERFACE) - -#define STATIC_KSNODETYPE_LINE_CONNECTOR \ - DEFINE_USB_TERMINAL_GUID(0x0603) -DEFINE_GUIDSTRUCT("DFF21FE3-F70F-11D0-B917-00A0C9223196",KSNODETYPE_LINE_CONNECTOR); -#define KSNODETYPE_LINE_CONNECTOR DEFINE_GUIDNAMED(KSNODETYPE_LINE_CONNECTOR) - -#define STATIC_KSNODETYPE_LEGACY_AUDIO_CONNECTOR \ - DEFINE_USB_TERMINAL_GUID(0x0604) -DEFINE_GUIDSTRUCT("DFF21FE4-F70F-11D0-B917-00A0C9223196",KSNODETYPE_LEGACY_AUDIO_CONNECTOR); -#define KSNODETYPE_LEGACY_AUDIO_CONNECTOR DEFINE_GUIDNAMED(KSNODETYPE_LEGACY_AUDIO_CONNECTOR) - -#define STATIC_KSNODETYPE_SPDIF_INTERFACE \ - DEFINE_USB_TERMINAL_GUID(0x0605) -DEFINE_GUIDSTRUCT("DFF21FE5-F70F-11D0-B917-00A0C9223196",KSNODETYPE_SPDIF_INTERFACE); -#define KSNODETYPE_SPDIF_INTERFACE DEFINE_GUIDNAMED(KSNODETYPE_SPDIF_INTERFACE) - -#define STATIC_KSNODETYPE_1394_DA_STREAM \ - DEFINE_USB_TERMINAL_GUID(0x0606) -DEFINE_GUIDSTRUCT("DFF21FE6-F70F-11D0-B917-00A0C9223196",KSNODETYPE_1394_DA_STREAM); -#define KSNODETYPE_1394_DA_STREAM DEFINE_GUIDNAMED(KSNODETYPE_1394_DA_STREAM) - -#define STATIC_KSNODETYPE_1394_DV_STREAM_SOUNDTRACK \ - DEFINE_USB_TERMINAL_GUID(0x0607) -DEFINE_GUIDSTRUCT("DFF21FE7-F70F-11D0-B917-00A0C9223196",KSNODETYPE_1394_DV_STREAM_SOUNDTRACK); -#define KSNODETYPE_1394_DV_STREAM_SOUNDTRACK DEFINE_GUIDNAMED(KSNODETYPE_1394_DV_STREAM_SOUNDTRACK) - -#define STATIC_KSNODETYPE_LEVEL_CALIBRATION_NOISE_SOURCE \ - DEFINE_USB_TERMINAL_GUID(0x0701) -DEFINE_GUIDSTRUCT("DFF220E1-F70F-11D0-B917-00A0C9223196",KSNODETYPE_LEVEL_CALIBRATION_NOISE_SOURCE); -#define KSNODETYPE_LEVEL_CALIBRATION_NOISE_SOURCE DEFINE_GUIDNAMED(KSNODETYPE_LEVEL_CALIBRATION_NOISE_SOURCE) - -#define STATIC_KSNODETYPE_EQUALIZATION_NOISE \ - DEFINE_USB_TERMINAL_GUID(0x0702) -DEFINE_GUIDSTRUCT("DFF220E2-F70F-11D0-B917-00A0C9223196",KSNODETYPE_EQUALIZATION_NOISE); -#define KSNODETYPE_EQUALIZATION_NOISE DEFINE_GUIDNAMED(KSNODETYPE_EQUALIZATION_NOISE) - -#define STATIC_KSNODETYPE_CD_PLAYER \ - DEFINE_USB_TERMINAL_GUID(0x0703) -DEFINE_GUIDSTRUCT("DFF220E3-F70F-11D0-B917-00A0C9223196",KSNODETYPE_CD_PLAYER); -#define KSNODETYPE_CD_PLAYER DEFINE_GUIDNAMED(KSNODETYPE_CD_PLAYER) - -#define STATIC_KSNODETYPE_DAT_IO_DIGITAL_AUDIO_TAPE \ - DEFINE_USB_TERMINAL_GUID(0x0704) -DEFINE_GUIDSTRUCT("DFF220E4-F70F-11D0-B917-00A0C9223196",KSNODETYPE_DAT_IO_DIGITAL_AUDIO_TAPE); -#define KSNODETYPE_DAT_IO_DIGITAL_AUDIO_TAPE DEFINE_GUIDNAMED(KSNODETYPE_DAT_IO_DIGITAL_AUDIO_TAPE) - -#define STATIC_KSNODETYPE_DCC_IO_DIGITAL_COMPACT_CASSETTE \ - DEFINE_USB_TERMINAL_GUID(0x0705) -DEFINE_GUIDSTRUCT("DFF220E5-F70F-11D0-B917-00A0C9223196",KSNODETYPE_DCC_IO_DIGITAL_COMPACT_CASSETTE); -#define KSNODETYPE_DCC_IO_DIGITAL_COMPACT_CASSETTE DEFINE_GUIDNAMED(KSNODETYPE_DCC_IO_DIGITAL_COMPACT_CASSETTE) - -#define STATIC_KSNODETYPE_MINIDISK \ - DEFINE_USB_TERMINAL_GUID(0x0706) -DEFINE_GUIDSTRUCT("DFF220E6-F70F-11D0-B917-00A0C9223196",KSNODETYPE_MINIDISK); -#define KSNODETYPE_MINIDISK DEFINE_GUIDNAMED(KSNODETYPE_MINIDISK) - -#define STATIC_KSNODETYPE_ANALOG_TAPE \ - DEFINE_USB_TERMINAL_GUID(0x0707) -DEFINE_GUIDSTRUCT("DFF220E7-F70F-11D0-B917-00A0C9223196",KSNODETYPE_ANALOG_TAPE); -#define KSNODETYPE_ANALOG_TAPE DEFINE_GUIDNAMED(KSNODETYPE_ANALOG_TAPE) - -#define STATIC_KSNODETYPE_PHONOGRAPH \ - DEFINE_USB_TERMINAL_GUID(0x0708) -DEFINE_GUIDSTRUCT("DFF220E8-F70F-11D0-B917-00A0C9223196",KSNODETYPE_PHONOGRAPH); -#define KSNODETYPE_PHONOGRAPH DEFINE_GUIDNAMED(KSNODETYPE_PHONOGRAPH) - -#define STATIC_KSNODETYPE_VCR_AUDIO \ - DEFINE_USB_TERMINAL_GUID(0x0708) -DEFINE_GUIDSTRUCT("DFF220E9-F70F-11D0-B917-00A0C9223196",KSNODETYPE_VCR_AUDIO); -#define KSNODETYPE_VCR_AUDIO DEFINE_GUIDNAMED(KSNODETYPE_VCR_AUDIO) - -#define STATIC_KSNODETYPE_VIDEO_DISC_AUDIO \ - DEFINE_USB_TERMINAL_GUID(0x070A) -DEFINE_GUIDSTRUCT("DFF220EA-F70F-11D0-B917-00A0C9223196",KSNODETYPE_VIDEO_DISC_AUDIO); -#define KSNODETYPE_VIDEO_DISC_AUDIO DEFINE_GUIDNAMED(KSNODETYPE_VIDEO_DISC_AUDIO) - -#define STATIC_KSNODETYPE_DVD_AUDIO \ - DEFINE_USB_TERMINAL_GUID(0x070B) -DEFINE_GUIDSTRUCT("DFF220EB-F70F-11D0-B917-00A0C9223196",KSNODETYPE_DVD_AUDIO); -#define KSNODETYPE_DVD_AUDIO DEFINE_GUIDNAMED(KSNODETYPE_DVD_AUDIO) - -#define STATIC_KSNODETYPE_TV_TUNER_AUDIO \ - DEFINE_USB_TERMINAL_GUID(0x070C) -DEFINE_GUIDSTRUCT("DFF220EC-F70F-11D0-B917-00A0C9223196",KSNODETYPE_TV_TUNER_AUDIO); -#define KSNODETYPE_TV_TUNER_AUDIO DEFINE_GUIDNAMED(KSNODETYPE_TV_TUNER_AUDIO) - -#define STATIC_KSNODETYPE_SATELLITE_RECEIVER_AUDIO \ - DEFINE_USB_TERMINAL_GUID(0x070D) -DEFINE_GUIDSTRUCT("DFF220ED-F70F-11D0-B917-00A0C9223196",KSNODETYPE_SATELLITE_RECEIVER_AUDIO); -#define KSNODETYPE_SATELLITE_RECEIVER_AUDIO DEFINE_GUIDNAMED(KSNODETYPE_SATELLITE_RECEIVER_AUDIO) - -#define STATIC_KSNODETYPE_CABLE_TUNER_AUDIO \ - DEFINE_USB_TERMINAL_GUID(0x070E) -DEFINE_GUIDSTRUCT("DFF220EE-F70F-11D0-B917-00A0C9223196",KSNODETYPE_CABLE_TUNER_AUDIO); -#define KSNODETYPE_CABLE_TUNER_AUDIO DEFINE_GUIDNAMED(KSNODETYPE_CABLE_TUNER_AUDIO) - -#define STATIC_KSNODETYPE_DSS_AUDIO \ - DEFINE_USB_TERMINAL_GUID(0x070F) -DEFINE_GUIDSTRUCT("DFF220EF-F70F-11D0-B917-00A0C9223196",KSNODETYPE_DSS_AUDIO); -#define KSNODETYPE_DSS_AUDIO DEFINE_GUIDNAMED(KSNODETYPE_DSS_AUDIO) - -#define STATIC_KSNODETYPE_RADIO_RECEIVER \ - DEFINE_USB_TERMINAL_GUID(0x0710) -DEFINE_GUIDSTRUCT("DFF220F0-F70F-11D0-B917-00A0C9223196",KSNODETYPE_RADIO_RECEIVER); -#define KSNODETYPE_RADIO_RECEIVER DEFINE_GUIDNAMED(KSNODETYPE_RADIO_RECEIVER) - -#define STATIC_KSNODETYPE_RADIO_TRANSMITTER \ - DEFINE_USB_TERMINAL_GUID(0x0711) -DEFINE_GUIDSTRUCT("DFF220F1-F70F-11D0-B917-00A0C9223196",KSNODETYPE_RADIO_TRANSMITTER); -#define KSNODETYPE_RADIO_TRANSMITTER DEFINE_GUIDNAMED(KSNODETYPE_RADIO_TRANSMITTER) - -#define STATIC_KSNODETYPE_MULTITRACK_RECORDER \ - DEFINE_USB_TERMINAL_GUID(0x0712) -DEFINE_GUIDSTRUCT("DFF220F2-F70F-11D0-B917-00A0C9223196",KSNODETYPE_MULTITRACK_RECORDER); -#define KSNODETYPE_MULTITRACK_RECORDER DEFINE_GUIDNAMED(KSNODETYPE_MULTITRACK_RECORDER) - -#define STATIC_KSNODETYPE_SYNTHESIZER \ - DEFINE_USB_TERMINAL_GUID(0x0713) -DEFINE_GUIDSTRUCT("DFF220F3-F70F-11D0-B917-00A0C9223196",KSNODETYPE_SYNTHESIZER); -#define KSNODETYPE_SYNTHESIZER DEFINE_GUIDNAMED(KSNODETYPE_SYNTHESIZER) - -#define STATIC_KSNODETYPE_SWSYNTH \ - 0x423274A0L,0x8B81,0x11D1,0xA0,0x50,0x00,0x00,0xF8,0x00,0x47,0x88 -DEFINE_GUIDSTRUCT("423274A0-8B81-11D1-A050-0000F8004788",KSNODETYPE_SWSYNTH); -#define KSNODETYPE_SWSYNTH DEFINE_GUIDNAMED(KSNODETYPE_SWSYNTH) - -#define STATIC_KSNODETYPE_SWMIDI \ - 0xCB9BEFA0L,0xA251,0x11D1,0xA0,0x50,0x00,0x00,0xF8,0x00,0x47,0x88 -DEFINE_GUIDSTRUCT("CB9BEFA0-A251-11D1-A050-0000F8004788",KSNODETYPE_SWMIDI); -#define KSNODETYPE_SWMIDI DEFINE_GUIDNAMED(KSNODETYPE_SWMIDI) - -#define STATIC_KSNODETYPE_DRM_DESCRAMBLE \ - 0xFFBB6E3FL,0xCCFE,0x4D84,0x90,0xD9,0x42,0x14,0x18,0xB0,0x3A,0x8E -DEFINE_GUIDSTRUCT("FFBB6E3F-CCFE-4D84-90D9-421418B03A8E",KSNODETYPE_DRM_DESCRAMBLE); -#define KSNODETYPE_DRM_DESCRAMBLE DEFINE_GUIDNAMED(KSNODETYPE_DRM_DESCRAMBLE) - -#define STATIC_KSCATEGORY_AUDIO \ - 0x6994AD04L,0x93EF,0x11D0,0xA3,0xCC,0x00,0xA0,0xC9,0x22,0x31,0x96 -DEFINE_GUIDSTRUCT("6994AD04-93EF-11D0-A3CC-00A0C9223196",KSCATEGORY_AUDIO); -#define KSCATEGORY_AUDIO DEFINE_GUIDNAMED(KSCATEGORY_AUDIO) - -#define STATIC_KSCATEGORY_VIDEO \ - 0x6994AD05L,0x93EF,0x11D0,0xA3,0xCC,0x00,0xA0,0xC9,0x22,0x31,0x96 -DEFINE_GUIDSTRUCT("6994AD05-93EF-11D0-A3CC-00A0C9223196",KSCATEGORY_VIDEO); -#define KSCATEGORY_VIDEO DEFINE_GUIDNAMED(KSCATEGORY_VIDEO) - -/* Added for Vista and later */ -#define STATIC_KSCATEGORY_REALTIME \ - 0xEB115FFCL, 0x10C8, 0x4964, 0x83, 0x1D, 0x6D, 0xCB, 0x02, 0xE6, 0xF2, 0x3F -DEFINE_GUIDSTRUCT("EB115FFC-10C8-4964-831D-6DCB02E6F23F", KSCATEGORY_REALTIME); -#define KSCATEGORY_REALTIME DEFINE_GUIDNAMED(KSCATEGORY_REALTIME) - -#define STATIC_KSCATEGORY_TEXT \ - 0x6994AD06L,0x93EF,0x11D0,0xA3,0xCC,0x00,0xA0,0xC9,0x22,0x31,0x96 -DEFINE_GUIDSTRUCT("6994AD06-93EF-11D0-A3CC-00A0C9223196",KSCATEGORY_TEXT); -#define KSCATEGORY_TEXT DEFINE_GUIDNAMED(KSCATEGORY_TEXT) - -#define STATIC_KSCATEGORY_NETWORK \ - 0x67C9CC3CL,0x69C4,0x11D2,0x87,0x59,0x00,0xA0,0xC9,0x22,0x31,0x96 -DEFINE_GUIDSTRUCT("67C9CC3C-69C4-11D2-8759-00A0C9223196",KSCATEGORY_NETWORK); -#define KSCATEGORY_NETWORK DEFINE_GUIDNAMED(KSCATEGORY_NETWORK) - -#define STATIC_KSCATEGORY_TOPOLOGY \ - 0xDDA54A40L,0x1E4C,0x11D1,0xA0,0x50,0x40,0x57,0x05,0xC1,0x00,0x00 -DEFINE_GUIDSTRUCT("DDA54A40-1E4C-11D1-A050-405705C10000",KSCATEGORY_TOPOLOGY); -#define KSCATEGORY_TOPOLOGY DEFINE_GUIDNAMED(KSCATEGORY_TOPOLOGY) - -#define STATIC_KSCATEGORY_VIRTUAL \ - 0x3503EAC4L,0x1F26,0x11D1,0x8A,0xB0,0x00,0xA0,0xC9,0x22,0x31,0x96 -DEFINE_GUIDSTRUCT("3503EAC4-1F26-11D1-8AB0-00A0C9223196",KSCATEGORY_VIRTUAL); -#define KSCATEGORY_VIRTUAL DEFINE_GUIDNAMED(KSCATEGORY_VIRTUAL) - -#define STATIC_KSCATEGORY_ACOUSTIC_ECHO_CANCEL \ - 0xBF963D80L,0xC559,0x11D0,0x8A,0x2B,0x00,0xA0,0xC9,0x25,0x5A,0xC1 -DEFINE_GUIDSTRUCT("BF963D80-C559-11D0-8A2B-00A0C9255AC1",KSCATEGORY_ACOUSTIC_ECHO_CANCEL); -#define KSCATEGORY_ACOUSTIC_ECHO_CANCEL DEFINE_GUIDNAMED(KSCATEGORY_ACOUSTIC_ECHO_CANCEL) - -#define STATIC_KSCATEGORY_SYSAUDIO \ - 0xA7C7A5B1L,0x5AF3,0x11D1,0x9C,0xED,0x00,0xA0,0x24,0xBF,0x04,0x07 -DEFINE_GUIDSTRUCT("A7C7A5B1-5AF3-11D1-9CED-00A024BF0407",KSCATEGORY_SYSAUDIO); -#define KSCATEGORY_SYSAUDIO DEFINE_GUIDNAMED(KSCATEGORY_SYSAUDIO) - -#define STATIC_KSCATEGORY_WDMAUD \ - 0x3E227E76L,0x690D,0x11D2,0x81,0x61,0x00,0x00,0xF8,0x77,0x5B,0xF1 -DEFINE_GUIDSTRUCT("3E227E76-690D-11D2-8161-0000F8775BF1",KSCATEGORY_WDMAUD); -#define KSCATEGORY_WDMAUD DEFINE_GUIDNAMED(KSCATEGORY_WDMAUD) - -#define STATIC_KSCATEGORY_AUDIO_GFX \ - 0x9BAF9572L,0x340C,0x11D3,0xAB,0xDC,0x00,0xA0,0xC9,0x0A,0xB1,0x6F -DEFINE_GUIDSTRUCT("9BAF9572-340C-11D3-ABDC-00A0C90AB16F",KSCATEGORY_AUDIO_GFX); -#define KSCATEGORY_AUDIO_GFX DEFINE_GUIDNAMED(KSCATEGORY_AUDIO_GFX) - -#define STATIC_KSCATEGORY_AUDIO_SPLITTER \ - 0x9EA331FAL,0xB91B,0x45F8,0x92,0x85,0xBD,0x2B,0xC7,0x7A,0xFC,0xDE -DEFINE_GUIDSTRUCT("9EA331FA-B91B-45F8-9285-BD2BC77AFCDE",KSCATEGORY_AUDIO_SPLITTER); -#define KSCATEGORY_AUDIO_SPLITTER DEFINE_GUIDNAMED(KSCATEGORY_AUDIO_SPLITTER) - -#define STATIC_KSCATEGORY_SYNTHESIZER STATIC_KSNODETYPE_SYNTHESIZER -#define KSCATEGORY_SYNTHESIZER KSNODETYPE_SYNTHESIZER - -#define STATIC_KSCATEGORY_DRM_DESCRAMBLE STATIC_KSNODETYPE_DRM_DESCRAMBLE -#define KSCATEGORY_DRM_DESCRAMBLE KSNODETYPE_DRM_DESCRAMBLE - -#define STATIC_KSCATEGORY_AUDIO_DEVICE \ - 0xFBF6F530L,0x07B9,0x11D2,0xA7,0x1E,0x00,0x00,0xF8,0x00,0x47,0x88 -DEFINE_GUIDSTRUCT("FBF6F530-07B9-11D2-A71E-0000F8004788",KSCATEGORY_AUDIO_DEVICE); -#define KSCATEGORY_AUDIO_DEVICE DEFINE_GUIDNAMED(KSCATEGORY_AUDIO_DEVICE) - -#define STATIC_KSCATEGORY_PREFERRED_WAVEOUT_DEVICE \ - 0xD6C5066EL,0x72C1,0x11D2,0x97,0x55,0x00,0x00,0xF8,0x00,0x47,0x88 -DEFINE_GUIDSTRUCT("D6C5066E-72C1-11D2-9755-0000F8004788",KSCATEGORY_PREFERRED_WAVEOUT_DEVICE); -#define KSCATEGORY_PREFERRED_WAVEOUT_DEVICE DEFINE_GUIDNAMED(KSCATEGORY_PREFERRED_WAVEOUT_DEVICE) - -#define STATIC_KSCATEGORY_PREFERRED_WAVEIN_DEVICE \ - 0xD6C50671L,0x72C1,0x11D2,0x97,0x55,0x00,0x00,0xF8,0x00,0x47,0x88 -DEFINE_GUIDSTRUCT("D6C50671-72C1-11D2-9755-0000F8004788",KSCATEGORY_PREFERRED_WAVEIN_DEVICE); -#define KSCATEGORY_PREFERRED_WAVEIN_DEVICE DEFINE_GUIDNAMED(KSCATEGORY_PREFERRED_WAVEIN_DEVICE) - -#define STATIC_KSCATEGORY_PREFERRED_MIDIOUT_DEVICE \ - 0xD6C50674L,0x72C1,0x11D2,0x97,0x55,0x00,0x00,0xF8,0x00,0x47,0x88 -DEFINE_GUIDSTRUCT("D6C50674-72C1-11D2-9755-0000F8004788",KSCATEGORY_PREFERRED_MIDIOUT_DEVICE); -#define KSCATEGORY_PREFERRED_MIDIOUT_DEVICE DEFINE_GUIDNAMED(KSCATEGORY_PREFERRED_MIDIOUT_DEVICE) - -#define STATIC_KSCATEGORY_WDMAUD_USE_PIN_NAME \ - 0x47A4FA20L,0xA251,0x11D1,0xA0,0x50,0x00,0x00,0xF8,0x00,0x47,0x88 -DEFINE_GUIDSTRUCT("47A4FA20-A251-11D1-A050-0000F8004788",KSCATEGORY_WDMAUD_USE_PIN_NAME); -#define KSCATEGORY_WDMAUD_USE_PIN_NAME DEFINE_GUIDNAMED(KSCATEGORY_WDMAUD_USE_PIN_NAME) - -#define STATIC_KSCATEGORY_ESCALANTE_PLATFORM_DRIVER \ - 0x74f3aea8L,0x9768,0x11d1,0x8e,0x07,0x00,0xa0,0xc9,0x5e,0xc2,0x2e -DEFINE_GUIDSTRUCT("74f3aea8-9768-11d1-8e07-00a0c95ec22e",KSCATEGORY_ESCALANTE_PLATFORM_DRIVER); -#define KSCATEGORY_ESCALANTE_PLATFORM_DRIVER DEFINE_GUIDNAMED(KSCATEGORY_ESCALANTE_PLATFORM_DRIVER) - -#define STATIC_KSDATAFORMAT_TYPE_VIDEO \ - 0x73646976L,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71 -DEFINE_GUIDSTRUCT("73646976-0000-0010-8000-00aa00389b71",KSDATAFORMAT_TYPE_VIDEO); -#define KSDATAFORMAT_TYPE_VIDEO DEFINE_GUIDNAMED(KSDATAFORMAT_TYPE_VIDEO) - -#define STATIC_KSDATAFORMAT_TYPE_AUDIO \ - 0x73647561L,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71 -DEFINE_GUIDSTRUCT("73647561-0000-0010-8000-00aa00389b71",KSDATAFORMAT_TYPE_AUDIO); -#define KSDATAFORMAT_TYPE_AUDIO DEFINE_GUIDNAMED(KSDATAFORMAT_TYPE_AUDIO) - -#define STATIC_KSDATAFORMAT_TYPE_TEXT \ - 0x73747874L,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71 -DEFINE_GUIDSTRUCT("73747874-0000-0010-8000-00aa00389b71",KSDATAFORMAT_TYPE_TEXT); -#define KSDATAFORMAT_TYPE_TEXT DEFINE_GUIDNAMED(KSDATAFORMAT_TYPE_TEXT) - -#if !defined(DEFINE_WAVEFORMATEX_GUID) -#define DEFINE_WAVEFORMATEX_GUID(x) \ - (USHORT)(x),0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71 -#endif - -#define STATIC_KSDATAFORMAT_SUBTYPE_WAVEFORMATEX \ - 0x00000000L,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71 -DEFINE_GUIDSTRUCT("00000000-0000-0010-8000-00aa00389b71",KSDATAFORMAT_SUBTYPE_WAVEFORMATEX); -#define KSDATAFORMAT_SUBTYPE_WAVEFORMATEX DEFINE_GUIDNAMED(KSDATAFORMAT_SUBTYPE_WAVEFORMATEX) - -#define INIT_WAVEFORMATEX_GUID(Guid,x) \ -{ \ - *(Guid) = KSDATAFORMAT_SUBTYPE_WAVEFORMATEX; \ - (Guid)->Data1 = (USHORT)(x); \ -} - -#define EXTRACT_WAVEFORMATEX_ID(Guid) \ - (USHORT)((Guid)->Data1) - -#define IS_VALID_WAVEFORMATEX_GUID(Guid) \ - (!memcmp(((PUSHORT)&KSDATAFORMAT_SUBTYPE_WAVEFORMATEX) + 1, ((PUSHORT)(Guid)) + 1,sizeof(GUID) - sizeof(USHORT))) - -#ifndef INIT_MMREG_MID -#define INIT_MMREG_MID(guid,id) \ -{ \ - (guid)->Data1 = 0xd5a47fa7 + (USHORT)(id); \ - (guid)->Data2 = 0x6d98; \ - (guid)->Data3 = 0x11d1; \ - (guid)->Data4[0] = 0xa2; \ - (guid)->Data4[1] = 0x1a; \ - (guid)->Data4[2] = 0x00; \ - (guid)->Data4[3] = 0xa0; \ - (guid)->Data4[4] = 0xc9; \ - (guid)->Data4[5] = 0x22; \ - (guid)->Data4[6] = 0x31; \ - (guid)->Data4[7] = 0x96; \ -} -#define EXTRACT_MMREG_MID(guid) \ - (USHORT)((guid)->Data1 - 0xd5a47fa7) -#define DEFINE_MMREG_MID_GUID(id) \ - 0xd5a47fa7+(USHORT)(id),0x6d98,0x11d1,0xa2,0x1a,0x00,0xa0,0xc9,0x22,0x31,0x96 - -#define IS_COMPATIBLE_MMREG_MID(guid) \ - (((guid)->Data1 >= 0xd5a47fa7) && \ - ((guid)->Data1 < 0xd5a47fa7 + 0xffff) && \ - ((guid)->Data2 == 0x6d98) && \ - ((guid)->Data3 == 0x11d1) && \ - ((guid)->Data4[0] == 0xa2) && \ - ((guid)->Data4[1] == 0x1a) && \ - ((guid)->Data4[2] == 0x00) && \ - ((guid)->Data4[3] == 0xa0) && \ - ((guid)->Data4[4] == 0xc9) && \ - ((guid)->Data4[5] == 0x22) && \ - ((guid)->Data4[6] == 0x31) && \ - ((guid)->Data4[7] == 0x96) ) -#endif /* INIT_MMREG_MID */ - -#ifndef INIT_MMREG_PID -#define INIT_MMREG_PID(guid,id) \ -{ \ - (guid)->Data1 = 0xe36dc2ac + (USHORT)(id); \ - (guid)->Data2 = 0x6d9a; \ - (guid)->Data3 = 0x11d1; \ - (guid)->Data4[0] = 0xa2; \ - (guid)->Data4[1] = 0x1a; \ - (guid)->Data4[2] = 0x00; \ - (guid)->Data4[3] = 0xa0; \ - (guid)->Data4[4] = 0xc9; \ - (guid)->Data4[5] = 0x22; \ - (guid)->Data4[6] = 0x31; \ - (guid)->Data4[7] = 0x96; \ -} -#define EXTRACT_MMREG_PID(guid) \ - (USHORT)((guid)->Data1 - 0xe36dc2ac) -#define DEFINE_MMREG_PID_GUID(id) \ - 0xe36dc2ac+(USHORT)(id),0x6d9a,0x11d1,0xa2,0x1a,0x00,0xa0,0xc9,0x22,0x31,0x96 - -#define IS_COMPATIBLE_MMREG_PID(guid) \ - (((guid)->Data1 >= 0xe36dc2ac) && \ - ((guid)->Data1 < 0xe36dc2ac + 0xffff) && \ - ((guid)->Data2 == 0x6d9a) && \ - ((guid)->Data3 == 0x11d1) && \ - ((guid)->Data4[0] == 0xa2) && \ - ((guid)->Data4[1] == 0x1a) && \ - ((guid)->Data4[2] == 0x00) && \ - ((guid)->Data4[3] == 0xa0) && \ - ((guid)->Data4[4] == 0xc9) && \ - ((guid)->Data4[5] == 0x22) && \ - ((guid)->Data4[6] == 0x31) && \ - ((guid)->Data4[7] == 0x96) ) -#endif /* INIT_MMREG_PID */ - -#define STATIC_KSDATAFORMAT_SUBTYPE_ANALOG \ - 0x6dba3190L,0x67bd,0x11cf,0xa0,0xf7,0x00,0x20,0xaf,0xd1,0x56,0xe4 -DEFINE_GUIDSTRUCT("6dba3190-67bd-11cf-a0f7-0020afd156e4",KSDATAFORMAT_SUBTYPE_ANALOG); -#define KSDATAFORMAT_SUBTYPE_ANALOG DEFINE_GUIDNAMED(KSDATAFORMAT_SUBTYPE_ANALOG) - -#define STATIC_KSDATAFORMAT_SUBTYPE_PCM \ - DEFINE_WAVEFORMATEX_GUID(WAVE_FORMAT_PCM) -DEFINE_GUIDSTRUCT("00000001-0000-0010-8000-00aa00389b71",KSDATAFORMAT_SUBTYPE_PCM); -#define KSDATAFORMAT_SUBTYPE_PCM DEFINE_GUIDNAMED(KSDATAFORMAT_SUBTYPE_PCM) - -#ifdef _INC_MMREG -#define STATIC_KSDATAFORMAT_SUBTYPE_IEEE_FLOAT \ - DEFINE_WAVEFORMATEX_GUID(WAVE_FORMAT_IEEE_FLOAT) -DEFINE_GUIDSTRUCT("00000003-0000-0010-8000-00aa00389b71",KSDATAFORMAT_SUBTYPE_IEEE_FLOAT); -#define KSDATAFORMAT_SUBTYPE_IEEE_FLOAT DEFINE_GUIDNAMED(KSDATAFORMAT_SUBTYPE_IEEE_FLOAT) - -#define STATIC_KSDATAFORMAT_SUBTYPE_DRM \ - DEFINE_WAVEFORMATEX_GUID(WAVE_FORMAT_DRM) -DEFINE_GUIDSTRUCT("00000009-0000-0010-8000-00aa00389b71",KSDATAFORMAT_SUBTYPE_DRM); -#define KSDATAFORMAT_SUBTYPE_DRM DEFINE_GUIDNAMED(KSDATAFORMAT_SUBTYPE_DRM) - -#define STATIC_KSDATAFORMAT_SUBTYPE_ALAW \ - DEFINE_WAVEFORMATEX_GUID(WAVE_FORMAT_ALAW) -DEFINE_GUIDSTRUCT("00000006-0000-0010-8000-00aa00389b71",KSDATAFORMAT_SUBTYPE_ALAW); -#define KSDATAFORMAT_SUBTYPE_ALAW DEFINE_GUIDNAMED(KSDATAFORMAT_SUBTYPE_ALAW) - -#define STATIC_KSDATAFORMAT_SUBTYPE_MULAW \ - DEFINE_WAVEFORMATEX_GUID(WAVE_FORMAT_MULAW) -DEFINE_GUIDSTRUCT("00000007-0000-0010-8000-00aa00389b71",KSDATAFORMAT_SUBTYPE_MULAW); -#define KSDATAFORMAT_SUBTYPE_MULAW DEFINE_GUIDNAMED(KSDATAFORMAT_SUBTYPE_MULAW) - -#define STATIC_KSDATAFORMAT_SUBTYPE_ADPCM \ - DEFINE_WAVEFORMATEX_GUID(WAVE_FORMAT_ADPCM) -DEFINE_GUIDSTRUCT("00000002-0000-0010-8000-00aa00389b71",KSDATAFORMAT_SUBTYPE_ADPCM); -#define KSDATAFORMAT_SUBTYPE_ADPCM DEFINE_GUIDNAMED(KSDATAFORMAT_SUBTYPE_ADPCM) - -#define STATIC_KSDATAFORMAT_SUBTYPE_MPEG \ - DEFINE_WAVEFORMATEX_GUID(WAVE_FORMAT_MPEG) -DEFINE_GUIDSTRUCT("00000050-0000-0010-8000-00aa00389b71",KSDATAFORMAT_SUBTYPE_MPEG); -#define KSDATAFORMAT_SUBTYPE_MPEG DEFINE_GUIDNAMED(KSDATAFORMAT_SUBTYPE_MPEG) -#endif /* _INC_MMREG */ - -#define STATIC_KSDATAFORMAT_SPECIFIER_VC_ID \ - 0xAD98D184L,0xAAC3,0x11D0,0xA4,0x1C,0x00,0xA0,0xC9,0x22,0x31,0x96 -DEFINE_GUIDSTRUCT("AD98D184-AAC3-11D0-A41C-00A0C9223196",KSDATAFORMAT_SPECIFIER_VC_ID); -#define KSDATAFORMAT_SPECIFIER_VC_ID DEFINE_GUIDNAMED(KSDATAFORMAT_SPECIFIER_VC_ID) - -#define STATIC_KSDATAFORMAT_SPECIFIER_WAVEFORMATEX \ - 0x05589f81L,0xc356,0x11ce,0xbf,0x01,0x00,0xaa,0x00,0x55,0x59,0x5a -DEFINE_GUIDSTRUCT("05589f81-c356-11ce-bf01-00aa0055595a",KSDATAFORMAT_SPECIFIER_WAVEFORMATEX); -#define KSDATAFORMAT_SPECIFIER_WAVEFORMATEX DEFINE_GUIDNAMED(KSDATAFORMAT_SPECIFIER_WAVEFORMATEX) - -#define STATIC_KSDATAFORMAT_SPECIFIER_DSOUND \ - 0x518590a2L,0xa184,0x11d0,0x85,0x22,0x00,0xc0,0x4f,0xd9,0xba,0xf3 -DEFINE_GUIDSTRUCT("518590a2-a184-11d0-8522-00c04fd9baf3",KSDATAFORMAT_SPECIFIER_DSOUND); -#define KSDATAFORMAT_SPECIFIER_DSOUND DEFINE_GUIDNAMED(KSDATAFORMAT_SPECIFIER_DSOUND) - -#if defined(_INC_MMSYSTEM) || defined(_INC_MMREG) -#if !defined(PACK_PRAGMAS_NOT_SUPPORTED) -#include <pshpack1.h> -#endif -typedef struct { - KSDATAFORMAT DataFormat; - WAVEFORMATEX WaveFormatEx; -} KSDATAFORMAT_WAVEFORMATEX,*PKSDATAFORMAT_WAVEFORMATEX; - -#ifndef _WAVEFORMATEXTENSIBLE_ -#define _WAVEFORMATEXTENSIBLE_ -typedef struct { - WAVEFORMATEX Format; - union { - WORD wValidBitsPerSample; - WORD wSamplesPerBlock; - WORD wReserved; - } Samples; - DWORD dwChannelMask; - - GUID SubFormat; -} WAVEFORMATEXTENSIBLE,*PWAVEFORMATEXTENSIBLE; -#endif /* _WAVEFORMATEXTENSIBLE_ */ - -#if !defined(WAVE_FORMAT_EXTENSIBLE) -#define WAVE_FORMAT_EXTENSIBLE 0xFFFE -#endif - -typedef struct { - ULONG Flags; - ULONG Control; - WAVEFORMATEX WaveFormatEx; -} KSDSOUND_BUFFERDESC,*PKSDSOUND_BUFFERDESC; - -typedef struct { - KSDATAFORMAT DataFormat; - KSDSOUND_BUFFERDESC BufferDesc; -} KSDATAFORMAT_DSOUND,*PKSDATAFORMAT_DSOUND; - -#if !defined(PACK_PRAGMAS_NOT_SUPPORTED) -#include <poppack.h> -#endif -#endif /* defined(_INC_MMSYSTEM) || defined(_INC_MMREG) */ - -#define KSDSOUND_BUFFER_PRIMARY 0x00000001 -#define KSDSOUND_BUFFER_STATIC 0x00000002 -#define KSDSOUND_BUFFER_LOCHARDWARE 0x00000004 -#define KSDSOUND_BUFFER_LOCSOFTWARE 0x00000008 - -#define KSDSOUND_BUFFER_CTRL_3D 0x00000001 -#define KSDSOUND_BUFFER_CTRL_FREQUENCY 0x00000002 -#define KSDSOUND_BUFFER_CTRL_PAN 0x00000004 -#define KSDSOUND_BUFFER_CTRL_VOLUME 0x00000008 -#define KSDSOUND_BUFFER_CTRL_POSITIONNOTIFY 0x00000010 - -typedef struct { - DWORDLONG PlayOffset; - DWORDLONG WriteOffset; -} KSAUDIO_POSITION,*PKSAUDIO_POSITION; - -typedef struct _DS3DVECTOR { - __MINGW_EXTENSION union { - FLOAT x; - FLOAT dvX; - }; - __MINGW_EXTENSION union { - FLOAT y; - FLOAT dvY; - }; - __MINGW_EXTENSION union { - FLOAT z; - FLOAT dvZ; - }; -} DS3DVECTOR,*PDS3DVECTOR; - -#define STATIC_KSPROPSETID_DirectSound3DListener \ - 0x437b3414L,0xd060,0x11d0,0x85,0x83,0x00,0xc0,0x4f,0xd9,0xba,0xf3 -DEFINE_GUIDSTRUCT("437b3414-d060-11d0-8583-00c04fd9baf3",KSPROPSETID_DirectSound3DListener); -#define KSPROPSETID_DirectSound3DListener DEFINE_GUIDNAMED(KSPROPSETID_DirectSound3DListener) - -typedef enum { - KSPROPERTY_DIRECTSOUND3DLISTENER_ALL, - KSPROPERTY_DIRECTSOUND3DLISTENER_POSITION, - KSPROPERTY_DIRECTSOUND3DLISTENER_VELOCITY, - KSPROPERTY_DIRECTSOUND3DLISTENER_ORIENTATION, - KSPROPERTY_DIRECTSOUND3DLISTENER_DISTANCEFACTOR, - KSPROPERTY_DIRECTSOUND3DLISTENER_ROLLOFFFACTOR, - KSPROPERTY_DIRECTSOUND3DLISTENER_DOPPLERFACTOR, - KSPROPERTY_DIRECTSOUND3DLISTENER_BATCH, - KSPROPERTY_DIRECTSOUND3DLISTENER_ALLOCATION -} KSPROPERTY_DIRECTSOUND3DLISTENER; - -typedef struct { - DS3DVECTOR Position; - DS3DVECTOR Velocity; - DS3DVECTOR OrientFront; - DS3DVECTOR OrientTop; - FLOAT DistanceFactor; - FLOAT RolloffFactor; - FLOAT DopplerFactor; -} KSDS3D_LISTENER_ALL,*PKSDS3D_LISTENER_ALL; - -typedef struct { - DS3DVECTOR Front; - DS3DVECTOR Top; -} KSDS3D_LISTENER_ORIENTATION,*PKSDS3D_LISTENER_ORIENTATION; - -#define STATIC_KSPROPSETID_DirectSound3DBuffer \ - 0x437b3411L,0xd060,0x11d0,0x85,0x83,0x00,0xc0,0x4f,0xd9,0xba,0xf3 -DEFINE_GUIDSTRUCT("437b3411-d060-11d0-8583-00c04fd9baf3",KSPROPSETID_DirectSound3DBuffer); -#define KSPROPSETID_DirectSound3DBuffer DEFINE_GUIDNAMED(KSPROPSETID_DirectSound3DBuffer) - -typedef enum { - KSPROPERTY_DIRECTSOUND3DBUFFER_ALL, - KSPROPERTY_DIRECTSOUND3DBUFFER_POSITION, - KSPROPERTY_DIRECTSOUND3DBUFFER_VELOCITY, - KSPROPERTY_DIRECTSOUND3DBUFFER_CONEANGLES, - KSPROPERTY_DIRECTSOUND3DBUFFER_CONEORIENTATION, - KSPROPERTY_DIRECTSOUND3DBUFFER_CONEOUTSIDEVOLUME, - KSPROPERTY_DIRECTSOUND3DBUFFER_MINDISTANCE, - KSPROPERTY_DIRECTSOUND3DBUFFER_MAXDISTANCE, - KSPROPERTY_DIRECTSOUND3DBUFFER_MODE -} KSPROPERTY_DIRECTSOUND3DBUFFER; - -typedef struct { - DS3DVECTOR Position; - DS3DVECTOR Velocity; - ULONG InsideConeAngle; - ULONG OutsideConeAngle; - DS3DVECTOR ConeOrientation; - LONG ConeOutsideVolume; - FLOAT MinDistance; - FLOAT MaxDistance; - ULONG Mode; -} KSDS3D_BUFFER_ALL,*PKSDS3D_BUFFER_ALL; - -typedef struct { - ULONG InsideConeAngle; - ULONG OutsideConeAngle; -} KSDS3D_BUFFER_CONE_ANGLES,*PKSDS3D_BUFFER_CONE_ANGLES; - -#define KSAUDIO_STEREO_SPEAKER_GEOMETRY_HEADPHONE (-1) -#define KSAUDIO_STEREO_SPEAKER_GEOMETRY_MIN 5 -#define KSAUDIO_STEREO_SPEAKER_GEOMETRY_NARROW 10 -#define KSAUDIO_STEREO_SPEAKER_GEOMETRY_WIDE 20 -#define KSAUDIO_STEREO_SPEAKER_GEOMETRY_MAX 180 - -#define KSDSOUND_3D_MODE_NORMAL 0x00000000 -#define KSDSOUND_3D_MODE_HEADRELATIVE 0x00000001 -#define KSDSOUND_3D_MODE_DISABLE 0x00000002 - -#define KSDSOUND_BUFFER_CTRL_HRTF_3D 0x40000000 - -typedef struct { - ULONG Size; - ULONG Enabled; - WINBOOL SwapChannels; - WINBOOL ZeroAzimuth; - WINBOOL CrossFadeOutput; - ULONG FilterSize; -} KSDS3D_HRTF_PARAMS_MSG,*PKSDS3D_HRTF_PARAMS_MSG; - -typedef enum { - FULL_FILTER, - LIGHT_FILTER, - KSDS3D_FILTER_QUALITY_COUNT -} KSDS3D_HRTF_FILTER_QUALITY; - -typedef struct { - ULONG Size; - KSDS3D_HRTF_FILTER_QUALITY Quality; - FLOAT SampleRate; - ULONG MaxFilterSize; - ULONG FilterTransientMuteLength; - ULONG FilterOverlapBufferLength; - ULONG OutputOverlapBufferLength; - ULONG Reserved; -} KSDS3D_HRTF_INIT_MSG,*PKSDS3D_HRTF_INIT_MSG; - -typedef enum { - FLOAT_COEFF, - SHORT_COEFF, - KSDS3D_COEFF_COUNT -} KSDS3D_HRTF_COEFF_FORMAT; - -typedef enum { - DIRECT_FORM, - CASCADE_FORM, - KSDS3D_FILTER_METHOD_COUNT -} KSDS3D_HRTF_FILTER_METHOD; - -typedef enum { - DS3D_HRTF_VERSION_1 -} KSDS3D_HRTF_FILTER_VERSION; - -typedef struct { - KSDS3D_HRTF_FILTER_METHOD FilterMethod; - KSDS3D_HRTF_COEFF_FORMAT CoeffFormat; - KSDS3D_HRTF_FILTER_VERSION Version; - ULONG Reserved; -} KSDS3D_HRTF_FILTER_FORMAT_MSG,*PKSDS3D_HRTF_FILTER_FORMAT_MSG; - -#define STATIC_KSPROPSETID_Hrtf3d \ - 0xb66decb0L,0xa083,0x11d0,0x85,0x1e,0x00,0xc0,0x4f,0xd9,0xba,0xf3 -DEFINE_GUIDSTRUCT("b66decb0-a083-11d0-851e-00c04fd9baf3",KSPROPSETID_Hrtf3d); -#define KSPROPSETID_Hrtf3d DEFINE_GUIDNAMED(KSPROPSETID_Hrtf3d) - -typedef enum { - KSPROPERTY_HRTF3D_PARAMS = 0, - KSPROPERTY_HRTF3D_INITIALIZE, - KSPROPERTY_HRTF3D_FILTER_FORMAT -} KSPROPERTY_HRTF3D; - -typedef struct { - LONG Channel; - FLOAT VolSmoothScale; - FLOAT TotalDryAttenuation; - FLOAT TotalWetAttenuation; - LONG SmoothFrequency; - LONG Delay; -} KSDS3D_ITD_PARAMS,*PKSDS3D_ITD_PARAMS; - -typedef struct { - ULONG Enabled; - KSDS3D_ITD_PARAMS LeftParams; - KSDS3D_ITD_PARAMS RightParams; - ULONG Reserved; -} KSDS3D_ITD_PARAMS_MSG,*PKSDS3D_ITD_PARAMS_MSG; - -#define STATIC_KSPROPSETID_Itd3d \ - 0x6429f090L,0x9fd9,0x11d0,0xa7,0x5b,0x00,0xa0,0xc9,0x03,0x65,0xe3 -DEFINE_GUIDSTRUCT("6429f090-9fd9-11d0-a75b-00a0c90365e3",KSPROPSETID_Itd3d); -#define KSPROPSETID_Itd3d DEFINE_GUIDNAMED(KSPROPSETID_Itd3d) - -typedef enum { - KSPROPERTY_ITD3D_PARAMS = 0 -} KSPROPERTY_ITD3D; - -typedef struct { - KSDATARANGE DataRange; - ULONG MaximumChannels; - ULONG MinimumBitsPerSample; - ULONG MaximumBitsPerSample; - ULONG MinimumSampleFrequency; - ULONG MaximumSampleFrequency; -} KSDATARANGE_AUDIO,*PKSDATARANGE_AUDIO; - -#define STATIC_KSDATAFORMAT_SUBTYPE_RIFF \ - 0x4995DAEEL,0x9EE6,0x11D0,0xA4,0x0E,0x00,0xA0,0xC9,0x22,0x31,0x96 -DEFINE_GUIDSTRUCT("4995DAEE-9EE6-11D0-A40E-00A0C9223196",KSDATAFORMAT_SUBTYPE_RIFF); -#define KSDATAFORMAT_SUBTYPE_RIFF DEFINE_GUIDNAMED(KSDATAFORMAT_SUBTYPE_RIFF) - -#define STATIC_KSDATAFORMAT_SUBTYPE_RIFFWAVE \ - 0xe436eb8bL,0x524f,0x11ce,0x9f,0x53,0x00,0x20,0xaf,0x0b,0xa7,0x70 -DEFINE_GUIDSTRUCT("e436eb8b-524f-11ce-9f53-0020af0ba770",KSDATAFORMAT_SUBTYPE_RIFFWAVE); -#define KSDATAFORMAT_SUBTYPE_RIFFWAVE DEFINE_GUIDNAMED(KSDATAFORMAT_SUBTYPE_RIFFWAVE) - -#define STATIC_KSPROPSETID_Bibliographic \ - 0x07BA150EL,0xE2B1,0x11D0,0xAC,0x17,0x00,0xA0,0xC9,0x22,0x31,0x96 -DEFINE_GUIDSTRUCT("07BA150E-E2B1-11D0-AC17-00A0C9223196",KSPROPSETID_Bibliographic); -#define KSPROPSETID_Bibliographic DEFINE_GUIDNAMED(KSPROPSETID_Bibliographic) - -typedef enum { - KSPROPERTY_BIBLIOGRAPHIC_LEADER = 'RDL ', - KSPROPERTY_BIBLIOGRAPHIC_LCCN = '010 ', - KSPROPERTY_BIBLIOGRAPHIC_ISBN = '020 ', - KSPROPERTY_BIBLIOGRAPHIC_ISSN = '220 ', - KSPROPERTY_BIBLIOGRAPHIC_CATALOGINGSOURCE = '040 ', - KSPROPERTY_BIBLIOGRAPHIC_MAINPERSONALNAME = '001 ', - KSPROPERTY_BIBLIOGRAPHIC_MAINCORPORATEBODY = '011 ', - KSPROPERTY_BIBLIOGRAPHIC_MAINMEETINGNAME = '111 ', - KSPROPERTY_BIBLIOGRAPHIC_MAINUNIFORMTITLE = '031 ', - KSPROPERTY_BIBLIOGRAPHIC_UNIFORMTITLE = '042 ', - KSPROPERTY_BIBLIOGRAPHIC_TITLESTATEMENT = '542 ', - KSPROPERTY_BIBLIOGRAPHIC_VARYINGFORMTITLE = '642 ', - KSPROPERTY_BIBLIOGRAPHIC_PUBLICATION = '062 ', - KSPROPERTY_BIBLIOGRAPHIC_PHYSICALDESCRIPTION = '003 ', - KSPROPERTY_BIBLIOGRAPHIC_ADDEDENTRYTITLE = '044 ', - KSPROPERTY_BIBLIOGRAPHIC_SERIESSTATEMENT = '094 ', - KSPROPERTY_BIBLIOGRAPHIC_GENERALNOTE = '005 ', - KSPROPERTY_BIBLIOGRAPHIC_BIBLIOGRAPHYNOTE = '405 ', - KSPROPERTY_BIBLIOGRAPHIC_CONTENTSNOTE = '505 ', - KSPROPERTY_BIBLIOGRAPHIC_CREATIONCREDIT = '805 ', - KSPROPERTY_BIBLIOGRAPHIC_CITATION = '015 ', - KSPROPERTY_BIBLIOGRAPHIC_PARTICIPANT = '115 ', - KSPROPERTY_BIBLIOGRAPHIC_SUMMARY = '025 ', - KSPROPERTY_BIBLIOGRAPHIC_TARGETAUDIENCE = '125 ', - KSPROPERTY_BIBLIOGRAPHIC_ADDEDFORMAVAILABLE = '035 ', - KSPROPERTY_BIBLIOGRAPHIC_SYSTEMDETAILS = '835 ', - KSPROPERTY_BIBLIOGRAPHIC_AWARDS = '685 ', - KSPROPERTY_BIBLIOGRAPHIC_ADDEDENTRYPERSONALNAME = '006 ', - KSPROPERTY_BIBLIOGRAPHIC_ADDEDENTRYTOPICALTERM = '056 ', - KSPROPERTY_BIBLIOGRAPHIC_ADDEDENTRYGEOGRAPHIC = '156 ', - KSPROPERTY_BIBLIOGRAPHIC_INDEXTERMGENRE = '556 ', - KSPROPERTY_BIBLIOGRAPHIC_INDEXTERMCURRICULUM = '856 ', - KSPROPERTY_BIBLIOGRAPHIC_ADDEDENTRYUNIFORMTITLE = '037 ', - KSPROPERTY_BIBLIOGRAPHIC_ADDEDENTRYRELATED = '047 ', - KSPROPERTY_BIBLIOGRAPHIC_SERIESSTATEMENTPERSONALNAME = '008 ', - KSPROPERTY_BIBLIOGRAPHIC_SERIESSTATEMENTUNIFORMTITLE = '038 ' -} KSPROPERTY_BIBLIOGRAPHIC; - -#define STATIC_KSPROPSETID_TopologyNode \ - 0x45FFAAA1L,0x6E1B,0x11D0,0xBC,0xF2,0x44,0x45,0x53,0x54,0x00,0x00 -DEFINE_GUIDSTRUCT("45FFAAA1-6E1B-11D0-BCF2-444553540000",KSPROPSETID_TopologyNode); -#define KSPROPSETID_TopologyNode DEFINE_GUIDNAMED(KSPROPSETID_TopologyNode) - -typedef enum { - KSPROPERTY_TOPOLOGYNODE_ENABLE = 1, - KSPROPERTY_TOPOLOGYNODE_RESET -} KSPROPERTY_TOPOLOGYNODE; - -#define STATIC_KSPROPSETID_RtAudio \ - 0xa855a48c,0x2f78,0x4729,0x90,0x51,0x19,0x68,0x74,0x6b,0x9e,0xef -DEFINE_GUIDSTRUCT("A855A48C-2F78-4729-9051-1968746B9EEF",KSPROPSETID_RtAudio); -#define KSPROPSETID_RtAudio DEFINE_GUIDNAMED(KSPROPSETID_RtAudio) - -typedef enum { - KSPROPERTY_RTAUDIO_GETPOSITIONFUNCTION, - /* Added for Vista and later */ - KSPROPERTY_RTAUDIO_BUFFER, - KSPROPERTY_RTAUDIO_HWLATENCY, - KSPROPERTY_RTAUDIO_POSITIONREGISTER, - KSPROPERTY_RTAUDIO_CLOCKREGISTER, - KSPROPERTY_RTAUDIO_BUFFER_WITH_NOTIFICATION, - KSPROPERTY_RTAUDIO_REGISTER_NOTIFICATION_EVENT, - KSPROPERTY_RTAUDIO_UNREGISTER_NOTIFICATION_EVENT -} KSPROPERTY_RTAUDIO; - -#define STATIC_KSPROPSETID_DrmAudioStream \ - 0x2f2c8ddd,0x4198,0x4fac,0xba,0x29,0x61,0xbb,0x5,0xb7,0xde,0x6 -DEFINE_GUIDSTRUCT("2F2C8DDD-4198-4fac-BA29-61BB05B7DE06",KSPROPSETID_DrmAudioStream); -#define KSPROPSETID_DrmAudioStream DEFINE_GUIDNAMED(KSPROPSETID_DrmAudioStream) - -typedef enum { - KSPROPERTY_DRMAUDIOSTREAM_CONTENTID -} KSPROPERTY_DRMAUDIOSTREAM; - -#define STATIC_KSPROPSETID_Audio \ - 0x45FFAAA0L,0x6E1B,0x11D0,0xBC,0xF2,0x44,0x45,0x53,0x54,0x00,0x00 -DEFINE_GUIDSTRUCT("45FFAAA0-6E1B-11D0-BCF2-444553540000",KSPROPSETID_Audio); -#define KSPROPSETID_Audio DEFINE_GUIDNAMED(KSPROPSETID_Audio) - -typedef enum { - KSPROPERTY_AUDIO_LATENCY = 1, - KSPROPERTY_AUDIO_COPY_PROTECTION, - KSPROPERTY_AUDIO_CHANNEL_CONFIG, - KSPROPERTY_AUDIO_VOLUMELEVEL, - KSPROPERTY_AUDIO_POSITION, - KSPROPERTY_AUDIO_DYNAMIC_RANGE, - KSPROPERTY_AUDIO_QUALITY, - KSPROPERTY_AUDIO_SAMPLING_RATE, - KSPROPERTY_AUDIO_DYNAMIC_SAMPLING_RATE, - KSPROPERTY_AUDIO_MIX_LEVEL_TABLE, - KSPROPERTY_AUDIO_MIX_LEVEL_CAPS, - KSPROPERTY_AUDIO_MUX_SOURCE, - KSPROPERTY_AUDIO_MUTE, - KSPROPERTY_AUDIO_BASS, - KSPROPERTY_AUDIO_MID, - KSPROPERTY_AUDIO_TREBLE, - KSPROPERTY_AUDIO_BASS_BOOST, - KSPROPERTY_AUDIO_EQ_LEVEL, - KSPROPERTY_AUDIO_NUM_EQ_BANDS, - KSPROPERTY_AUDIO_EQ_BANDS, - KSPROPERTY_AUDIO_AGC, - KSPROPERTY_AUDIO_DELAY, - KSPROPERTY_AUDIO_LOUDNESS, - KSPROPERTY_AUDIO_WIDE_MODE, - KSPROPERTY_AUDIO_WIDENESS, - KSPROPERTY_AUDIO_REVERB_LEVEL, - KSPROPERTY_AUDIO_CHORUS_LEVEL, - KSPROPERTY_AUDIO_DEV_SPECIFIC, - KSPROPERTY_AUDIO_DEMUX_DEST, - KSPROPERTY_AUDIO_STEREO_ENHANCE, - KSPROPERTY_AUDIO_MANUFACTURE_GUID, - KSPROPERTY_AUDIO_PRODUCT_GUID, - KSPROPERTY_AUDIO_CPU_RESOURCES, - KSPROPERTY_AUDIO_STEREO_SPEAKER_GEOMETRY, - KSPROPERTY_AUDIO_SURROUND_ENCODE, - KSPROPERTY_AUDIO_3D_INTERFACE, - KSPROPERTY_AUDIO_PEAKMETER, - KSPROPERTY_AUDIO_ALGORITHM_INSTANCE, - KSPROPERTY_AUDIO_FILTER_STATE, - KSPROPERTY_AUDIO_PREFERRED_STATUS -} KSPROPERTY_AUDIO; - -#define KSAUDIO_QUALITY_WORST 0x0 -#define KSAUDIO_QUALITY_PC 0x1 -#define KSAUDIO_QUALITY_BASIC 0x2 -#define KSAUDIO_QUALITY_ADVANCED 0x3 - -#define KSAUDIO_CPU_RESOURCES_NOT_HOST_CPU 0x00000000 -#define KSAUDIO_CPU_RESOURCES_HOST_CPU 0x7FFFFFFF - -typedef struct { - WINBOOL fCopyrighted; - WINBOOL fOriginal; -} KSAUDIO_COPY_PROTECTION,*PKSAUDIO_COPY_PROTECTION; - -typedef struct { - LONG ActiveSpeakerPositions; -} KSAUDIO_CHANNEL_CONFIG,*PKSAUDIO_CHANNEL_CONFIG; - -#define SPEAKER_FRONT_LEFT 0x1 -#define SPEAKER_FRONT_RIGHT 0x2 -#define SPEAKER_FRONT_CENTER 0x4 -#define SPEAKER_LOW_FREQUENCY 0x8 -#define SPEAKER_BACK_LEFT 0x10 -#define SPEAKER_BACK_RIGHT 0x20 -#define SPEAKER_FRONT_LEFT_OF_CENTER 0x40 -#define SPEAKER_FRONT_RIGHT_OF_CENTER 0x80 -#define SPEAKER_BACK_CENTER 0x100 -#define SPEAKER_SIDE_LEFT 0x200 -#define SPEAKER_SIDE_RIGHT 0x400 -#define SPEAKER_TOP_CENTER 0x800 -#define SPEAKER_TOP_FRONT_LEFT 0x1000 -#define SPEAKER_TOP_FRONT_CENTER 0x2000 -#define SPEAKER_TOP_FRONT_RIGHT 0x4000 -#define SPEAKER_TOP_BACK_LEFT 0x8000 -#define SPEAKER_TOP_BACK_CENTER 0x10000 -#define SPEAKER_TOP_BACK_RIGHT 0x20000 - -#define SPEAKER_RESERVED 0x7FFC0000 - -#define SPEAKER_ALL 0x80000000 - -#define KSAUDIO_SPEAKER_DIRECTOUT 0 -#define KSAUDIO_SPEAKER_MONO (SPEAKER_FRONT_CENTER) -#define KSAUDIO_SPEAKER_STEREO (SPEAKER_FRONT_LEFT | SPEAKER_FRONT_RIGHT) -#define KSAUDIO_SPEAKER_QUAD (SPEAKER_FRONT_LEFT | SPEAKER_FRONT_RIGHT | \ - SPEAKER_BACK_LEFT | SPEAKER_BACK_RIGHT) -#define KSAUDIO_SPEAKER_SURROUND (SPEAKER_FRONT_LEFT | SPEAKER_FRONT_RIGHT | \ - SPEAKER_FRONT_CENTER | SPEAKER_BACK_CENTER) -#define KSAUDIO_SPEAKER_5POINT1 (SPEAKER_FRONT_LEFT | SPEAKER_FRONT_RIGHT | \ - SPEAKER_FRONT_CENTER | SPEAKER_LOW_FREQUENCY | \ - SPEAKER_BACK_LEFT | SPEAKER_BACK_RIGHT) -#define KSAUDIO_SPEAKER_7POINT1 (SPEAKER_FRONT_LEFT | SPEAKER_FRONT_RIGHT | \ - SPEAKER_FRONT_CENTER | SPEAKER_LOW_FREQUENCY | \ - SPEAKER_BACK_LEFT | SPEAKER_BACK_RIGHT | \ - SPEAKER_FRONT_LEFT_OF_CENTER | SPEAKER_FRONT_RIGHT_OF_CENTER) -#define KSAUDIO_SPEAKER_5POINT1_SURROUND (SPEAKER_FRONT_LEFT | SPEAKER_FRONT_RIGHT | \ - SPEAKER_FRONT_CENTER | SPEAKER_LOW_FREQUENCY | \ - SPEAKER_SIDE_LEFT | SPEAKER_SIDE_RIGHT) -#define KSAUDIO_SPEAKER_7POINT1_SURROUND (SPEAKER_FRONT_LEFT | SPEAKER_FRONT_RIGHT | \ - SPEAKER_FRONT_CENTER | SPEAKER_LOW_FREQUENCY | \ - SPEAKER_BACK_LEFT | SPEAKER_BACK_RIGHT | \ - SPEAKER_SIDE_LEFT | SPEAKER_SIDE_RIGHT) - -#define KSAUDIO_SPEAKER_5POINT1_BACK KSAUDIO_SPEAKER_5POINT1 -#define KSAUDIO_SPEAKER_7POINT1_WIDE KSAUDIO_SPEAKER_7POINT1 - -#define KSAUDIO_SPEAKER_GROUND_FRONT_LEFT SPEAKER_FRONT_LEFT -#define KSAUDIO_SPEAKER_GROUND_FRONT_CENTER SPEAKER_FRONT_CENTER -#define KSAUDIO_SPEAKER_GROUND_FRONT_RIGHT SPEAKER_FRONT_RIGHT -#define KSAUDIO_SPEAKER_GROUND_REAR_LEFT SPEAKER_BACK_LEFT -#define KSAUDIO_SPEAKER_GROUND_REAR_RIGHT SPEAKER_BACK_RIGHT -#define KSAUDIO_SPEAKER_TOP_MIDDLE SPEAKER_TOP_CENTER -#define KSAUDIO_SPEAKER_SUPER_WOOFER SPEAKER_LOW_FREQUENCY - -typedef struct { - ULONG QuietCompression; - ULONG LoudCompression; -} KSAUDIO_DYNAMIC_RANGE,*PKSAUDIO_DYNAMIC_RANGE; - -typedef struct { - WINBOOL Mute; - LONG Level; -} KSAUDIO_MIXLEVEL,*PKSAUDIO_MIXLEVEL; - -typedef struct { - WINBOOL Mute; - LONG Minimum; - LONG Maximum; - LONG Reset; -} KSAUDIO_MIX_CAPS,*PKSAUDIO_MIX_CAPS; - -typedef struct { - ULONG InputChannels; - ULONG OutputChannels; - KSAUDIO_MIX_CAPS Capabilities[1]; -} KSAUDIO_MIXCAP_TABLE,*PKSAUDIO_MIXCAP_TABLE; - -typedef enum { - SE_TECH_NONE, - SE_TECH_ANALOG_DEVICES_PHAT, - SE_TECH_CREATIVE, - SE_TECH_NATIONAL_SEMI, - SE_TECH_YAMAHA_YMERSION, - SE_TECH_BBE, - SE_TECH_CRYSTAL_SEMI, - SE_TECH_QSOUND_QXPANDER, - SE_TECH_SPATIALIZER, - SE_TECH_SRS, - SE_TECH_PLATFORM_TECH, - SE_TECH_AKM, - SE_TECH_AUREAL, - SE_TECH_AZTECH, - SE_TECH_BINAURA, - SE_TECH_ESS_TECH, - SE_TECH_HARMAN_VMAX, - SE_TECH_NVIDEA, - SE_TECH_PHILIPS_INCREDIBLE, - SE_TECH_TEXAS_INST, - SE_TECH_VLSI_TECH -} SE_TECHNIQUE; - -typedef struct { - SE_TECHNIQUE Technique; - ULONG Center; - ULONG Depth; - ULONG Reserved; -} KSAUDIO_STEREO_ENHANCE,*PKSAUDIO_STEREO_ENHANCE; - -typedef enum { - KSPROPERTY_SYSAUDIO_NORMAL_DEFAULT = 0, - KSPROPERTY_SYSAUDIO_PLAYBACK_DEFAULT, - KSPROPERTY_SYSAUDIO_RECORD_DEFAULT, - KSPROPERTY_SYSAUDIO_MIDI_DEFAULT, - KSPROPERTY_SYSAUDIO_MIXER_DEFAULT -} KSPROPERTY_SYSAUDIO_DEFAULT_TYPE; - -typedef struct { - WINBOOL Enable; - KSPROPERTY_SYSAUDIO_DEFAULT_TYPE DeviceType; - ULONG Flags; - ULONG Reserved; -} KSAUDIO_PREFERRED_STATUS,*PKSAUDIO_PREFERRED_STATUS; - -#define STATIC_KSNODETYPE_DAC \ - 0x507AE360L,0xC554,0x11D0,0x8A,0x2B,0x00,0xA0,0xC9,0x25,0x5A,0xC1 -DEFINE_GUIDSTRUCT("507AE360-C554-11D0-8A2B-00A0C9255AC1",KSNODETYPE_DAC); -#define KSNODETYPE_DAC DEFINE_GUIDNAMED(KSNODETYPE_DAC) - -#define STATIC_KSNODETYPE_ADC \ - 0x4D837FE0L,0xC555,0x11D0,0x8A,0x2B,0x00,0xA0,0xC9,0x25,0x5A,0xC1 -DEFINE_GUIDSTRUCT("4D837FE0-C555-11D0-8A2B-00A0C9255AC1",KSNODETYPE_ADC); -#define KSNODETYPE_ADC DEFINE_GUIDNAMED(KSNODETYPE_ADC) - -#define STATIC_KSNODETYPE_SRC \ - 0x9DB7B9E0L,0xC555,0x11D0,0x8A,0x2B,0x00,0xA0,0xC9,0x25,0x5A,0xC1 -DEFINE_GUIDSTRUCT("9DB7B9E0-C555-11D0-8A2B-00A0C9255AC1",KSNODETYPE_SRC); -#define KSNODETYPE_SRC DEFINE_GUIDNAMED(KSNODETYPE_SRC) - -#define STATIC_KSNODETYPE_SUPERMIX \ - 0xE573ADC0L,0xC555,0x11D0,0x8A,0x2B,0x00,0xA0,0xC9,0x25,0x5A,0xC1 -DEFINE_GUIDSTRUCT("E573ADC0-C555-11D0-8A2B-00A0C9255AC1",KSNODETYPE_SUPERMIX); -#define KSNODETYPE_SUPERMIX DEFINE_GUIDNAMED(KSNODETYPE_SUPERMIX) - -#define STATIC_KSNODETYPE_MUX \ - 0x2CEAF780L,0xC556,0x11D0,0x8A,0x2B,0x00,0xA0,0xC9,0x25,0x5A,0xC1 -DEFINE_GUIDSTRUCT("2CEAF780-C556-11D0-8A2B-00A0C9255AC1",KSNODETYPE_MUX); -#define KSNODETYPE_MUX DEFINE_GUIDNAMED(KSNODETYPE_MUX) - -#define STATIC_KSNODETYPE_DEMUX \ - 0xC0EB67D4L,0xE807,0x11D0,0x95,0x8A,0x00,0xC0,0x4F,0xB9,0x25,0xD3 -DEFINE_GUIDSTRUCT("C0EB67D4-E807-11D0-958A-00C04FB925D3",KSNODETYPE_DEMUX); -#define KSNODETYPE_DEMUX DEFINE_GUIDNAMED(KSNODETYPE_DEMUX) - -#define STATIC_KSNODETYPE_SUM \ - 0xDA441A60L,0xC556,0x11D0,0x8A,0x2B,0x00,0xA0,0xC9,0x25,0x5A,0xC1 -DEFINE_GUIDSTRUCT("DA441A60-C556-11D0-8A2B-00A0C9255AC1",KSNODETYPE_SUM); -#define KSNODETYPE_SUM DEFINE_GUIDNAMED(KSNODETYPE_SUM) - -#define STATIC_KSNODETYPE_MUTE \ - 0x02B223C0L,0xC557,0x11D0,0x8A,0x2B,0x00,0xA0,0xC9,0x25,0x5A,0xC1 -DEFINE_GUIDSTRUCT("02B223C0-C557-11D0-8A2B-00A0C9255AC1",KSNODETYPE_MUTE); -#define KSNODETYPE_MUTE DEFINE_GUIDNAMED(KSNODETYPE_MUTE) - -#define STATIC_KSNODETYPE_VOLUME \ - 0x3A5ACC00L,0xC557,0x11D0,0x8A,0x2B,0x00,0xA0,0xC9,0x25,0x5A,0xC1 -DEFINE_GUIDSTRUCT("3A5ACC00-C557-11D0-8A2B-00A0C9255AC1",KSNODETYPE_VOLUME); -#define KSNODETYPE_VOLUME DEFINE_GUIDNAMED(KSNODETYPE_VOLUME) - -#define STATIC_KSNODETYPE_TONE \ - 0x7607E580L,0xC557,0x11D0,0x8A,0x2B,0x00,0xA0,0xC9,0x25,0x5A,0xC1 -DEFINE_GUIDSTRUCT("7607E580-C557-11D0-8A2B-00A0C9255AC1",KSNODETYPE_TONE); -#define KSNODETYPE_TONE DEFINE_GUIDNAMED(KSNODETYPE_TONE) - -#define STATIC_KSNODETYPE_EQUALIZER \ - 0x9D41B4A0L,0xC557,0x11D0,0x8A,0x2B,0x00,0xA0,0xC9,0x25,0x5A,0xC1 -DEFINE_GUIDSTRUCT("9D41B4A0-C557-11D0-8A2B-00A0C9255AC1",KSNODETYPE_EQUALIZER); -#define KSNODETYPE_EQUALIZER DEFINE_GUIDNAMED(KSNODETYPE_EQUALIZER) - -#define STATIC_KSNODETYPE_AGC \ - 0xE88C9BA0L,0xC557,0x11D0,0x8A,0x2B,0x00,0xA0,0xC9,0x25,0x5A,0xC1 -DEFINE_GUIDSTRUCT("E88C9BA0-C557-11D0-8A2B-00A0C9255AC1",KSNODETYPE_AGC); -#define KSNODETYPE_AGC DEFINE_GUIDNAMED(KSNODETYPE_AGC) - -#define STATIC_KSNODETYPE_NOISE_SUPPRESS \ - 0xe07f903f,0x62fd,0x4e60,0x8c,0xdd,0xde,0xa7,0x23,0x66,0x65,0xb5 -DEFINE_GUIDSTRUCT("E07F903F-62FD-4e60-8CDD-DEA7236665B5",KSNODETYPE_NOISE_SUPPRESS); -#define KSNODETYPE_NOISE_SUPPRESS DEFINE_GUIDNAMED(KSNODETYPE_NOISE_SUPPRESS) - -#define STATIC_KSNODETYPE_DELAY \ - 0x144981E0L,0xC558,0x11D0,0x8A,0x2B,0x00,0xA0,0xC9,0x25,0x5A,0xC1 -DEFINE_GUIDSTRUCT("144981E0-C558-11D0-8A2B-00A0C9255AC1",KSNODETYPE_DELAY); -#define KSNODETYPE_DELAY DEFINE_GUIDNAMED(KSNODETYPE_DELAY) - -#define STATIC_KSNODETYPE_LOUDNESS \ - 0x41887440L,0xC558,0x11D0,0x8A,0x2B,0x00,0xA0,0xC9,0x25,0x5A,0xC1 -DEFINE_GUIDSTRUCT("41887440-C558-11D0-8A2B-00A0C9255AC1",KSNODETYPE_LOUDNESS); -#define KSNODETYPE_LOUDNESS DEFINE_GUIDNAMED(KSNODETYPE_LOUDNESS) - -#define STATIC_KSNODETYPE_PROLOGIC_DECODER \ - 0x831C2C80L,0xC558,0x11D0,0x8A,0x2B,0x00,0xA0,0xC9,0x25,0x5A,0xC1 -DEFINE_GUIDSTRUCT("831C2C80-C558-11D0-8A2B-00A0C9255AC1",KSNODETYPE_PROLOGIC_DECODER); -#define KSNODETYPE_PROLOGIC_DECODER DEFINE_GUIDNAMED(KSNODETYPE_PROLOGIC_DECODER) - -#define STATIC_KSNODETYPE_STEREO_WIDE \ - 0xA9E69800L,0xC558,0x11D0,0x8A,0x2B,0x00,0xA0,0xC9,0x25,0x5A,0xC1 -DEFINE_GUIDSTRUCT("A9E69800-C558-11D0-8A2B-00A0C9255AC1",KSNODETYPE_STEREO_WIDE); -#define KSNODETYPE_STEREO_WIDE DEFINE_GUIDNAMED(KSNODETYPE_STEREO_WIDE) - -#define STATIC_KSNODETYPE_STEREO_ENHANCE \ - 0xAF6878ACL,0xE83F,0x11D0,0x95,0x8A,0x00,0xC0,0x4F,0xB9,0x25,0xD3 -DEFINE_GUIDSTRUCT("AF6878AC-E83F-11D0-958A-00C04FB925D3",KSNODETYPE_STEREO_ENHANCE); -#define KSNODETYPE_STEREO_ENHANCE DEFINE_GUIDNAMED(KSNODETYPE_STEREO_ENHANCE) - -#define STATIC_KSNODETYPE_REVERB \ - 0xEF0328E0L,0xC558,0x11D0,0x8A,0x2B,0x00,0xA0,0xC9,0x25,0x5A,0xC1 -DEFINE_GUIDSTRUCT("EF0328E0-C558-11D0-8A2B-00A0C9255AC1",KSNODETYPE_REVERB); -#define KSNODETYPE_REVERB DEFINE_GUIDNAMED(KSNODETYPE_REVERB) - -#define STATIC_KSNODETYPE_CHORUS \ - 0x20173F20L,0xC559,0x11D0,0x8A,0x2B,0x00,0xA0,0xC9,0x25,0x5A,0xC1 -DEFINE_GUIDSTRUCT("20173F20-C559-11D0-8A2B-00A0C9255AC1",KSNODETYPE_CHORUS); -#define KSNODETYPE_CHORUS DEFINE_GUIDNAMED(KSNODETYPE_CHORUS) - -#define STATIC_KSNODETYPE_3D_EFFECTS \ - 0x55515860L,0xC559,0x11D0,0x8A,0x2B,0x00,0xA0,0xC9,0x25,0x5A,0xC1 -DEFINE_GUIDSTRUCT("55515860-C559-11D0-8A2B-00A0C9255AC1",KSNODETYPE_3D_EFFECTS); -#define KSNODETYPE_3D_EFFECTS DEFINE_GUIDNAMED(KSNODETYPE_3D_EFFECTS) - -#define STATIC_KSNODETYPE_ACOUSTIC_ECHO_CANCEL STATIC_KSCATEGORY_ACOUSTIC_ECHO_CANCEL -#define KSNODETYPE_ACOUSTIC_ECHO_CANCEL KSCATEGORY_ACOUSTIC_ECHO_CANCEL - -#define STATIC_KSALGORITHMINSTANCE_SYSTEM_ACOUSTIC_ECHO_CANCEL \ - 0x1c22c56dL,0x9879,0x4f5b,0xa3,0x89,0x27,0x99,0x6d,0xdc,0x28,0x10 -DEFINE_GUIDSTRUCT("1C22C56D-9879-4f5b-A389-27996DDC2810",KSALGORITHMINSTANCE_SYSTEM_ACOUSTIC_ECHO_CANCEL); -#define KSALGORITHMINSTANCE_SYSTEM_ACOUSTIC_ECHO_CANCEL DEFINE_GUIDNAMED(KSALGORITHMINSTANCE_SYSTEM_ACOUSTIC_ECHO_CANCEL) - -#define STATIC_KSALGORITHMINSTANCE_SYSTEM_NOISE_SUPPRESS \ - 0x5ab0882eL,0x7274,0x4516,0x87,0x7d,0x4e,0xee,0x99,0xba,0x4f,0xd0 -DEFINE_GUIDSTRUCT("5AB0882E-7274-4516-877D-4EEE99BA4FD0",KSALGORITHMINSTANCE_SYSTEM_NOISE_SUPPRESS); -#define KSALGORITHMINSTANCE_SYSTEM_NOISE_SUPPRESS DEFINE_GUIDNAMED(KSALGORITHMINSTANCE_SYSTEM_NOISE_SUPPRESS) - -#define STATIC_KSALGORITHMINSTANCE_SYSTEM_AGC \ - 0x950e55b9L,0x877c,0x4c67,0xbe,0x8,0xe4,0x7b,0x56,0x11,0x13,0xa -DEFINE_GUIDSTRUCT("950E55B9-877C-4c67-BE08-E47B5611130A",KSALGORITHMINSTANCE_SYSTEM_AGC); -#define KSALGORITHMINSTANCE_SYSTEM_AGC DEFINE_GUIDNAMED(KSALGORITHMINSTANCE_SYSTEM_AGC) - -#define STATIC_KSALGORITHMINSTANCE_SYSTEM_MICROPHONE_ARRAY_PROCESSOR \ - 0xB6F5A0A0L,0x9E61,0x4F8C,0x91,0xE3,0x76,0xCF,0xF,0x3C,0x47,0x1F -DEFINE_GUIDSTRUCT("B6F5A0A0-9E61-4f8c-91E3-76CF0F3C471F",KSALGORITHMINSTANCE_SYSTEM_MICROPHONE_ARRAY_PROCESSOR); -#define KSALGORITHMINSTANCE_SYSTEM_MICROPHONE_ARRAY_PROCESSOR DEFINE_GUIDNAMED(KSALGORITHMINSTANCE_SYSTEM_MICROPHONE_ARRAY_PROCESSOR) - -#define STATIC_KSNODETYPE_MICROPHONE_ARRAY_PROCESSOR STATIC_KSCATEGORY_MICROPHONE_ARRAY_PROCESSOR -#define KSNODETYPE_MICROPHONE_ARRAY_PROCESSOR KSCATEGORY_MICROPHONE_ARRAY_PROCESSOR - -#define STATIC_KSNODETYPE_DEV_SPECIFIC \ - 0x941C7AC0L,0xC559,0x11D0,0x8A,0x2B,0x00,0xA0,0xC9,0x25,0x5A,0xC1 -DEFINE_GUIDSTRUCT("941C7AC0-C559-11D0-8A2B-00A0C9255AC1",KSNODETYPE_DEV_SPECIFIC); -#define KSNODETYPE_DEV_SPECIFIC DEFINE_GUIDNAMED(KSNODETYPE_DEV_SPECIFIC) - -#define STATIC_KSNODETYPE_PROLOGIC_ENCODER \ - 0x8074C5B2L,0x3C66,0x11D2,0xB4,0x5A,0x30,0x78,0x30,0x2C,0x20,0x30 -DEFINE_GUIDSTRUCT("8074C5B2-3C66-11D2-B45A-3078302C2030",KSNODETYPE_PROLOGIC_ENCODER); -#define KSNODETYPE_PROLOGIC_ENCODER DEFINE_GUIDNAMED(KSNODETYPE_PROLOGIC_ENCODER) -#define KSNODETYPE_SURROUND_ENCODER KSNODETYPE_PROLOGIC_ENCODER - -#define STATIC_KSNODETYPE_PEAKMETER \ - 0xa085651eL,0x5f0d,0x4b36,0xa8,0x69,0xd1,0x95,0xd6,0xab,0x4b,0x9e -DEFINE_GUIDSTRUCT("A085651E-5F0D-4b36-A869-D195D6AB4B9E",KSNODETYPE_PEAKMETER); -#define KSNODETYPE_PEAKMETER DEFINE_GUIDNAMED(KSNODETYPE_PEAKMETER) - -#define STATIC_KSAUDFNAME_BASS \ - 0x185FEDE0L,0x9905,0x11D1,0x95,0xA9,0x00,0xC0,0x4F,0xB9,0x25,0xD3 -DEFINE_GUIDSTRUCT("185FEDE0-9905-11D1-95A9-00C04FB925D3",KSAUDFNAME_BASS); -#define KSAUDFNAME_BASS DEFINE_GUIDNAMED(KSAUDFNAME_BASS) - -#define STATIC_KSAUDFNAME_TREBLE \ - 0x185FEDE1L,0x9905,0x11D1,0x95,0xA9,0x00,0xC0,0x4F,0xB9,0x25,0xD3 -DEFINE_GUIDSTRUCT("185FEDE1-9905-11D1-95A9-00C04FB925D3",KSAUDFNAME_TREBLE); -#define KSAUDFNAME_TREBLE DEFINE_GUIDNAMED(KSAUDFNAME_TREBLE) - -#define STATIC_KSAUDFNAME_3D_STEREO \ - 0x185FEDE2L,0x9905,0x11D1,0x95,0xA9,0x00,0xC0,0x4F,0xB9,0x25,0xD3 -DEFINE_GUIDSTRUCT("185FEDE2-9905-11D1-95A9-00C04FB925D3",KSAUDFNAME_3D_STEREO); -#define KSAUDFNAME_3D_STEREO DEFINE_GUIDNAMED(KSAUDFNAME_3D_STEREO) - -#define STATIC_KSAUDFNAME_MASTER_VOLUME \ - 0x185FEDE3L,0x9905,0x11D1,0x95,0xA9,0x00,0xC0,0x4F,0xB9,0x25,0xD3 -DEFINE_GUIDSTRUCT("185FEDE3-9905-11D1-95A9-00C04FB925D3",KSAUDFNAME_MASTER_VOLUME); -#define KSAUDFNAME_MASTER_VOLUME DEFINE_GUIDNAMED(KSAUDFNAME_MASTER_VOLUME) - -#define STATIC_KSAUDFNAME_MASTER_MUTE \ - 0x185FEDE4L,0x9905,0x11D1,0x95,0xA9,0x00,0xC0,0x4F,0xB9,0x25,0xD3 -DEFINE_GUIDSTRUCT("185FEDE4-9905-11D1-95A9-00C04FB925D3",KSAUDFNAME_MASTER_MUTE); -#define KSAUDFNAME_MASTER_MUTE DEFINE_GUIDNAMED(KSAUDFNAME_MASTER_MUTE) - -#define STATIC_KSAUDFNAME_WAVE_VOLUME \ - 0x185FEDE5L,0x9905,0x11D1,0x95,0xA9,0x00,0xC0,0x4F,0xB9,0x25,0xD3 -DEFINE_GUIDSTRUCT("185FEDE5-9905-11D1-95A9-00C04FB925D3",KSAUDFNAME_WAVE_VOLUME); -#define KSAUDFNAME_WAVE_VOLUME DEFINE_GUIDNAMED(KSAUDFNAME_WAVE_VOLUME) - -#define STATIC_KSAUDFNAME_WAVE_MUTE \ - 0x185FEDE6L,0x9905,0x11D1,0x95,0xA9,0x00,0xC0,0x4F,0xB9,0x25,0xD3 -DEFINE_GUIDSTRUCT("185FEDE6-9905-11D1-95A9-00C04FB925D3",KSAUDFNAME_WAVE_MUTE); -#define KSAUDFNAME_WAVE_MUTE DEFINE_GUIDNAMED(KSAUDFNAME_WAVE_MUTE) - -#define STATIC_KSAUDFNAME_MIDI_VOLUME \ - 0x185FEDE7L,0x9905,0x11D1,0x95,0xA9,0x00,0xC0,0x4F,0xB9,0x25,0xD3 -DEFINE_GUIDSTRUCT("185FEDE7-9905-11D1-95A9-00C04FB925D3",KSAUDFNAME_MIDI_VOLUME); -#define KSAUDFNAME_MIDI_VOLUME DEFINE_GUIDNAMED(KSAUDFNAME_MIDI_VOLUME) - -#define STATIC_KSAUDFNAME_MIDI_MUTE \ - 0x185FEDE8L,0x9905,0x11D1,0x95,0xA9,0x00,0xC0,0x4F,0xB9,0x25,0xD3 -DEFINE_GUIDSTRUCT("185FEDE8-9905-11D1-95A9-00C04FB925D3",KSAUDFNAME_MIDI_MUTE); -#define KSAUDFNAME_MIDI_MUTE DEFINE_GUIDNAMED(KSAUDFNAME_MIDI_MUTE) - -#define STATIC_KSAUDFNAME_CD_VOLUME \ - 0x185FEDE9L,0x9905,0x11D1,0x95,0xA9,0x00,0xC0,0x4F,0xB9,0x25,0xD3 -DEFINE_GUIDSTRUCT("185FEDE9-9905-11D1-95A9-00C04FB925D3",KSAUDFNAME_CD_VOLUME); -#define KSAUDFNAME_CD_VOLUME DEFINE_GUIDNAMED(KSAUDFNAME_CD_VOLUME) - -#define STATIC_KSAUDFNAME_CD_MUTE \ - 0x185FEDEAL,0x9905,0x11D1,0x95,0xA9,0x00,0xC0,0x4F,0xB9,0x25,0xD3 -DEFINE_GUIDSTRUCT("185FEDEA-9905-11D1-95A9-00C04FB925D3",KSAUDFNAME_CD_MUTE); -#define KSAUDFNAME_CD_MUTE DEFINE_GUIDNAMED(KSAUDFNAME_CD_MUTE) - -#define STATIC_KSAUDFNAME_LINE_VOLUME \ - 0x185FEDEBL,0x9905,0x11D1,0x95,0xA9,0x00,0xC0,0x4F,0xB9,0x25,0xD3 -DEFINE_GUIDSTRUCT("185FEDEB-9905-11D1-95A9-00C04FB925D3",KSAUDFNAME_LINE_VOLUME); -#define KSAUDFNAME_LINE_VOLUME DEFINE_GUIDNAMED(KSAUDFNAME_LINE_VOLUME) - -#define STATIC_KSAUDFNAME_LINE_MUTE \ - 0x185FEDECL,0x9905,0x11D1,0x95,0xA9,0x00,0xC0,0x4F,0xB9,0x25,0xD3 -DEFINE_GUIDSTRUCT("185FEDEC-9905-11D1-95A9-00C04FB925D3",KSAUDFNAME_LINE_MUTE); -#define KSAUDFNAME_LINE_MUTE DEFINE_GUIDNAMED(KSAUDFNAME_LINE_MUTE) - -#define STATIC_KSAUDFNAME_MIC_VOLUME \ - 0x185FEDEDL,0x9905,0x11D1,0x95,0xA9,0x00,0xC0,0x4F,0xB9,0x25,0xD3 -DEFINE_GUIDSTRUCT("185FEDED-9905-11D1-95A9-00C04FB925D3",KSAUDFNAME_MIC_VOLUME); -#define KSAUDFNAME_MIC_VOLUME DEFINE_GUIDNAMED(KSAUDFNAME_MIC_VOLUME) - -#define STATIC_KSAUDFNAME_MIC_MUTE \ - 0x185FEDEEL,0x9905,0x11D1,0x95,0xA9,0x00,0xC0,0x4F,0xB9,0x25,0xD3 -DEFINE_GUIDSTRUCT("185FEDEE-9905-11D1-95A9-00C04FB925D3",KSAUDFNAME_MIC_MUTE); -#define KSAUDFNAME_MIC_MUTE DEFINE_GUIDNAMED(KSAUDFNAME_MIC_MUTE) - -#define STATIC_KSAUDFNAME_RECORDING_SOURCE \ - 0x185FEDEFL,0x9905,0x11D1,0x95,0xA9,0x00,0xC0,0x4F,0xB9,0x25,0xD3 -DEFINE_GUIDSTRUCT("185FEDEF-9905-11D1-95A9-00C04FB925D3",KSAUDFNAME_RECORDING_SOURCE); -#define KSAUDFNAME_RECORDING_SOURCE DEFINE_GUIDNAMED(KSAUDFNAME_RECORDING_SOURCE) - -#define STATIC_KSAUDFNAME_PC_SPEAKER_VOLUME \ - 0x185FEDF0L,0x9905,0x11D1,0x95,0xA9,0x00,0xC0,0x4F,0xB9,0x25,0xD3 -DEFINE_GUIDSTRUCT("185FEDF0-9905-11D1-95A9-00C04FB925D3",KSAUDFNAME_PC_SPEAKER_VOLUME); -#define KSAUDFNAME_PC_SPEAKER_VOLUME DEFINE_GUIDNAMED(KSAUDFNAME_PC_SPEAKER_VOLUME) - -#define STATIC_KSAUDFNAME_PC_SPEAKER_MUTE \ - 0x185FEDF1L,0x9905,0x11D1,0x95,0xA9,0x00,0xC0,0x4F,0xB9,0x25,0xD3 -DEFINE_GUIDSTRUCT("185FEDF1-9905-11D1-95A9-00C04FB925D3",KSAUDFNAME_PC_SPEAKER_MUTE); -#define KSAUDFNAME_PC_SPEAKER_MUTE DEFINE_GUIDNAMED(KSAUDFNAME_PC_SPEAKER_MUTE) - -#define STATIC_KSAUDFNAME_MIDI_IN_VOLUME \ - 0x185FEDF2L,0x9905,0x11D1,0x95,0xA9,0x00,0xC0,0x4F,0xB9,0x25,0xD3 -DEFINE_GUIDSTRUCT("185FEDF2-9905-11D1-95A9-00C04FB925D3",KSAUDFNAME_MIDI_IN_VOLUME); -#define KSAUDFNAME_MIDI_IN_VOLUME DEFINE_GUIDNAMED(KSAUDFNAME_MIDI_IN_VOLUME) - -#define STATIC_KSAUDFNAME_CD_IN_VOLUME \ - 0x185FEDF3L,0x9905,0x11D1,0x95,0xA9,0x00,0xC0,0x4F,0xB9,0x25,0xD3 -DEFINE_GUIDSTRUCT("185FEDF3-9905-11D1-95A9-00C04FB925D3",KSAUDFNAME_CD_IN_VOLUME); -#define KSAUDFNAME_CD_IN_VOLUME DEFINE_GUIDNAMED(KSAUDFNAME_CD_IN_VOLUME) - -#define STATIC_KSAUDFNAME_LINE_IN_VOLUME \ - 0x185FEDF4L,0x9905,0x11D1,0x95,0xA9,0x00,0xC0,0x4F,0xB9,0x25,0xD3 -DEFINE_GUIDSTRUCT("185FEDF4-9905-11D1-95A9-00C04FB925D3",KSAUDFNAME_LINE_IN_VOLUME); -#define KSAUDFNAME_LINE_IN_VOLUME DEFINE_GUIDNAMED(KSAUDFNAME_LINE_IN_VOLUME) - -#define STATIC_KSAUDFNAME_MIC_IN_VOLUME \ - 0x185FEDF5L,0x9905,0x11D1,0x95,0xA9,0x00,0xC0,0x4F,0xB9,0x25,0xD3 -DEFINE_GUIDSTRUCT("185FEDF5-9905-11D1-95A9-00C04FB925D3",KSAUDFNAME_MIC_IN_VOLUME); -#define KSAUDFNAME_MIC_IN_VOLUME DEFINE_GUIDNAMED(KSAUDFNAME_MIC_IN_VOLUME) - -#define STATIC_KSAUDFNAME_WAVE_IN_VOLUME \ - 0x185FEDF6L,0x9905,0x11D1,0x95,0xA9,0x00,0xC0,0x4F,0xB9,0x25,0xD3 -DEFINE_GUIDSTRUCT("185FEDF6-9905-11D1-95A9-00C04FB925D3",KSAUDFNAME_WAVE_IN_VOLUME); -#define KSAUDFNAME_WAVE_IN_VOLUME DEFINE_GUIDNAMED(KSAUDFNAME_WAVE_IN_VOLUME) - -#define STATIC_KSAUDFNAME_VOLUME_CONTROL \ - 0x185FEDF7L,0x9905,0x11D1,0x95,0xA9,0x00,0xC0,0x4F,0xB9,0x25,0xD3 -DEFINE_GUIDSTRUCT("185FEDF7-9905-11D1-95A9-00C04FB925D3",KSAUDFNAME_VOLUME_CONTROL); -#define KSAUDFNAME_VOLUME_CONTROL DEFINE_GUIDNAMED(KSAUDFNAME_VOLUME_CONTROL) - -#define STATIC_KSAUDFNAME_MIDI \ - 0x185FEDF8L,0x9905,0x11D1,0x95,0xA9,0x00,0xC0,0x4F,0xB9,0x25,0xD3 -DEFINE_GUIDSTRUCT("185FEDF8-9905-11D1-95A9-00C04FB925D3",KSAUDFNAME_MIDI); -#define KSAUDFNAME_MIDI DEFINE_GUIDNAMED(KSAUDFNAME_MIDI) - -#define STATIC_KSAUDFNAME_LINE_IN \ - 0x185FEDF9L,0x9905,0x11D1,0x95,0xA9,0x00,0xC0,0x4F,0xB9,0x25,0xD3 -DEFINE_GUIDSTRUCT("185FEDF9-9905-11D1-95A9-00C04FB925D3",KSAUDFNAME_LINE_IN); -#define KSAUDFNAME_LINE_IN DEFINE_GUIDNAMED(KSAUDFNAME_LINE_IN) - -#define STATIC_KSAUDFNAME_RECORDING_CONTROL \ - 0x185FEDFAL,0x9905,0x11D1,0x95,0xA9,0x00,0xC0,0x4F,0xB9,0x25,0xD3 -DEFINE_GUIDSTRUCT("185FEDFA-9905-11D1-95A9-00C04FB925D3",KSAUDFNAME_RECORDING_CONTROL); -#define KSAUDFNAME_RECORDING_CONTROL DEFINE_GUIDNAMED(KSAUDFNAME_RECORDING_CONTROL) - -#define STATIC_KSAUDFNAME_CD_AUDIO \ - 0x185FEDFBL,0x9905,0x11D1,0x95,0xA9,0x00,0xC0,0x4F,0xB9,0x25,0xD3 -DEFINE_GUIDSTRUCT("185FEDFB-9905-11D1-95A9-00C04FB925D3",KSAUDFNAME_CD_AUDIO); -#define KSAUDFNAME_CD_AUDIO DEFINE_GUIDNAMED(KSAUDFNAME_CD_AUDIO) - -#define STATIC_KSAUDFNAME_AUX_VOLUME \ - 0x185FEDFCL,0x9905,0x11D1,0x95,0xA9,0x00,0xC0,0x4F,0xB9,0x25,0xD3 -DEFINE_GUIDSTRUCT("185FEDFC-9905-11D1-95A9-00C04FB925D3",KSAUDFNAME_AUX_VOLUME); -#define KSAUDFNAME_AUX_VOLUME DEFINE_GUIDNAMED(KSAUDFNAME_AUX_VOLUME) - -#define STATIC_KSAUDFNAME_AUX_MUTE \ - 0x185FEDFDL,0x9905,0x11D1,0x95,0xA9,0x00,0xC0,0x4F,0xB9,0x25,0xD3 -DEFINE_GUIDSTRUCT("185FEDFD-9905-11D1-95A9-00C04FB925D3",KSAUDFNAME_AUX_MUTE); -#define KSAUDFNAME_AUX_MUTE DEFINE_GUIDNAMED(KSAUDFNAME_AUX_MUTE) - -#define STATIC_KSAUDFNAME_AUX \ - 0x185FEDFEL,0x9905,0x11D1,0x95,0xA9,0x00,0xC0,0x4F,0xB9,0x25,0xD3 -DEFINE_GUIDSTRUCT("185FEDFE-9905-11D1-95A9-00C04FB925D3",KSAUDFNAME_AUX); -#define KSAUDFNAME_AUX DEFINE_GUIDNAMED(KSAUDFNAME_AUX) - -#define STATIC_KSAUDFNAME_PC_SPEAKER \ - 0x185FEDFFL,0x9905,0x11D1,0x95,0xA9,0x00,0xC0,0x4F,0xB9,0x25,0xD3 -DEFINE_GUIDSTRUCT("185FEDFF-9905-11D1-95A9-00C04FB925D3",KSAUDFNAME_PC_SPEAKER); -#define KSAUDFNAME_PC_SPEAKER DEFINE_GUIDNAMED(KSAUDFNAME_PC_SPEAKER) - -#define STATIC_KSAUDFNAME_WAVE_OUT_MIX \ - 0x185FEE00L,0x9905,0x11D1,0x95,0xA9,0x00,0xC0,0x4F,0xB9,0x25,0xD3 -DEFINE_GUIDSTRUCT("185FEE00-9905-11D1-95A9-00C04FB925D3",KSAUDFNAME_WAVE_OUT_MIX); -#define KSAUDFNAME_WAVE_OUT_MIX DEFINE_GUIDNAMED(KSAUDFNAME_WAVE_OUT_MIX) - -#define STATIC_KSAUDFNAME_MONO_OUT \ - 0xf9b41dc3L,0x96e2,0x11d2,0xac,0x4c,0x0,0xc0,0x4f,0x8e,0xfb,0x68 -DEFINE_GUIDSTRUCT("F9B41DC3-96E2-11d2-AC4C-00C04F8EFB68",KSAUDFNAME_MONO_OUT); -#define KSAUDFNAME_MONO_OUT DEFINE_GUIDNAMED(KSAUDFNAME_MONO_OUT) - -#define STATIC_KSAUDFNAME_STEREO_MIX \ - 0xdff077L,0x96e3,0x11d2,0xac,0x4c,0x0,0xc0,0x4f,0x8e,0xfb,0x68 -DEFINE_GUIDSTRUCT("00DFF077-96E3-11d2-AC4C-00C04F8EFB68",KSAUDFNAME_STEREO_MIX); -#define KSAUDFNAME_STEREO_MIX DEFINE_GUIDNAMED(KSAUDFNAME_STEREO_MIX) - -#define STATIC_KSAUDFNAME_MONO_MIX \ - 0xdff078L,0x96e3,0x11d2,0xac,0x4c,0x0,0xc0,0x4f,0x8e,0xfb,0x68 -DEFINE_GUIDSTRUCT("00DFF078-96E3-11d2-AC4C-00C04F8EFB68",KSAUDFNAME_MONO_MIX); -#define KSAUDFNAME_MONO_MIX DEFINE_GUIDNAMED(KSAUDFNAME_MONO_MIX) - -#define STATIC_KSAUDFNAME_MONO_OUT_VOLUME \ - 0x1ad247ebL,0x96e3,0x11d2,0xac,0x4c,0x0,0xc0,0x4f,0x8e,0xfb,0x68 -DEFINE_GUIDSTRUCT("1AD247EB-96E3-11d2-AC4C-00C04F8EFB68",KSAUDFNAME_MONO_OUT_VOLUME); -#define KSAUDFNAME_MONO_OUT_VOLUME DEFINE_GUIDNAMED(KSAUDFNAME_MONO_OUT_VOLUME) - -#define STATIC_KSAUDFNAME_MONO_OUT_MUTE \ - 0x1ad247ecL,0x96e3,0x11d2,0xac,0x4c,0x0,0xc0,0x4f,0x8e,0xfb,0x68 -DEFINE_GUIDSTRUCT("1AD247EC-96E3-11d2-AC4C-00C04F8EFB68",KSAUDFNAME_MONO_OUT_MUTE); -#define KSAUDFNAME_MONO_OUT_MUTE DEFINE_GUIDNAMED(KSAUDFNAME_MONO_OUT_MUTE) - -#define STATIC_KSAUDFNAME_STEREO_MIX_VOLUME \ - 0x1ad247edL,0x96e3,0x11d2,0xac,0x4c,0x0,0xc0,0x4f,0x8e,0xfb,0x68 -DEFINE_GUIDSTRUCT("1AD247ED-96E3-11d2-AC4C-00C04F8EFB68",KSAUDFNAME_STEREO_MIX_VOLUME); -#define KSAUDFNAME_STEREO_MIX_VOLUME DEFINE_GUIDNAMED(KSAUDFNAME_STEREO_MIX_VOLUME) - -#define STATIC_KSAUDFNAME_STEREO_MIX_MUTE \ - 0x22b0eafdL,0x96e3,0x11d2,0xac,0x4c,0x0,0xc0,0x4f,0x8e,0xfb,0x68 -DEFINE_GUIDSTRUCT("22B0EAFD-96E3-11d2-AC4C-00C04F8EFB68",KSAUDFNAME_STEREO_MIX_MUTE); -#define KSAUDFNAME_STEREO_MIX_MUTE DEFINE_GUIDNAMED(KSAUDFNAME_STEREO_MIX_MUTE) - -#define STATIC_KSAUDFNAME_MONO_MIX_VOLUME \ - 0x22b0eafeL,0x96e3,0x11d2,0xac,0x4c,0x0,0xc0,0x4f,0x8e,0xfb,0x68 -DEFINE_GUIDSTRUCT("22B0EAFE-96E3-11d2-AC4C-00C04F8EFB68",KSAUDFNAME_MONO_MIX_VOLUME); -#define KSAUDFNAME_MONO_MIX_VOLUME DEFINE_GUIDNAMED(KSAUDFNAME_MONO_MIX_VOLUME) - -#define STATIC_KSAUDFNAME_MONO_MIX_MUTE \ - 0x2bc31d69L,0x96e3,0x11d2,0xac,0x4c,0x0,0xc0,0x4f,0x8e,0xfb,0x68 -DEFINE_GUIDSTRUCT("2BC31D69-96E3-11d2-AC4C-00C04F8EFB68",KSAUDFNAME_MONO_MIX_MUTE); -#define KSAUDFNAME_MONO_MIX_MUTE DEFINE_GUIDNAMED(KSAUDFNAME_MONO_MIX_MUTE) - -#define STATIC_KSAUDFNAME_MICROPHONE_BOOST \ - 0x2bc31d6aL,0x96e3,0x11d2,0xac,0x4c,0x0,0xc0,0x4f,0x8e,0xfb,0x68 -DEFINE_GUIDSTRUCT("2BC31D6A-96E3-11d2-AC4C-00C04F8EFB68",KSAUDFNAME_MICROPHONE_BOOST); -#define KSAUDFNAME_MICROPHONE_BOOST DEFINE_GUIDNAMED(KSAUDFNAME_MICROPHONE_BOOST) - -#define STATIC_KSAUDFNAME_ALTERNATE_MICROPHONE \ - 0x2bc31d6bL,0x96e3,0x11d2,0xac,0x4c,0x0,0xc0,0x4f,0x8e,0xfb,0x68 -DEFINE_GUIDSTRUCT("2BC31D6B-96E3-11d2-AC4C-00C04F8EFB68",KSAUDFNAME_ALTERNATE_MICROPHONE); -#define KSAUDFNAME_ALTERNATE_MICROPHONE DEFINE_GUIDNAMED(KSAUDFNAME_ALTERNATE_MICROPHONE) - -#define STATIC_KSAUDFNAME_3D_DEPTH \ - 0x63ff5747L,0x991f,0x11d2,0xac,0x4d,0x0,0xc0,0x4f,0x8e,0xfb,0x68 -DEFINE_GUIDSTRUCT("63FF5747-991F-11d2-AC4D-00C04F8EFB68",KSAUDFNAME_3D_DEPTH); -#define KSAUDFNAME_3D_DEPTH DEFINE_GUIDNAMED(KSAUDFNAME_3D_DEPTH) - -#define STATIC_KSAUDFNAME_3D_CENTER \ - 0x9f0670b4L,0x991f,0x11d2,0xac,0x4d,0x0,0xc0,0x4f,0x8e,0xfb,0x68 -DEFINE_GUIDSTRUCT("9F0670B4-991F-11d2-AC4D-00C04F8EFB68",KSAUDFNAME_3D_CENTER); -#define KSAUDFNAME_3D_CENTER DEFINE_GUIDNAMED(KSAUDFNAME_3D_CENTER) - -#define STATIC_KSAUDFNAME_VIDEO_VOLUME \ - 0x9b46e708L,0x992a,0x11d2,0xac,0x4d,0x0,0xc0,0x4f,0x8e,0xfb,0x68 -DEFINE_GUIDSTRUCT("9B46E708-992A-11d2-AC4D-00C04F8EFB68",KSAUDFNAME_VIDEO_VOLUME); -#define KSAUDFNAME_VIDEO_VOLUME DEFINE_GUIDNAMED(KSAUDFNAME_VIDEO_VOLUME) - -#define STATIC_KSAUDFNAME_VIDEO_MUTE \ - 0x9b46e709L,0x992a,0x11d2,0xac,0x4d,0x0,0xc0,0x4f,0x8e,0xfb,0x68 -DEFINE_GUIDSTRUCT("9B46E709-992A-11d2-AC4D-00C04F8EFB68",KSAUDFNAME_VIDEO_MUTE); -#define KSAUDFNAME_VIDEO_MUTE DEFINE_GUIDNAMED(KSAUDFNAME_VIDEO_MUTE) - -#define STATIC_KSAUDFNAME_VIDEO \ - 0x915daec4L,0xa434,0x11d2,0xac,0x52,0x0,0xc0,0x4f,0x8e,0xfb,0x68 -DEFINE_GUIDSTRUCT("915DAEC4-A434-11d2-AC52-00C04F8EFB68",KSAUDFNAME_VIDEO); -#define KSAUDFNAME_VIDEO DEFINE_GUIDNAMED(KSAUDFNAME_VIDEO) - -#define STATIC_KSAUDFNAME_PEAKMETER \ - 0x57e24340L,0xfc5b,0x4612,0xa5,0x62,0x72,0xb1,0x1a,0x29,0xdf,0xae -DEFINE_GUIDSTRUCT("57E24340-FC5B-4612-A562-72B11A29DFAE",KSAUDFNAME_PEAKMETER); -#define KSAUDFNAME_PEAKMETER DEFINE_GUIDNAMED(KSAUDFNAME_PEAKMETER) - -#define KSNODEPIN_STANDARD_IN 1 -#define KSNODEPIN_STANDARD_OUT 0 - -#define KSNODEPIN_SUM_MUX_IN 1 -#define KSNODEPIN_SUM_MUX_OUT 0 - -#define KSNODEPIN_DEMUX_IN 0 -#define KSNODEPIN_DEMUX_OUT 1 - -#define KSNODEPIN_AEC_RENDER_IN 1 -#define KSNODEPIN_AEC_RENDER_OUT 0 -#define KSNODEPIN_AEC_CAPTURE_IN 2 -#define KSNODEPIN_AEC_CAPTURE_OUT 3 - -#define STATIC_KSMETHODSETID_Wavetable \ - 0xDCEF31EBL,0xD907,0x11D0,0x95,0x83,0x00,0xC0,0x4F,0xB9,0x25,0xD3 -DEFINE_GUIDSTRUCT("DCEF31EB-D907-11D0-9583-00C04FB925D3",KSMETHODSETID_Wavetable); -#define KSMETHODSETID_Wavetable DEFINE_GUIDNAMED(KSMETHODSETID_Wavetable) - -typedef enum { - KSMETHOD_WAVETABLE_WAVE_ALLOC, - KSMETHOD_WAVETABLE_WAVE_FREE, - KSMETHOD_WAVETABLE_WAVE_FIND, - KSMETHOD_WAVETABLE_WAVE_WRITE -} KSMETHOD_WAVETABLE; - -typedef struct { - KSIDENTIFIER Identifier; - ULONG Size; - WINBOOL Looped; - ULONG LoopPoint; - WINBOOL InROM; - KSDATAFORMAT Format; -} KSWAVETABLE_WAVE_DESC,*PKSWAVETABLE_WAVE_DESC; - -#define STATIC_KSPROPSETID_Acoustic_Echo_Cancel \ - 0xd7a4af8bL,0x3dc1,0x4902,0x91,0xea,0x8a,0x15,0xc9,0x0e,0x05,0xb2 -DEFINE_GUIDSTRUCT("D7A4AF8B-3DC1-4902-91EA-8A15C90E05B2",KSPROPSETID_Acoustic_Echo_Cancel); -#define KSPROPSETID_Acoustic_Echo_Cancel DEFINE_GUIDNAMED(KSPROPSETID_Acoustic_Echo_Cancel) - -typedef enum { - KSPROPERTY_AEC_NOISE_FILL_ENABLE = 0, - KSPROPERTY_AEC_STATUS, - KSPROPERTY_AEC_MODE -} KSPROPERTY_AEC; - -#define AEC_STATUS_FD_HISTORY_UNINITIALIZED 0x0 -#define AEC_STATUS_FD_HISTORY_CONTINUOUSLY_CONVERGED 0x1 -#define AEC_STATUS_FD_HISTORY_PREVIOUSLY_DIVERGED 0x2 -#define AEC_STATUS_FD_CURRENTLY_CONVERGED 0x8 - -#define AEC_MODE_PASS_THROUGH 0x0 -#define AEC_MODE_HALF_DUPLEX 0x1 -#define AEC_MODE_FULL_DUPLEX 0x2 - -#define STATIC_KSPROPSETID_Wave \ - 0x924e54b0L,0x630f,0x11cf,0xad,0xa7,0x08,0x00,0x3e,0x30,0x49,0x4a -DEFINE_GUIDSTRUCT("924e54b0-630f-11cf-ada7-08003e30494a",KSPROPSETID_Wave); -#define KSPROPSETID_Wave DEFINE_GUIDNAMED(KSPROPSETID_Wave) - -typedef enum { - KSPROPERTY_WAVE_COMPATIBLE_CAPABILITIES, - KSPROPERTY_WAVE_INPUT_CAPABILITIES, - KSPROPERTY_WAVE_OUTPUT_CAPABILITIES, - KSPROPERTY_WAVE_BUFFER, - KSPROPERTY_WAVE_FREQUENCY, - KSPROPERTY_WAVE_VOLUME, - KSPROPERTY_WAVE_PAN -} KSPROPERTY_WAVE; - -typedef struct { - ULONG ulDeviceType; -} KSWAVE_COMPATCAPS,*PKSWAVE_COMPATCAPS; - -#define KSWAVE_COMPATCAPS_INPUT 0x00000000 -#define KSWAVE_COMPATCAPS_OUTPUT 0x00000001 - -typedef struct { - ULONG MaximumChannelsPerConnection; - ULONG MinimumBitsPerSample; - ULONG MaximumBitsPerSample; - ULONG MinimumSampleFrequency; - ULONG MaximumSampleFrequency; - ULONG TotalConnections; - ULONG ActiveConnections; -} KSWAVE_INPUT_CAPABILITIES,*PKSWAVE_INPUT_CAPABILITIES; - -typedef struct { - ULONG MaximumChannelsPerConnection; - ULONG MinimumBitsPerSample; - ULONG MaximumBitsPerSample; - ULONG MinimumSampleFrequency; - ULONG MaximumSampleFrequency; - ULONG TotalConnections; - ULONG StaticConnections; - ULONG StreamingConnections; - ULONG ActiveConnections; - ULONG ActiveStaticConnections; - ULONG ActiveStreamingConnections; - ULONG Total3DConnections; - ULONG Static3DConnections; - ULONG Streaming3DConnections; - ULONG Active3DConnections; - ULONG ActiveStatic3DConnections; - ULONG ActiveStreaming3DConnections; - ULONG TotalSampleMemory; - ULONG FreeSampleMemory; - ULONG LargestFreeContiguousSampleMemory; -} KSWAVE_OUTPUT_CAPABILITIES,*PKSWAVE_OUTPUT_CAPABILITIES; - -typedef struct { - LONG LeftAttenuation; - LONG RightAttenuation; -} KSWAVE_VOLUME,*PKSWAVE_VOLUME; - -#define KSWAVE_BUFFER_ATTRIBUTEF_LOOPING 0x00000001 -#define KSWAVE_BUFFER_ATTRIBUTEF_STATIC 0x00000002 - -typedef struct { - ULONG Attributes; - ULONG BufferSize; - PVOID BufferAddress; -} KSWAVE_BUFFER,*PKSWAVE_BUFFER; - -#define STATIC_KSMUSIC_TECHNOLOGY_PORT \ - 0x86C92E60L,0x62E8,0x11CF,0xA5,0xD6,0x28,0xDB,0x04,0xC1,0x00,0x00 -DEFINE_GUIDSTRUCT("86C92E60-62E8-11CF-A5D6-28DB04C10000",KSMUSIC_TECHNOLOGY_PORT); -#define KSMUSIC_TECHNOLOGY_PORT DEFINE_GUIDNAMED(KSMUSIC_TECHNOLOGY_PORT) - -#define STATIC_KSMUSIC_TECHNOLOGY_SQSYNTH \ - 0x0ECF4380L,0x62E9,0x11CF,0xA5,0xD6,0x28,0xDB,0x04,0xC1,0x00,0x00 -DEFINE_GUIDSTRUCT("0ECF4380-62E9-11CF-A5D6-28DB04C10000",KSMUSIC_TECHNOLOGY_SQSYNTH); -#define KSMUSIC_TECHNOLOGY_SQSYNTH DEFINE_GUIDNAMED(KSMUSIC_TECHNOLOGY_SQSYNTH) - -#define STATIC_KSMUSIC_TECHNOLOGY_FMSYNTH \ - 0x252C5C80L,0x62E9,0x11CF,0xA5,0xD6,0x28,0xDB,0x04,0xC1,0x00,0x00 -DEFINE_GUIDSTRUCT("252C5C80-62E9-11CF-A5D6-28DB04C10000",KSMUSIC_TECHNOLOGY_FMSYNTH); -#define KSMUSIC_TECHNOLOGY_FMSYNTH DEFINE_GUIDNAMED(KSMUSIC_TECHNOLOGY_FMSYNTH) - -#define STATIC_KSMUSIC_TECHNOLOGY_WAVETABLE \ - 0x394EC7C0L,0x62E9,0x11CF,0xA5,0xD6,0x28,0xDB,0x04,0xC1,0x00,0x00 -DEFINE_GUIDSTRUCT("394EC7C0-62E9-11CF-A5D6-28DB04C10000",KSMUSIC_TECHNOLOGY_WAVETABLE); -#define KSMUSIC_TECHNOLOGY_WAVETABLE DEFINE_GUIDNAMED(KSMUSIC_TECHNOLOGY_WAVETABLE) - -#define STATIC_KSMUSIC_TECHNOLOGY_SWSYNTH \ - 0x37407736L,0x3620,0x11D1,0x85,0xD3,0x00,0x00,0xF8,0x75,0x43,0x80 -DEFINE_GUIDSTRUCT("37407736-3620-11D1-85D3-0000F8754380",KSMUSIC_TECHNOLOGY_SWSYNTH); -#define KSMUSIC_TECHNOLOGY_SWSYNTH DEFINE_GUIDNAMED(KSMUSIC_TECHNOLOGY_SWSYNTH) - -#define STATIC_KSPROPSETID_WaveTable \ - 0x8539E660L,0x62E9,0x11CF,0xA5,0xD6,0x28,0xDB,0x04,0xC1,0x00,0x00 -DEFINE_GUIDSTRUCT("8539E660-62E9-11CF-A5D6-28DB04C10000",KSPROPSETID_WaveTable); -#define KSPROPSETID_WaveTable DEFINE_GUIDNAMED(KSPROPSETID_WaveTable) - -typedef enum { - KSPROPERTY_WAVETABLE_LOAD_SAMPLE, - KSPROPERTY_WAVETABLE_UNLOAD_SAMPLE, - KSPROPERTY_WAVETABLE_MEMORY, - KSPROPERTY_WAVETABLE_VERSION -} KSPROPERTY_WAVETABLE; - -typedef struct { - KSDATARANGE DataRange; - GUID Technology; - ULONG Channels; - ULONG Notes; - ULONG ChannelMask; -} KSDATARANGE_MUSIC,*PKSDATARANGE_MUSIC; - -#define STATIC_KSEVENTSETID_Cyclic \ - 0x142C1AC0L,0x072A,0x11D0,0xA5,0xD6,0x28,0xDB,0x04,0xC1,0x00,0x00 -DEFINE_GUIDSTRUCT("142C1AC0-072A-11D0-A5D6-28DB04C10000",KSEVENTSETID_Cyclic); -#define KSEVENTSETID_Cyclic DEFINE_GUIDNAMED(KSEVENTSETID_Cyclic) - -typedef enum { - KSEVENT_CYCLIC_TIME_INTERVAL -} KSEVENT_CYCLIC_TIME; - -#define STATIC_KSPROPSETID_Cyclic \ - 0x3FFEAEA0L,0x2BEE,0x11CF,0xA5,0xD6,0x28,0xDB,0x04,0xC1,0x00,0x00 -DEFINE_GUIDSTRUCT("3FFEAEA0-2BEE-11CF-A5D6-28DB04C10000",KSPROPSETID_Cyclic); -#define KSPROPSETID_Cyclic DEFINE_GUIDNAMED(KSPROPSETID_Cyclic) - -typedef enum { - KSPROPERTY_CYCLIC_POSITION -} KSPROPERTY_CYCLIC; - -#define STATIC_KSEVENTSETID_AudioControlChange \ - 0xE85E9698L,0xFA2F,0x11D1,0x95,0xBD,0x00,0xC0,0x4F,0xB9,0x25,0xD3 -DEFINE_GUIDSTRUCT("E85E9698-FA2F-11D1-95BD-00C04FB925D3",KSEVENTSETID_AudioControlChange); -#define KSEVENTSETID_AudioControlChange DEFINE_GUIDNAMED(KSEVENTSETID_AudioControlChange) - -typedef enum { - KSEVENT_CONTROL_CHANGE -} KSEVENT_AUDIO_CONTROL_CHANGE; - -#define STATIC_KSEVENTSETID_LoopedStreaming \ - 0x4682B940L,0xC6EF,0x11D0,0x96,0xD8,0x00,0xAA,0x00,0x51,0xE5,0x1D -DEFINE_GUIDSTRUCT("4682B940-C6EF-11D0-96D8-00AA0051E51D",KSEVENTSETID_LoopedStreaming); -#define KSEVENTSETID_LoopedStreaming DEFINE_GUIDNAMED(KSEVENTSETID_LoopedStreaming) - -typedef enum { - KSEVENT_LOOPEDSTREAMING_POSITION -} KSEVENT_LOOPEDSTREAMING; - -typedef struct { - KSEVENTDATA KsEventData; - DWORDLONG Position; -} LOOPEDSTREAMING_POSITION_EVENT_DATA,*PLOOPEDSTREAMING_POSITION_EVENT_DATA; - -#define STATIC_KSPROPSETID_Sysaudio \ - 0xCBE3FAA0L,0xCC75,0x11D0,0xB4,0x65,0x00,0x00,0x1A,0x18,0x18,0xE6 -DEFINE_GUIDSTRUCT("CBE3FAA0-CC75-11D0-B465-00001A1818E6",KSPROPSETID_Sysaudio); -#define KSPROPSETID_Sysaudio DEFINE_GUIDNAMED(KSPROPSETID_Sysaudio) - -typedef enum { - KSPROPERTY_SYSAUDIO_DEVICE_COUNT = 1, - KSPROPERTY_SYSAUDIO_DEVICE_FRIENDLY_NAME = 2, - KSPROPERTY_SYSAUDIO_DEVICE_INSTANCE = 3, - KSPROPERTY_SYSAUDIO_DEVICE_INTERFACE_NAME = 4, - KSPROPERTY_SYSAUDIO_SELECT_GRAPH = 5, - KSPROPERTY_SYSAUDIO_CREATE_VIRTUAL_SOURCE = 6, - KSPROPERTY_SYSAUDIO_DEVICE_DEFAULT = 7, - KSPROPERTY_SYSAUDIO_INSTANCE_INFO = 14, - KSPROPERTY_SYSAUDIO_COMPONENT_ID = 16 -} KSPROPERTY_SYSAUDIO; - -typedef struct { - KSPROPERTY Property; - GUID PinCategory; - GUID PinName; -} SYSAUDIO_CREATE_VIRTUAL_SOURCE,*PSYSAUDIO_CREATE_VIRTUAL_SOURCE; - -typedef struct { - KSPROPERTY Property; - ULONG PinId; - ULONG NodeId; - ULONG Flags; - ULONG Reserved; -} SYSAUDIO_SELECT_GRAPH,*PSYSAUDIO_SELECT_GRAPH; - -typedef struct { - KSPROPERTY Property; - ULONG Flags; - ULONG DeviceNumber; -} SYSAUDIO_INSTANCE_INFO,*PSYSAUDIO_INSTANCE_INFO; - -#define SYSAUDIO_FLAGS_DONT_COMBINE_PINS 0x00000001 - -#define STATIC_KSPROPSETID_Sysaudio_Pin \ - 0xA3A53220L,0xC6E4,0x11D0,0xB4,0x65,0x00,0x00,0x1A,0x18,0x18,0xE6 -DEFINE_GUIDSTRUCT("A3A53220-C6E4-11D0-B465-00001A1818E6",KSPROPSETID_Sysaudio_Pin); -#define KSPROPSETID_Sysaudio_Pin DEFINE_GUIDNAMED(KSPROPSETID_Sysaudio_Pin) - -typedef enum { - KSPROPERTY_SYSAUDIO_ATTACH_VIRTUAL_SOURCE = 1 -} KSPROPERTY_SYSAUDIO_PIN; - -typedef struct { - KSPROPERTY Property; - ULONG MixerPinId; - ULONG Reserved; -} SYSAUDIO_ATTACH_VIRTUAL_SOURCE,*PSYSAUDIO_ATTACH_VIRTUAL_SOURCE; - -typedef struct { - KSPROPERTY Property; - ULONG NodeId; - ULONG Reserved; -} KSNODEPROPERTY,*PKSNODEPROPERTY; - -typedef struct { - KSNODEPROPERTY NodeProperty; - LONG Channel; - ULONG Reserved; -} KSNODEPROPERTY_AUDIO_CHANNEL,*PKSNODEPROPERTY_AUDIO_CHANNEL; - -typedef struct { - KSNODEPROPERTY NodeProperty; - ULONG DevSpecificId; - ULONG DeviceInfo; - ULONG Length; -} KSNODEPROPERTY_AUDIO_DEV_SPECIFIC,*PKSNODEPROPERTY_AUDIO_DEV_SPECIFIC; - -typedef struct { - KSNODEPROPERTY NodeProperty; - PVOID ListenerId; -#ifndef _WIN64 - ULONG Reserved; -#endif -} KSNODEPROPERTY_AUDIO_3D_LISTENER,*PKSNODEPROPERTY_AUDIO_3D_LISTENER; - -typedef struct { - KSNODEPROPERTY NodeProperty; - PVOID AppContext; - ULONG Length; -#ifndef _WIN64 - ULONG Reserved; -#endif -} KSNODEPROPERTY_AUDIO_PROPERTY,*PKSNODEPROPERTY_AUDIO_PROPERTY; - -#define STATIC_KSPROPSETID_AudioGfx \ - 0x79a9312eL,0x59ae,0x43b0,0xa3,0x50,0x8b,0x5,0x28,0x4c,0xab,0x24 -DEFINE_GUIDSTRUCT("79A9312E-59AE-43b0-A350-8B05284CAB24",KSPROPSETID_AudioGfx); -#define KSPROPSETID_AudioGfx DEFINE_GUIDNAMED(KSPROPSETID_AudioGfx) - -typedef enum { - KSPROPERTY_AUDIOGFX_RENDERTARGETDEVICEID, - KSPROPERTY_AUDIOGFX_CAPTURETARGETDEVICEID -} KSPROPERTY_AUDIOGFX; - -#define STATIC_KSPROPSETID_Linear \ - 0x5A2FFE80L,0x16B9,0x11D0,0xA5,0xD6,0x28,0xDB,0x04,0xC1,0x00,0x00 -DEFINE_GUIDSTRUCT("5A2FFE80-16B9-11D0-A5D6-28DB04C10000",KSPROPSETID_Linear); -#define KSPROPSETID_Linear DEFINE_GUIDNAMED(KSPROPSETID_Linear) - -typedef enum { - KSPROPERTY_LINEAR_POSITION -} KSPROPERTY_LINEAR; - -#define STATIC_KSDATAFORMAT_TYPE_MUSIC \ - 0xE725D360L,0x62CC,0x11CF,0xA5,0xD6,0x28,0xDB,0x04,0xC1,0x00,0x00 -DEFINE_GUIDSTRUCT("E725D360-62CC-11CF-A5D6-28DB04C10000",KSDATAFORMAT_TYPE_MUSIC); -#define KSDATAFORMAT_TYPE_MUSIC DEFINE_GUIDNAMED(KSDATAFORMAT_TYPE_MUSIC) - -#define STATIC_KSDATAFORMAT_TYPE_MIDI \ - 0x7364696DL,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71 -DEFINE_GUIDSTRUCT("7364696D-0000-0010-8000-00aa00389b71",KSDATAFORMAT_TYPE_MIDI); -#define KSDATAFORMAT_TYPE_MIDI DEFINE_GUIDNAMED(KSDATAFORMAT_TYPE_MIDI) - -#define STATIC_KSDATAFORMAT_SUBTYPE_MIDI \ - 0x1D262760L,0xE957,0x11CF,0xA5,0xD6,0x28,0xDB,0x04,0xC1,0x00,0x00 -DEFINE_GUIDSTRUCT("1D262760-E957-11CF-A5D6-28DB04C10000",KSDATAFORMAT_SUBTYPE_MIDI); -#define KSDATAFORMAT_SUBTYPE_MIDI DEFINE_GUIDNAMED(KSDATAFORMAT_SUBTYPE_MIDI) - -#define STATIC_KSDATAFORMAT_SUBTYPE_MIDI_BUS \ - 0x2CA15FA0L,0x6CFE,0x11CF,0xA5,0xD6,0x28,0xDB,0x04,0xC1,0x00,0x00 -DEFINE_GUIDSTRUCT("2CA15FA0-6CFE-11CF-A5D6-28DB04C10000",KSDATAFORMAT_SUBTYPE_MIDI_BUS); -#define KSDATAFORMAT_SUBTYPE_MIDI_BUS DEFINE_GUIDNAMED(KSDATAFORMAT_SUBTYPE_MIDI_BUS) - -#define STATIC_KSDATAFORMAT_SUBTYPE_RIFFMIDI \ - 0x4995DAF0L,0x9EE6,0x11D0,0xA4,0x0E,0x00,0xA0,0xC9,0x22,0x31,0x96 -DEFINE_GUIDSTRUCT("4995DAF0-9EE6-11D0-A40E-00A0C9223196",KSDATAFORMAT_SUBTYPE_RIFFMIDI); -#define KSDATAFORMAT_SUBTYPE_RIFFMIDI DEFINE_GUIDNAMED(KSDATAFORMAT_SUBTYPE_RIFFMIDI) - -typedef struct { - ULONG TimeDeltaMs; - - ULONG ByteCount; -} KSMUSICFORMAT,*PKSMUSICFORMAT; - -#define STATIC_KSDATAFORMAT_TYPE_STANDARD_ELEMENTARY_STREAM \ - 0x36523b11L,0x8ee5,0x11d1,0x8c,0xa3,0x00,0x60,0xb0,0x57,0x66,0x4a -DEFINE_GUIDSTRUCT("36523B11-8EE5-11d1-8CA3-0060B057664A",KSDATAFORMAT_TYPE_STANDARD_ELEMENTARY_STREAM); -#define KSDATAFORMAT_TYPE_STANDARD_ELEMENTARY_STREAM DEFINE_GUIDNAMED(KSDATAFORMAT_TYPE_STANDARD_ELEMENTARY_STREAM) - -#define STATIC_KSDATAFORMAT_TYPE_STANDARD_PES_PACKET \ - 0x36523b12L,0x8ee5,0x11d1,0x8c,0xa3,0x00,0x60,0xb0,0x57,0x66,0x4a -DEFINE_GUIDSTRUCT("36523B12-8EE5-11d1-8CA3-0060B057664A",KSDATAFORMAT_TYPE_STANDARD_PES_PACKET); -#define KSDATAFORMAT_TYPE_STANDARD_PES_PACKET DEFINE_GUIDNAMED(KSDATAFORMAT_TYPE_STANDARD_PES_PACKET) - -#define STATIC_KSDATAFORMAT_TYPE_STANDARD_PACK_HEADER \ - 0x36523b13L,0x8ee5,0x11d1,0x8c,0xa3,0x00,0x60,0xb0,0x57,0x66,0x4a -DEFINE_GUIDSTRUCT("36523B13-8EE5-11d1-8CA3-0060B057664A",KSDATAFORMAT_TYPE_STANDARD_PACK_HEADER); -#define KSDATAFORMAT_TYPE_STANDARD_PACK_HEADER DEFINE_GUIDNAMED(KSDATAFORMAT_TYPE_STANDARD_PACK_HEADER) - -#define STATIC_KSDATAFORMAT_SUBTYPE_STANDARD_MPEG1_VIDEO \ - 0x36523b21L,0x8ee5,0x11d1,0x8c,0xa3,0x00,0x60,0xb0,0x57,0x66,0x4a -DEFINE_GUIDSTRUCT("36523B21-8EE5-11d1-8CA3-0060B057664A",KSDATAFORMAT_SUBTYPE_STANDARD_MPEG1_VIDEO); -#define KSDATAFORMAT_SUBTYPE_STANDARD_MPEG1_VIDEO DEFINE_GUIDNAMED(KSDATAFORMAT_SUBTYPE_STANDARD_MPEG1_VIDEO) - -#define STATIC_KSDATAFORMAT_SUBTYPE_STANDARD_MPEG1_AUDIO \ - 0x36523b22L,0x8ee5,0x11d1,0x8c,0xa3,0x00,0x60,0xb0,0x57,0x66,0x4a -DEFINE_GUIDSTRUCT("36523B22-8EE5-11d1-8CA3-0060B057664A",KSDATAFORMAT_SUBTYPE_STANDARD_MPEG1_AUDIO); -#define KSDATAFORMAT_SUBTYPE_STANDARD_MPEG1_AUDIO DEFINE_GUIDNAMED(KSDATAFORMAT_SUBTYPE_STANDARD_MPEG1_AUDIO) - -#define STATIC_KSDATAFORMAT_SUBTYPE_STANDARD_MPEG2_VIDEO \ - 0x36523b23L,0x8ee5,0x11d1,0x8c,0xa3,0x00,0x60,0xb0,0x57,0x66,0x4a -DEFINE_GUIDSTRUCT("36523B23-8EE5-11d1-8CA3-0060B057664A",KSDATAFORMAT_SUBTYPE_STANDARD_MPEG2_VIDEO); -#define KSDATAFORMAT_SUBTYPE_STANDARD_MPEG2_VIDEO DEFINE_GUIDNAMED(KSDATAFORMAT_SUBTYPE_STANDARD_MPEG2_VIDEO) - -#define STATIC_KSDATAFORMAT_SUBTYPE_STANDARD_MPEG2_AUDIO \ - 0x36523b24L,0x8ee5,0x11d1,0x8c,0xa3,0x00,0x60,0xb0,0x57,0x66,0x4a -DEFINE_GUIDSTRUCT("36523B24-8EE5-11d1-8CA3-0060B057664A",KSDATAFORMAT_SUBTYPE_STANDARD_MPEG2_AUDIO); -#define KSDATAFORMAT_SUBTYPE_STANDARD_MPEG2_AUDIO DEFINE_GUIDNAMED(KSDATAFORMAT_SUBTYPE_STANDARD_MPEG2_AUDIO) - -#define STATIC_KSDATAFORMAT_SUBTYPE_STANDARD_AC3_AUDIO \ - 0x36523b25L,0x8ee5,0x11d1,0x8c,0xa3,0x00,0x60,0xb0,0x57,0x66,0x4a -DEFINE_GUIDSTRUCT("36523B25-8EE5-11d1-8CA3-0060B057664A",KSDATAFORMAT_SUBTYPE_STANDARD_AC3_AUDIO); -#define KSDATAFORMAT_SUBTYPE_STANDARD_AC3_AUDIO DEFINE_GUIDNAMED(KSDATAFORMAT_SUBTYPE_STANDARD_AC3_AUDIO) - -#define STATIC_KSDATAFORMAT_SPECIFIER_DIALECT_MPEG1_VIDEO \ - 0x36523b31L,0x8ee5,0x11d1,0x8c,0xa3,0x00,0x60,0xb0,0x57,0x66,0x4a -DEFINE_GUIDSTRUCT("36523B31-8EE5-11d1-8CA3-0060B057664A",KSDATAFORMAT_SPECIFIER_DIALECT_MPEG1_VIDEO); -#define KSDATAFORMAT_SPECIFIER_DIALECT_MPEG1_VIDEO DEFINE_GUIDNAMED(KSDATAFORMAT_SPECIFIER_DIALECT_MPEG1_VIDEO) - -#define STATIC_KSDATAFORMAT_SPECIFIER_DIALECT_MPEG1_AUDIO \ - 0x36523b32L,0x8ee5,0x11d1,0x8c,0xa3,0x00,0x60,0xb0,0x57,0x66,0x4a -DEFINE_GUIDSTRUCT("36523B32-8EE5-11d1-8CA3-0060B057664A",KSDATAFORMAT_SPECIFIER_DIALECT_MPEG1_AUDIO); -#define KSDATAFORMAT_SPECIFIER_DIALECT_MPEG1_AUDIO DEFINE_GUIDNAMED(KSDATAFORMAT_SPECIFIER_DIALECT_MPEG1_AUDIO) - -#define STATIC_KSDATAFORMAT_SPECIFIER_DIALECT_MPEG2_VIDEO \ - 0x36523b33L,0x8ee5,0x11d1,0x8c,0xa3,0x00,0x60,0xb0,0x57,0x66,0x4a -DEFINE_GUIDSTRUCT("36523B33-8EE5-11d1-8CA3-0060B057664A",KSDATAFORMAT_SPECIFIER_DIALECT_MPEG2_VIDEO); -#define KSDATAFORMAT_SPECIFIER_DIALECT_MPEG2_VIDEO DEFINE_GUIDNAMED(KSDATAFORMAT_SPECIFIER_DIALECT_MPEG2_VIDEO) - -#define STATIC_KSDATAFORMAT_SPECIFIER_DIALECT_MPEG2_AUDIO \ - 0x36523b34L,0x8ee5,0x11d1,0x8c,0xa3,0x00,0x60,0xb0,0x57,0x66,0x4a -DEFINE_GUIDSTRUCT("36523B34-8EE5-11d1-8CA3-0060B057664A",KSDATAFORMAT_SPECIFIER_DIALECT_MPEG2_AUDIO); -#define KSDATAFORMAT_SPECIFIER_DIALECT_MPEG2_AUDIO DEFINE_GUIDNAMED(KSDATAFORMAT_SPECIFIER_DIALECT_MPEG2_AUDIO) - -#define STATIC_KSDATAFORMAT_SPECIFIER_DIALECT_AC3_AUDIO \ - 0x36523b35L,0x8ee5,0x11d1,0x8c,0xa3,0x00,0x60,0xb0,0x57,0x66,0x4a -DEFINE_GUIDSTRUCT("36523B35-8EE5-11d1-8CA3-0060B057664A",KSDATAFORMAT_SPECIFIER_DIALECT_AC3_AUDIO); -#define KSDATAFORMAT_SPECIFIER_DIALECT_AC3_AUDIO DEFINE_GUIDNAMED(KSDATAFORMAT_SPECIFIER_DIALECT_AC3_AUDIO) - -#define STATIC_KSDATAFORMAT_SUBTYPE_DSS_VIDEO \ - 0xa0af4f81L,0xe163,0x11d0,0xba,0xd9,0x00,0x60,0x97,0x44,0x11,0x1a -DEFINE_GUIDSTRUCT("a0af4f81-e163-11d0-bad9-00609744111a",KSDATAFORMAT_SUBTYPE_DSS_VIDEO); -#define KSDATAFORMAT_SUBTYPE_DSS_VIDEO DEFINE_GUIDNAMED(KSDATAFORMAT_SUBTYPE_DSS_VIDEO) - -#define STATIC_KSDATAFORMAT_SUBTYPE_DSS_AUDIO \ - 0xa0af4f82L,0xe163,0x11d0,0xba,0xd9,0x00,0x60,0x97,0x44,0x11,0x1a -DEFINE_GUIDSTRUCT("a0af4f82-e163-11d0-bad9-00609744111a",KSDATAFORMAT_SUBTYPE_DSS_AUDIO); -#define KSDATAFORMAT_SUBTYPE_DSS_AUDIO DEFINE_GUIDNAMED(KSDATAFORMAT_SUBTYPE_DSS_AUDIO) - -#define STATIC_KSDATAFORMAT_SUBTYPE_MPEG1Packet \ - 0xe436eb80,0x524f,0x11ce,0x9f,0x53,0x00,0x20,0xaf,0x0b,0xa7,0x70 -DEFINE_GUIDSTRUCT("e436eb80-524f-11ce-9F53-0020af0ba770",KSDATAFORMAT_SUBTYPE_MPEG1Packet); -#define KSDATAFORMAT_SUBTYPE_MPEG1Packet DEFINE_GUIDNAMED(KSDATAFORMAT_SUBTYPE_MPEG1Packet) - -#define STATIC_KSDATAFORMAT_SUBTYPE_MPEG1Payload \ - 0xe436eb81,0x524f,0x11ce,0x9f,0x53,0x00,0x20,0xaf,0x0b,0xa7,0x70 -DEFINE_GUIDSTRUCT("e436eb81-524f-11ce-9F53-0020af0ba770",KSDATAFORMAT_SUBTYPE_MPEG1Payload); -#define KSDATAFORMAT_SUBTYPE_MPEG1Payload DEFINE_GUIDNAMED(KSDATAFORMAT_SUBTYPE_MPEG1Payload) - -#define STATIC_KSDATAFORMAT_SUBTYPE_MPEG1Video \ - 0xe436eb86,0x524f,0x11ce,0x9f,0x53,0x00,0x20,0xaf,0x0b,0xa7,0x70 -DEFINE_GUIDSTRUCT("e436eb86-524f-11ce-9f53-0020af0ba770",KSDATAFORMAT_SUBTYPE_MPEG1Video); -#define KSDATAFORMAT_SUBTYPE_MPEG1Video DEFINE_GUIDNAMED(KSDATAFORMAT_SUBTYPE_MPEG1Video) - -#define STATIC_KSDATAFORMAT_SPECIFIER_MPEG1_VIDEO \ - 0x05589f82L,0xc356,0x11ce,0xbf,0x01,0x00,0xaa,0x00,0x55,0x59,0x5a -DEFINE_GUIDSTRUCT("05589f82-c356-11ce-bf01-00aa0055595a",KSDATAFORMAT_SPECIFIER_MPEG1_VIDEO); -#define KSDATAFORMAT_SPECIFIER_MPEG1_VIDEO DEFINE_GUIDNAMED(KSDATAFORMAT_SPECIFIER_MPEG1_VIDEO) - -#define STATIC_KSDATAFORMAT_TYPE_MPEG2_PES \ - 0xe06d8020L,0xdb46,0x11cf,0xb4,0xd1,0x00,0x80,0x5f,0x6c,0xbb,0xea -DEFINE_GUIDSTRUCT("e06d8020-db46-11cf-b4d1-00805f6cbbea",KSDATAFORMAT_TYPE_MPEG2_PES); -#define KSDATAFORMAT_TYPE_MPEG2_PES DEFINE_GUIDNAMED(KSDATAFORMAT_TYPE_MPEG2_PES) - -#define STATIC_KSDATAFORMAT_TYPE_MPEG2_PROGRAM \ - 0xe06d8022L,0xdb46,0x11cf,0xb4,0xd1,0x00,0x80,0x5f,0x6c,0xbb,0xea -DEFINE_GUIDSTRUCT("e06d8022-db46-11cf-b4d1-00805f6cbbea",KSDATAFORMAT_TYPE_MPEG2_PROGRAM); -#define KSDATAFORMAT_TYPE_MPEG2_PROGRAM DEFINE_GUIDNAMED(KSDATAFORMAT_TYPE_MPEG2_PROGRAM) - -#define STATIC_KSDATAFORMAT_TYPE_MPEG2_TRANSPORT \ - 0xe06d8023L,0xdb46,0x11cf,0xb4,0xd1,0x00,0x80,0x5f,0x6c,0xbb,0xea -DEFINE_GUIDSTRUCT("e06d8023-db46-11cf-b4d1-00805f6cbbea",KSDATAFORMAT_TYPE_MPEG2_TRANSPORT); -#define KSDATAFORMAT_TYPE_MPEG2_TRANSPORT DEFINE_GUIDNAMED(KSDATAFORMAT_TYPE_MPEG2_TRANSPORT) - -#define STATIC_KSDATAFORMAT_SUBTYPE_MPEG2_VIDEO \ - 0xe06d8026L,0xdb46,0x11cf,0xb4,0xd1,0x00,0x80,0x5f,0x6c,0xbb,0xea -DEFINE_GUIDSTRUCT("e06d8026-db46-11cf-b4d1-00805f6cbbea",KSDATAFORMAT_SUBTYPE_MPEG2_VIDEO); -#define KSDATAFORMAT_SUBTYPE_MPEG2_VIDEO DEFINE_GUIDNAMED(KSDATAFORMAT_SUBTYPE_MPEG2_VIDEO) - -#define STATIC_KSDATAFORMAT_SPECIFIER_MPEG2_VIDEO \ - 0xe06d80e3L,0xdb46,0x11cf,0xb4,0xd1,0x00,0x80,0x5f,0x6c,0xbb,0xea -DEFINE_GUIDSTRUCT("e06d80e3-db46-11cf-b4d1-00805f6cbbea",KSDATAFORMAT_SPECIFIER_MPEG2_VIDEO); -#define KSDATAFORMAT_SPECIFIER_MPEG2_VIDEO DEFINE_GUIDNAMED(KSDATAFORMAT_SPECIFIER_MPEG2_VIDEO) - -#define STATIC_KSPROPSETID_Mpeg2Vid \ - 0xC8E11B60L,0x0CC9,0x11D0,0xBD,0x69,0x00,0x35,0x05,0xC1,0x03,0xA9 -DEFINE_GUIDSTRUCT("C8E11B60-0CC9-11D0-BD69-003505C103A9",KSPROPSETID_Mpeg2Vid); -#define KSPROPSETID_Mpeg2Vid DEFINE_GUIDNAMED(KSPROPSETID_Mpeg2Vid) - -typedef enum { - KSPROPERTY_MPEG2VID_MODES, - KSPROPERTY_MPEG2VID_CUR_MODE, - KSPROPERTY_MPEG2VID_4_3_RECT, - KSPROPERTY_MPEG2VID_16_9_RECT, - KSPROPERTY_MPEG2VID_16_9_PANSCAN -} KSPROPERTY_MPEG2VID; - -#define KSMPEGVIDMODE_PANSCAN 0x0001 -#define KSMPEGVIDMODE_LTRBOX 0x0002 -#define KSMPEGVIDMODE_SCALE 0x0004 - -typedef struct _KSMPEGVID_RECT { - ULONG StartX; - ULONG StartY; - ULONG EndX; - ULONG EndY; -} KSMPEGVID_RECT,*PKSMPEGVID_RECT; - -#define STATIC_KSDATAFORMAT_SUBTYPE_MPEG2_AUDIO \ - 0xe06d802bL,0xdb46,0x11cf,0xb4,0xd1,0x00,0x80,0x5f,0x6c,0xbb,0xea -DEFINE_GUIDSTRUCT("e06d802b-db46-11cf-b4d1-00805f6cbbea",KSDATAFORMAT_SUBTYPE_MPEG2_AUDIO); -#define KSDATAFORMAT_SUBTYPE_MPEG2_AUDIO DEFINE_GUIDNAMED(KSDATAFORMAT_SUBTYPE_MPEG2_AUDIO) - -#define STATIC_KSDATAFORMAT_SPECIFIER_MPEG2_AUDIO \ - 0xe06d80e5L,0xdb46,0x11cf,0xb4,0xd1,0x00,0x80,0x5f,0x6c,0xbb,0xea -DEFINE_GUIDSTRUCT("e06d80e5-db46-11cf-b4d1-00805f6cbbea",KSDATAFORMAT_SPECIFIER_MPEG2_AUDIO); -#define KSDATAFORMAT_SPECIFIER_MPEG2_AUDIO DEFINE_GUIDNAMED(KSDATAFORMAT_SPECIFIER_MPEG2_AUDIO) - -#define STATIC_KSDATAFORMAT_SUBTYPE_LPCM_AUDIO \ - 0xe06d8032L,0xdb46,0x11cf,0xb4,0xd1,0x00,0x80,0x5f,0x6c,0xbb,0xea -DEFINE_GUIDSTRUCT("e06d8032-db46-11cf-b4d1-00805f6cbbea",KSDATAFORMAT_SUBTYPE_LPCM_AUDIO); -#define KSDATAFORMAT_SUBTYPE_LPCM_AUDIO DEFINE_GUIDNAMED(KSDATAFORMAT_SUBTYPE_LPCM_AUDIO) - -#define STATIC_KSDATAFORMAT_SPECIFIER_LPCM_AUDIO \ - 0xe06d80e6L,0xdb46,0x11cf,0xb4,0xd1,0x00,0x80,0x5f,0x6c,0xbb,0xea -DEFINE_GUIDSTRUCT("e06d80e6-db46-11cf-b4d1-00805f6cbbea",KSDATAFORMAT_SPECIFIER_LPCM_AUDIO); -#define KSDATAFORMAT_SPECIFIER_LPCM_AUDIO DEFINE_GUIDNAMED(KSDATAFORMAT_SPECIFIER_LPCM_AUDIO) - -#define STATIC_KSDATAFORMAT_SUBTYPE_AC3_AUDIO \ - 0xe06d802cL,0xdb46,0x11cf,0xb4,0xd1,0x00,0x80,0x5f,0x6c,0xbb,0xea -DEFINE_GUIDSTRUCT("e06d802c-db46-11cf-b4d1-00805f6cbbea",KSDATAFORMAT_SUBTYPE_AC3_AUDIO); -#define KSDATAFORMAT_SUBTYPE_AC3_AUDIO DEFINE_GUIDNAMED(KSDATAFORMAT_SUBTYPE_AC3_AUDIO) - -#define STATIC_KSDATAFORMAT_SPECIFIER_AC3_AUDIO \ - 0xe06d80e4L,0xdb46,0x11cf,0xb4,0xd1,0x00,0x80,0x5f,0x6c,0xbb,0xea -DEFINE_GUIDSTRUCT("e06d80e4-db46-11cf-b4d1-00805f6cbbea",KSDATAFORMAT_SPECIFIER_AC3_AUDIO); -#define KSDATAFORMAT_SPECIFIER_AC3_AUDIO DEFINE_GUIDNAMED(KSDATAFORMAT_SPECIFIER_AC3_AUDIO) - -#define STATIC_KSPROPSETID_AC3 \ - 0xBFABE720L,0x6E1F,0x11D0,0xBC,0xF2,0x44,0x45,0x53,0x54,0x00,0x00 -DEFINE_GUIDSTRUCT("BFABE720-6E1F-11D0-BCF2-444553540000",KSPROPSETID_AC3); -#define KSPROPSETID_AC3 DEFINE_GUIDNAMED(KSPROPSETID_AC3) - -typedef enum { - KSPROPERTY_AC3_ERROR_CONCEALMENT = 1, - KSPROPERTY_AC3_ALTERNATE_AUDIO, - KSPROPERTY_AC3_DOWNMIX, - KSPROPERTY_AC3_BIT_STREAM_MODE, - KSPROPERTY_AC3_DIALOGUE_LEVEL, - KSPROPERTY_AC3_LANGUAGE_CODE, - KSPROPERTY_AC3_ROOM_TYPE -} KSPROPERTY_AC3; - -typedef struct { - WINBOOL fRepeatPreviousBlock; - WINBOOL fErrorInCurrentBlock; -} KSAC3_ERROR_CONCEALMENT,*PKSAC3_ERROR_CONCEALMENT; - -typedef struct { - WINBOOL fStereo; - ULONG DualMode; -} KSAC3_ALTERNATE_AUDIO,*PKSAC3_ALTERNATE_AUDIO; - -#define KSAC3_ALTERNATE_AUDIO_1 1 -#define KSAC3_ALTERNATE_AUDIO_2 2 -#define KSAC3_ALTERNATE_AUDIO_BOTH 3 - -typedef struct { - WINBOOL fDownMix; - WINBOOL fDolbySurround; -} KSAC3_DOWNMIX,*PKSAC3_DOWNMIX; - -typedef struct { - LONG BitStreamMode; -} KSAC3_BIT_STREAM_MODE,*PKSAC3_BIT_STREAM_MODE; - -#define KSAC3_SERVICE_MAIN_AUDIO 0 -#define KSAC3_SERVICE_NO_DIALOG 1 -#define KSAC3_SERVICE_VISUALLY_IMPAIRED 2 -#define KSAC3_SERVICE_HEARING_IMPAIRED 3 -#define KSAC3_SERVICE_DIALOG_ONLY 4 -#define KSAC3_SERVICE_COMMENTARY 5 -#define KSAC3_SERVICE_EMERGENCY_FLASH 6 -#define KSAC3_SERVICE_VOICE_OVER 7 - -typedef struct { - ULONG DialogueLevel; -} KSAC3_DIALOGUE_LEVEL,*PKSAC3_DIALOGUE_LEVEL; - -typedef struct { - WINBOOL fLargeRoom; -} KSAC3_ROOM_TYPE,*PKSAC3_ROOM_TYPE; - -#define STATIC_KSDATAFORMAT_SUBTYPE_DTS_AUDIO \ - 0xe06d8033L,0xdb46,0x11cf,0xb4,0xd1,0x00,0x80,0x5f,0x6c,0xbb,0xea -DEFINE_GUIDSTRUCT("e06d8033-db46-11cf-b4d1-00805f6cbbea",KSDATAFORMAT_SUBTYPE_DTS_AUDIO); -#define KSDATAFORMAT_SUBTYPE_DTS_AUDIO DEFINE_GUIDNAMED(KSDATAFORMAT_SUBTYPE_DTS_AUDIO) - -#define STATIC_KSDATAFORMAT_SUBTYPE_SDDS_AUDIO \ - 0xe06d8034L,0xdb46,0x11cf,0xb4,0xd1,0x00,0x80,0x5f,0x6c,0xbb,0xea -DEFINE_GUIDSTRUCT("e06d8034-db46-11cf-b4d1-00805f6cbbea",KSDATAFORMAT_SUBTYPE_SDDS_AUDIO); -#define KSDATAFORMAT_SUBTYPE_SDDS_AUDIO DEFINE_GUIDNAMED(KSDATAFORMAT_SUBTYPE_SDDS_AUDIO) - -#define STATIC_KSPROPSETID_AudioDecoderOut \ - 0x6ca6e020L,0x43bd,0x11d0,0xbd,0x6a,0x00,0x35,0x05,0xc1,0x03,0xa9 -DEFINE_GUIDSTRUCT("6ca6e020-43bd-11d0-bd6a-003505c103a9",KSPROPSETID_AudioDecoderOut); -#define KSPROPSETID_AudioDecoderOut DEFINE_GUIDNAMED(KSPROPSETID_AudioDecoderOut) - -typedef enum { - KSPROPERTY_AUDDECOUT_MODES, - KSPROPERTY_AUDDECOUT_CUR_MODE -} KSPROPERTY_AUDDECOUT; - -#define KSAUDDECOUTMODE_STEREO_ANALOG 0x0001 -#define KSAUDDECOUTMODE_PCM_51 0x0002 -#define KSAUDDECOUTMODE_SPDIFF 0x0004 - -#define STATIC_KSDATAFORMAT_SUBTYPE_SUBPICTURE \ - 0xe06d802dL,0xdb46,0x11cf,0xb4,0xd1,0x00,0x80,0x5f,0x6c,0xbb,0xea -DEFINE_GUIDSTRUCT("e06d802d-db46-11cf-b4d1-00805f6cbbea",KSDATAFORMAT_SUBTYPE_SUBPICTURE); -#define KSDATAFORMAT_SUBTYPE_SUBPICTURE DEFINE_GUIDNAMED(KSDATAFORMAT_SUBTYPE_SUBPICTURE) - -#define STATIC_KSPROPSETID_DvdSubPic \ - 0xac390460L,0x43af,0x11d0,0xbd,0x6a,0x00,0x35,0x05,0xc1,0x03,0xa9 -DEFINE_GUIDSTRUCT("ac390460-43af-11d0-bd6a-003505c103a9",KSPROPSETID_DvdSubPic); -#define KSPROPSETID_DvdSubPic DEFINE_GUIDNAMED(KSPROPSETID_DvdSubPic) - -typedef enum { - KSPROPERTY_DVDSUBPIC_PALETTE, - KSPROPERTY_DVDSUBPIC_HLI, - KSPROPERTY_DVDSUBPIC_COMPOSIT_ON -} KSPROPERTY_DVDSUBPIC; - -typedef struct _KS_DVD_YCrCb { - UCHAR Reserved; - UCHAR Y; - UCHAR Cr; - UCHAR Cb; -} KS_DVD_YCrCb,*PKS_DVD_YCrCb; - -typedef struct _KS_DVD_YUV { - UCHAR Reserved; - UCHAR Y; - UCHAR V; - UCHAR U; -} KS_DVD_YUV,*PKS_DVD_YUV; - -typedef struct _KSPROPERTY_SPPAL { - KS_DVD_YUV sppal[16]; -} KSPROPERTY_SPPAL,*PKSPROPERTY_SPPAL; - -typedef struct _KS_COLCON { - UCHAR emph1col:4; - UCHAR emph2col:4; - UCHAR backcol:4; - UCHAR patcol:4; - UCHAR emph1con:4; - UCHAR emph2con:4; - UCHAR backcon:4; - UCHAR patcon:4; -} KS_COLCON,*PKS_COLCON; - -typedef struct _KSPROPERTY_SPHLI { - USHORT HLISS; - USHORT Reserved; - ULONG StartPTM; - ULONG EndPTM; - USHORT StartX; - USHORT StartY; - USHORT StopX; - USHORT StopY; - KS_COLCON ColCon; -} KSPROPERTY_SPHLI,*PKSPROPERTY_SPHLI; - -typedef WINBOOL KSPROPERTY_COMPOSIT_ON,*PKSPROPERTY_COMPOSIT_ON; - -#define STATIC_KSPROPSETID_CopyProt \ - 0x0E8A0A40L,0x6AEF,0x11D0,0x9E,0xD0,0x00,0xA0,0x24,0xCA,0x19,0xB3 -DEFINE_GUIDSTRUCT("0E8A0A40-6AEF-11D0-9ED0-00A024CA19B3",KSPROPSETID_CopyProt); -#define KSPROPSETID_CopyProt DEFINE_GUIDNAMED(KSPROPSETID_CopyProt) - -typedef enum { - KSPROPERTY_DVDCOPY_CHLG_KEY = 0x01, - KSPROPERTY_DVDCOPY_DVD_KEY1, - KSPROPERTY_DVDCOPY_DEC_KEY2, - KSPROPERTY_DVDCOPY_TITLE_KEY, - KSPROPERTY_COPY_MACROVISION, - KSPROPERTY_DVDCOPY_REGION, - KSPROPERTY_DVDCOPY_SET_COPY_STATE, - KSPROPERTY_DVDCOPY_DISC_KEY = 0x80 -} KSPROPERTY_COPYPROT; - -typedef struct _KS_DVDCOPY_CHLGKEY { - BYTE ChlgKey[10]; - BYTE Reserved[2]; -} KS_DVDCOPY_CHLGKEY,*PKS_DVDCOPY_CHLGKEY; - -typedef struct _KS_DVDCOPY_BUSKEY { - BYTE BusKey[5]; - BYTE Reserved[1]; -} KS_DVDCOPY_BUSKEY,*PKS_DVDCOPY_BUSKEY; - -typedef struct _KS_DVDCOPY_DISCKEY { - BYTE DiscKey[2048]; -} KS_DVDCOPY_DISCKEY,*PKS_DVDCOPY_DISCKEY; - -typedef struct _KS_DVDCOPY_REGION { - UCHAR Reserved; - UCHAR RegionData; - UCHAR Reserved2[2]; -} KS_DVDCOPY_REGION,*PKS_DVDCOPY_REGION; - -typedef struct _KS_DVDCOPY_TITLEKEY { - ULONG KeyFlags; - ULONG ReservedNT[2]; - UCHAR TitleKey[6]; - UCHAR Reserved[2]; -} KS_DVDCOPY_TITLEKEY,*PKS_DVDCOPY_TITLEKEY; - -typedef struct _KS_COPY_MACROVISION { - ULONG MACROVISIONLevel; -} KS_COPY_MACROVISION,*PKS_COPY_MACROVISION; - -typedef struct _KS_DVDCOPY_SET_COPY_STATE { - ULONG DVDCopyState; -} KS_DVDCOPY_SET_COPY_STATE,*PKS_DVDCOPY_SET_COPY_STATE; - -typedef enum { - KS_DVDCOPYSTATE_INITIALIZE, - KS_DVDCOPYSTATE_INITIALIZE_TITLE, - KS_DVDCOPYSTATE_AUTHENTICATION_NOT_REQUIRED, - KS_DVDCOPYSTATE_AUTHENTICATION_REQUIRED, - KS_DVDCOPYSTATE_DONE -} KS_DVDCOPYSTATE; - -typedef enum { - KS_MACROVISION_DISABLED, - KS_MACROVISION_LEVEL1, - KS_MACROVISION_LEVEL2, - KS_MACROVISION_LEVEL3 -} KS_COPY_MACROVISION_LEVEL,*PKS_COPY_MACROVISION_LEVEL; - -#define KS_DVD_CGMS_RESERVED_MASK 0x00000078 - -#define KS_DVD_CGMS_COPY_PROTECT_MASK 0x00000018 -#define KS_DVD_CGMS_COPY_PERMITTED 0x00000000 -#define KS_DVD_CGMS_COPY_ONCE 0x00000010 -#define KS_DVD_CGMS_NO_COPY 0x00000018 - -#define KS_DVD_COPYRIGHT_MASK 0x00000040 -#define KS_DVD_NOT_COPYRIGHTED 0x00000000 -#define KS_DVD_COPYRIGHTED 0x00000040 - -#define KS_DVD_SECTOR_PROTECT_MASK 0x00000020 -#define KS_DVD_SECTOR_NOT_PROTECTED 0x00000000 -#define KS_DVD_SECTOR_PROTECTED 0x00000020 - -#define STATIC_KSCATEGORY_TVTUNER \ - 0xa799a800L,0xa46d,0x11d0,0xa1,0x8c,0x00,0xa0,0x24,0x01,0xdc,0xd4 -DEFINE_GUIDSTRUCT("a799a800-a46d-11d0-a18c-00a02401dcd4",KSCATEGORY_TVTUNER); -#define KSCATEGORY_TVTUNER DEFINE_GUIDNAMED(KSCATEGORY_TVTUNER) - -#define STATIC_KSCATEGORY_CROSSBAR \ - 0xa799a801L,0xa46d,0x11d0,0xa1,0x8c,0x00,0xa0,0x24,0x01,0xdc,0xd4 -DEFINE_GUIDSTRUCT("a799a801-a46d-11d0-a18c-00a02401dcd4",KSCATEGORY_CROSSBAR); -#define KSCATEGORY_CROSSBAR DEFINE_GUIDNAMED(KSCATEGORY_CROSSBAR) - -#define STATIC_KSCATEGORY_TVAUDIO \ - 0xa799a802L,0xa46d,0x11d0,0xa1,0x8c,0x00,0xa0,0x24,0x01,0xdc,0xd4 -DEFINE_GUIDSTRUCT("a799a802-a46d-11d0-a18c-00a02401dcd4",KSCATEGORY_TVAUDIO); -#define KSCATEGORY_TVAUDIO DEFINE_GUIDNAMED(KSCATEGORY_TVAUDIO) - -#define STATIC_KSCATEGORY_VPMUX \ - 0xa799a803L,0xa46d,0x11d0,0xa1,0x8c,0x00,0xa0,0x24,0x01,0xdc,0xd4 -DEFINE_GUIDSTRUCT("a799a803-a46d-11d0-a18c-00a02401dcd4",KSCATEGORY_VPMUX); -#define KSCATEGORY_VPMUX DEFINE_GUIDNAMED(KSCATEGORY_VPMUX) - -#define STATIC_KSCATEGORY_VBICODEC \ - 0x07dad660L,0x22f1,0x11d1,0xa9,0xf4,0x00,0xc0,0x4f,0xbb,0xde,0x8f -DEFINE_GUIDSTRUCT("07dad660-22f1-11d1-a9f4-00c04fbbde8f",KSCATEGORY_VBICODEC); -#define KSCATEGORY_VBICODEC DEFINE_GUIDNAMED(KSCATEGORY_VBICODEC) - -#define STATIC_KSDATAFORMAT_SUBTYPE_VPVideo \ - 0x5a9b6a40L,0x1a22,0x11d1,0xba,0xd9,0x0,0x60,0x97,0x44,0x11,0x1a -DEFINE_GUIDSTRUCT("5a9b6a40-1a22-11d1-bad9-00609744111a",KSDATAFORMAT_SUBTYPE_VPVideo); -#define KSDATAFORMAT_SUBTYPE_VPVideo DEFINE_GUIDNAMED(KSDATAFORMAT_SUBTYPE_VPVideo) - -#define STATIC_KSDATAFORMAT_SUBTYPE_VPVBI \ - 0x5a9b6a41L,0x1a22,0x11d1,0xba,0xd9,0x0,0x60,0x97,0x44,0x11,0x1a -DEFINE_GUIDSTRUCT("5a9b6a41-1a22-11d1-bad9-00609744111a",KSDATAFORMAT_SUBTYPE_VPVBI); -#define KSDATAFORMAT_SUBTYPE_VPVBI DEFINE_GUIDNAMED(KSDATAFORMAT_SUBTYPE_VPVBI) - -#define STATIC_KSDATAFORMAT_SPECIFIER_VIDEOINFO \ - 0x05589f80L,0xc356,0x11ce,0xbf,0x01,0x00,0xaa,0x00,0x55,0x59,0x5a -DEFINE_GUIDSTRUCT("05589f80-c356-11ce-bf01-00aa0055595a",KSDATAFORMAT_SPECIFIER_VIDEOINFO); -#define KSDATAFORMAT_SPECIFIER_VIDEOINFO DEFINE_GUIDNAMED(KSDATAFORMAT_SPECIFIER_VIDEOINFO) - -#define STATIC_KSDATAFORMAT_SPECIFIER_VIDEOINFO2 \ - 0xf72a76A0L,0xeb0a,0x11d0,0xac,0xe4,0x00,0x00,0xc0,0xcc,0x16,0xba -DEFINE_GUIDSTRUCT("f72a76A0-eb0a-11d0-ace4-0000c0cc16ba",KSDATAFORMAT_SPECIFIER_VIDEOINFO2); -#define KSDATAFORMAT_SPECIFIER_VIDEOINFO2 DEFINE_GUIDNAMED(KSDATAFORMAT_SPECIFIER_VIDEOINFO2) - -#define STATIC_KSDATAFORMAT_TYPE_ANALOGVIDEO \ - 0x0482dde1L,0x7817,0x11cf,0x8a,0x03,0x00,0xaa,0x00,0x6e,0xcb,0x65 -DEFINE_GUIDSTRUCT("0482dde1-7817-11cf-8a03-00aa006ecb65",KSDATAFORMAT_TYPE_ANALOGVIDEO); -#define KSDATAFORMAT_TYPE_ANALOGVIDEO DEFINE_GUIDNAMED(KSDATAFORMAT_TYPE_ANALOGVIDEO) - -#define STATIC_KSDATAFORMAT_SPECIFIER_ANALOGVIDEO \ - 0x0482dde0L,0x7817,0x11cf,0x8a,0x03,0x00,0xaa,0x00,0x6e,0xcb,0x65 -DEFINE_GUIDSTRUCT("0482dde0-7817-11cf-8a03-00aa006ecb65",KSDATAFORMAT_SPECIFIER_ANALOGVIDEO); -#define KSDATAFORMAT_SPECIFIER_ANALOGVIDEO DEFINE_GUIDNAMED(KSDATAFORMAT_SPECIFIER_ANALOGVIDEO) - -#define STATIC_KSDATAFORMAT_TYPE_ANALOGAUDIO \ - 0x0482dee1L,0x7817,0x11cf,0x8a,0x03,0x00,0xaa,0x00,0x6e,0xcb,0x65 -DEFINE_GUIDSTRUCT("0482DEE1-7817-11cf-8a03-00aa006ecb65",KSDATAFORMAT_TYPE_ANALOGAUDIO); -#define KSDATAFORMAT_TYPE_ANALOGAUDIO DEFINE_GUIDNAMED(KSDATAFORMAT_TYPE_ANALOGAUDIO) - -#define STATIC_KSDATAFORMAT_SPECIFIER_VBI \ - 0xf72a76e0L,0xeb0a,0x11d0,0xac,0xe4,0x00,0x00,0xc0,0xcc,0x16,0xba -DEFINE_GUIDSTRUCT("f72a76e0-eb0a-11d0-ace4-0000c0cc16ba",KSDATAFORMAT_SPECIFIER_VBI); -#define KSDATAFORMAT_SPECIFIER_VBI DEFINE_GUIDNAMED(KSDATAFORMAT_SPECIFIER_VBI) - -#define STATIC_KSDATAFORMAT_TYPE_VBI \ - 0xf72a76e1L,0xeb0a,0x11d0,0xac,0xe4,0x00,0x00,0xc0,0xcc,0x16,0xba -DEFINE_GUIDSTRUCT("f72a76e1-eb0a-11d0-ace4-0000c0cc16ba",KSDATAFORMAT_TYPE_VBI); -#define KSDATAFORMAT_TYPE_VBI DEFINE_GUIDNAMED(KSDATAFORMAT_TYPE_VBI) - -#define STATIC_KSDATAFORMAT_SUBTYPE_RAW8 \ - 0xca20d9a0,0x3e3e,0x11d1,0x9b,0xf9,0x0,0xc0,0x4f,0xbb,0xde,0xbf -DEFINE_GUIDSTRUCT("ca20d9a0-3e3e-11d1-9bf9-00c04fbbdebf",KSDATAFORMAT_SUBTYPE_RAW8); -#define KSDATAFORMAT_SUBTYPE_RAW8 DEFINE_GUIDNAMED(KSDATAFORMAT_SUBTYPE_RAW8) - -#define STATIC_KSDATAFORMAT_SUBTYPE_CC \ - 0x33214cc1,0x11f,0x11d2,0xb4,0xb1,0x0,0xa0,0xd1,0x2,0xcf,0xbe -DEFINE_GUIDSTRUCT("33214CC1-011F-11D2-B4B1-00A0D102CFBE",KSDATAFORMAT_SUBTYPE_CC); -#define KSDATAFORMAT_SUBTYPE_CC DEFINE_GUIDNAMED(KSDATAFORMAT_SUBTYPE_CC) - -#define STATIC_KSDATAFORMAT_SUBTYPE_NABTS \ - 0xf72a76e2L,0xeb0a,0x11d0,0xac,0xe4,0x00,0x00,0xc0,0xcc,0x16,0xba -DEFINE_GUIDSTRUCT("f72a76e2-eb0a-11d0-ace4-0000c0cc16ba",KSDATAFORMAT_SUBTYPE_NABTS); -#define KSDATAFORMAT_SUBTYPE_NABTS DEFINE_GUIDNAMED(KSDATAFORMAT_SUBTYPE_NABTS) - -#define STATIC_KSDATAFORMAT_SUBTYPE_TELETEXT \ - 0xf72a76e3L,0xeb0a,0x11d0,0xac,0xe4,0x00,0x00,0xc0,0xcc,0x16,0xba -DEFINE_GUIDSTRUCT("f72a76e3-eb0a-11d0-ace4-0000c0cc16ba",KSDATAFORMAT_SUBTYPE_TELETEXT); -#define KSDATAFORMAT_SUBTYPE_TELETEXT DEFINE_GUIDNAMED(KSDATAFORMAT_SUBTYPE_TELETEXT) - -#define KS_BI_RGB 0L -#define KS_BI_RLE8 1L -#define KS_BI_RLE4 2L -#define KS_BI_BITFIELDS 3L - -typedef struct tagKS_RGBQUAD { - BYTE rgbBlue; - BYTE rgbGreen; - BYTE rgbRed; - BYTE rgbReserved; -} KS_RGBQUAD,*PKS_RGBQUAD; - -#define KS_iPALETTE_COLORS 256 -#define KS_iEGA_COLORS 16 -#define KS_iMASK_COLORS 3 -#define KS_iTRUECOLOR 16 -#define KS_iRED 0 -#define KS_iGREEN 1 -#define KS_iBLUE 2 -#define KS_iPALETTE 8 -#define KS_iMAXBITS 8 -#define KS_SIZE_EGA_PALETTE (KS_iEGA_COLORS *sizeof(KS_RGBQUAD)) -#define KS_SIZE_PALETTE (KS_iPALETTE_COLORS *sizeof(KS_RGBQUAD)) - -typedef struct tagKS_BITMAPINFOHEADER { - DWORD biSize; - LONG biWidth; - LONG biHeight; - WORD biPlanes; - WORD biBitCount; - DWORD biCompression; - DWORD biSizeImage; - LONG biXPelsPerMeter; - LONG biYPelsPerMeter; - DWORD biClrUsed; - DWORD biClrImportant; -} KS_BITMAPINFOHEADER,*PKS_BITMAPINFOHEADER; - -typedef struct tag_KS_TRUECOLORINFO { - DWORD dwBitMasks[KS_iMASK_COLORS]; - KS_RGBQUAD bmiColors[KS_iPALETTE_COLORS]; -} KS_TRUECOLORINFO,*PKS_TRUECOLORINFO; - -#define KS_WIDTHBYTES(bits) ((DWORD)(((bits)+31) & (~31)) / 8) -#define KS_DIBWIDTHBYTES(bi) (DWORD)KS_WIDTHBYTES((DWORD)(bi).biWidth *(DWORD)(bi).biBitCount) -#define KS__DIBSIZE(bi) (KS_DIBWIDTHBYTES(bi) *(DWORD)(bi).biHeight) -#define KS_DIBSIZE(bi) ((bi).biHeight < 0 ? (-1)*(KS__DIBSIZE(bi)) : KS__DIBSIZE(bi)) - -typedef LONGLONG REFERENCE_TIME; - -typedef struct tagKS_VIDEOINFOHEADER { - RECT rcSource; - RECT rcTarget; - DWORD dwBitRate; - DWORD dwBitErrorRate; - REFERENCE_TIME AvgTimePerFrame; - KS_BITMAPINFOHEADER bmiHeader; -} KS_VIDEOINFOHEADER,*PKS_VIDEOINFOHEADER; - -typedef struct tagKS_VIDEOINFO { - RECT rcSource; - RECT rcTarget; - DWORD dwBitRate; - DWORD dwBitErrorRate; - REFERENCE_TIME AvgTimePerFrame; - KS_BITMAPINFOHEADER bmiHeader; - __MINGW_EXTENSION union { - KS_RGBQUAD bmiColors[KS_iPALETTE_COLORS]; - DWORD dwBitMasks[KS_iMASK_COLORS]; - KS_TRUECOLORINFO TrueColorInfo; - }; -} KS_VIDEOINFO,*PKS_VIDEOINFO; - -#define KS_SIZE_MASKS (KS_iMASK_COLORS *sizeof(DWORD)) -#define KS_SIZE_PREHEADER (FIELD_OFFSET(KS_VIDEOINFOHEADER,bmiHeader)) - -#define KS_SIZE_VIDEOHEADER(pbmi) ((pbmi)->bmiHeader.biSize + KS_SIZE_PREHEADER) - -typedef struct tagKS_VBIINFOHEADER { - ULONG StartLine; - ULONG EndLine; - ULONG SamplingFrequency; - ULONG MinLineStartTime; - ULONG MaxLineStartTime; - ULONG ActualLineStartTime; - ULONG ActualLineEndTime; - ULONG VideoStandard; - ULONG SamplesPerLine; - ULONG StrideInBytes; - ULONG BufferSize; -} KS_VBIINFOHEADER,*PKS_VBIINFOHEADER; - -#define KS_VBIDATARATE_NABTS (5727272L) -#define KS_VBIDATARATE_CC (503493L) -#define KS_VBISAMPLINGRATE_4X_NABTS ((long)(4*KS_VBIDATARATE_NABTS)) -#define KS_VBISAMPLINGRATE_47X_NABTS ((long)(27000000)) -#define KS_VBISAMPLINGRATE_5X_NABTS ((long)(5*KS_VBIDATARATE_NABTS)) - -#define KS_47NABTS_SCALER (KS_VBISAMPLINGRATE_47X_NABTS/(double)KS_VBIDATARATE_NABTS) - -typedef struct tagKS_AnalogVideoInfo { - RECT rcSource; - RECT rcTarget; - DWORD dwActiveWidth; - DWORD dwActiveHeight; - REFERENCE_TIME AvgTimePerFrame; -} KS_ANALOGVIDEOINFO,*PKS_ANALOGVIDEOINFO; - -#define KS_TVTUNER_CHANGE_BEGIN_TUNE 0x0001L -#define KS_TVTUNER_CHANGE_END_TUNE 0x0002L - -typedef struct tagKS_TVTUNER_CHANGE_INFO { - DWORD dwFlags; - DWORD dwCountryCode; - DWORD dwAnalogVideoStandard; - DWORD dwChannel; -} KS_TVTUNER_CHANGE_INFO,*PKS_TVTUNER_CHANGE_INFO; - -typedef enum { - KS_MPEG2Level_Low, - KS_MPEG2Level_Main, - KS_MPEG2Level_High1440, - KS_MPEG2Level_High -} KS_MPEG2Level; - -typedef enum { - KS_MPEG2Profile_Simple, - KS_MPEG2Profile_Main, - KS_MPEG2Profile_SNRScalable, - KS_MPEG2Profile_SpatiallyScalable, - KS_MPEG2Profile_High -} KS_MPEG2Profile; - -#define KS_INTERLACE_IsInterlaced 0x00000001 -#define KS_INTERLACE_1FieldPerSample 0x00000002 -#define KS_INTERLACE_Field1First 0x00000004 -#define KS_INTERLACE_UNUSED 0x00000008 -#define KS_INTERLACE_FieldPatternMask 0x00000030 -#define KS_INTERLACE_FieldPatField1Only 0x00000000 -#define KS_INTERLACE_FieldPatField2Only 0x00000010 -#define KS_INTERLACE_FieldPatBothRegular 0x00000020 -#define KS_INTERLACE_FieldPatBothIrregular 0x00000030 -#define KS_INTERLACE_DisplayModeMask 0x000000c0 -#define KS_INTERLACE_DisplayModeBobOnly 0x00000000 -#define KS_INTERLACE_DisplayModeWeaveOnly 0x00000040 -#define KS_INTERLACE_DisplayModeBobOrWeave 0x00000080 - -#define KS_MPEG2_DoPanScan 0x00000001 -#define KS_MPEG2_DVDLine21Field1 0x00000002 -#define KS_MPEG2_DVDLine21Field2 0x00000004 -#define KS_MPEG2_SourceIsLetterboxed 0x00000008 -#define KS_MPEG2_FilmCameraMode 0x00000010 -#define KS_MPEG2_LetterboxAnalogOut 0x00000020 -#define KS_MPEG2_DSS_UserData 0x00000040 -#define KS_MPEG2_DVB_UserData 0x00000080 -#define KS_MPEG2_27MhzTimebase 0x00000100 - -typedef struct tagKS_VIDEOINFOHEADER2 { - RECT rcSource; - RECT rcTarget; - DWORD dwBitRate; - DWORD dwBitErrorRate; - REFERENCE_TIME AvgTimePerFrame; - DWORD dwInterlaceFlags; - DWORD dwCopyProtectFlags; - DWORD dwPictAspectRatioX; - DWORD dwPictAspectRatioY; - DWORD dwReserved1; - DWORD dwReserved2; - KS_BITMAPINFOHEADER bmiHeader; -} KS_VIDEOINFOHEADER2,*PKS_VIDEOINFOHEADER2; - -typedef struct tagKS_MPEG1VIDEOINFO { - KS_VIDEOINFOHEADER hdr; - DWORD dwStartTimeCode; - DWORD cbSequenceHeader; - BYTE bSequenceHeader[1]; -} KS_MPEG1VIDEOINFO,*PKS_MPEG1VIDEOINFO; - -#define KS_MAX_SIZE_MPEG1_SEQUENCE_INFO 140 -#define KS_SIZE_MPEG1VIDEOINFO(pv) (FIELD_OFFSET(KS_MPEG1VIDEOINFO,bSequenceHeader[0]) + (pv)->cbSequenceHeader) -#define KS_MPEG1_SEQUENCE_INFO(pv) ((const BYTE *)(pv)->bSequenceHeader) - -typedef struct tagKS_MPEGVIDEOINFO2 { - KS_VIDEOINFOHEADER2 hdr; - DWORD dwStartTimeCode; - DWORD cbSequenceHeader; - DWORD dwProfile; - DWORD dwLevel; - DWORD dwFlags; - DWORD bSequenceHeader[1]; -} KS_MPEGVIDEOINFO2,*PKS_MPEGVIDEOINFO2; - -#define KS_SIZE_MPEGVIDEOINFO2(pv) (FIELD_OFFSET(KS_MPEGVIDEOINFO2,bSequenceHeader[0]) + (pv)->cbSequenceHeader) -#define KS_MPEG1_SEQUENCE_INFO(pv) ((const BYTE *)(pv)->bSequenceHeader) - -#define KS_MPEGAUDIOINFO_27MhzTimebase 0x00000001 - -typedef struct tagKS_MPEAUDIOINFO { - DWORD dwFlags; - DWORD dwReserved1; - DWORD dwReserved2; - DWORD dwReserved3; -} KS_MPEGAUDIOINFO,*PKS_MPEGAUDIOINFO; - -typedef struct tagKS_DATAFORMAT_VIDEOINFOHEADER { - KSDATAFORMAT DataFormat; - KS_VIDEOINFOHEADER VideoInfoHeader; -} KS_DATAFORMAT_VIDEOINFOHEADER,*PKS_DATAFORMAT_VIDEOINFOHEADER; - -typedef struct tagKS_DATAFORMAT_VIDEOINFOHEADER2 { - KSDATAFORMAT DataFormat; - KS_VIDEOINFOHEADER2 VideoInfoHeader2; -} KS_DATAFORMAT_VIDEOINFOHEADER2,*PKS_DATAFORMAT_VIDEOINFOHEADER2; - -typedef struct tagKS_DATAFORMAT_VIDEOINFO_PALETTE { - KSDATAFORMAT DataFormat; - KS_VIDEOINFO VideoInfo; -} KS_DATAFORMAT_VIDEOINFO_PALETTE,*PKS_DATAFORMAT_VIDEOINFO_PALETTE; - -typedef struct tagKS_DATAFORMAT_VBIINFOHEADER { - KSDATAFORMAT DataFormat; - KS_VBIINFOHEADER VBIInfoHeader; -} KS_DATAFORMAT_VBIINFOHEADER,*PKS_DATAFORMAT_VBIINFOHEADER; - -typedef struct _KS_VIDEO_STREAM_CONFIG_CAPS { - GUID guid; - ULONG VideoStandard; - SIZE InputSize; - SIZE MinCroppingSize; - SIZE MaxCroppingSize; - int CropGranularityX; - int CropGranularityY; - int CropAlignX; - int CropAlignY; - SIZE MinOutputSize; - SIZE MaxOutputSize; - int OutputGranularityX; - int OutputGranularityY; - int StretchTapsX; - int StretchTapsY; - int ShrinkTapsX; - int ShrinkTapsY; - LONGLONG MinFrameInterval; - LONGLONG MaxFrameInterval; - LONG MinBitsPerSecond; - LONG MaxBitsPerSecond; -} KS_VIDEO_STREAM_CONFIG_CAPS,*PKS_VIDEO_STREAM_CONFIG_CAPS; - -typedef struct tagKS_DATARANGE_VIDEO { - KSDATARANGE DataRange; - WINBOOL bFixedSizeSamples; - WINBOOL bTemporalCompression; - DWORD StreamDescriptionFlags; - DWORD MemoryAllocationFlags; - KS_VIDEO_STREAM_CONFIG_CAPS ConfigCaps; - KS_VIDEOINFOHEADER VideoInfoHeader; -} KS_DATARANGE_VIDEO,*PKS_DATARANGE_VIDEO; - -typedef struct tagKS_DATARANGE_VIDEO2 { - KSDATARANGE DataRange; - WINBOOL bFixedSizeSamples; - WINBOOL bTemporalCompression; - DWORD StreamDescriptionFlags; - DWORD MemoryAllocationFlags; - KS_VIDEO_STREAM_CONFIG_CAPS ConfigCaps; - KS_VIDEOINFOHEADER2 VideoInfoHeader; -} KS_DATARANGE_VIDEO2,*PKS_DATARANGE_VIDEO2; - -typedef struct tagKS_DATARANGE_MPEG1_VIDEO { - KSDATARANGE DataRange; - WINBOOL bFixedSizeSamples; - WINBOOL bTemporalCompression; - DWORD StreamDescriptionFlags; - DWORD MemoryAllocationFlags; - KS_VIDEO_STREAM_CONFIG_CAPS ConfigCaps; - KS_MPEG1VIDEOINFO VideoInfoHeader; -} KS_DATARANGE_MPEG1_VIDEO,*PKS_DATARANGE_MPEG1_VIDEO; - -typedef struct tagKS_DATARANGE_MPEG2_VIDEO { - KSDATARANGE DataRange; - WINBOOL bFixedSizeSamples; - WINBOOL bTemporalCompression; - DWORD StreamDescriptionFlags; - DWORD MemoryAllocationFlags; - KS_VIDEO_STREAM_CONFIG_CAPS ConfigCaps; - KS_MPEGVIDEOINFO2 VideoInfoHeader; -} KS_DATARANGE_MPEG2_VIDEO,*PKS_DATARANGE_MPEG2_VIDEO; - -typedef struct tagKS_DATARANGE_VIDEO_PALETTE { - KSDATARANGE DataRange; - WINBOOL bFixedSizeSamples; - WINBOOL bTemporalCompression; - DWORD StreamDescriptionFlags; - DWORD MemoryAllocationFlags; - KS_VIDEO_STREAM_CONFIG_CAPS ConfigCaps; - KS_VIDEOINFO VideoInfo; -} KS_DATARANGE_VIDEO_PALETTE,*PKS_DATARANGE_VIDEO_PALETTE; - -typedef struct tagKS_DATARANGE_VIDEO_VBI { - KSDATARANGE DataRange; - WINBOOL bFixedSizeSamples; - WINBOOL bTemporalCompression; - DWORD StreamDescriptionFlags; - DWORD MemoryAllocationFlags; - KS_VIDEO_STREAM_CONFIG_CAPS ConfigCaps; - KS_VBIINFOHEADER VBIInfoHeader; -} KS_DATARANGE_VIDEO_VBI,*PKS_DATARANGE_VIDEO_VBI; - -typedef struct tagKS_DATARANGE_ANALOGVIDEO { - KSDATARANGE DataRange; - KS_ANALOGVIDEOINFO AnalogVideoInfo; -} KS_DATARANGE_ANALOGVIDEO,*PKS_DATARANGE_ANALOGVIDEO; - -#define KS_VIDEOSTREAM_PREVIEW 0x0001 -#define KS_VIDEOSTREAM_CAPTURE 0x0002 -#define KS_VIDEOSTREAM_VBI 0x0010 -#define KS_VIDEOSTREAM_NABTS 0x0020 -#define KS_VIDEOSTREAM_CC 0x0100 -#define KS_VIDEOSTREAM_EDS 0x0200 -#define KS_VIDEOSTREAM_TELETEXT 0x0400 -#define KS_VIDEOSTREAM_STILL 0x1000 -#define KS_VIDEOSTREAM_IS_VPE 0x8000 - -#define KS_VIDEO_ALLOC_VPE_SYSTEM 0x0001 -#define KS_VIDEO_ALLOC_VPE_DISPLAY 0x0002 -#define KS_VIDEO_ALLOC_VPE_AGP 0x0004 - -#define STATIC_KSPROPSETID_VBICAP_PROPERTIES \ - 0xf162c607,0x7b35,0x496f,0xad,0x7f,0x2d,0xca,0x3b,0x46,0xb7,0x18 -DEFINE_GUIDSTRUCT("F162C607-7B35-496f-AD7F-2DCA3B46B718",KSPROPSETID_VBICAP_PROPERTIES); -#define KSPROPSETID_VBICAP_PROPERTIES DEFINE_GUIDNAMED(KSPROPSETID_VBICAP_PROPERTIES) - -typedef enum { - KSPROPERTY_VBICAP_PROPERTIES_PROTECTION = 0x01 -} KSPROPERTY_VBICAP; - -typedef struct _VBICAP_PROPERTIES_PROTECTION_S { - KSPROPERTY Property; - ULONG StreamIndex; - ULONG Status; -} VBICAP_PROPERTIES_PROTECTION_S,*PVBICAP_PROPERTIES_PROTECTION_S; - -#define KS_VBICAP_PROTECTION_MV_PRESENT 0x0001L -#define KS_VBICAP_PROTECTION_MV_HARDWARE 0x0002L -#define KS_VBICAP_PROTECTION_MV_DETECTED 0x0004L - -#define KS_NABTS_GROUPID_ORIGINAL_CONTENT_BASE 0x800 -#define KS_NABTS_GROUPID_ORIGINAL_CONTENT_ADVERTISER_BASE 0x810 - -#define KS_NABTS_GROUPID_PRODUCTION_COMPANY_CONTENT_BASE 0x820 -#define KS_NABTS_GROUPID_PRODUCTION_COMPANY_ADVERTISER_BASE 0x830 - -#define KS_NABTS_GROUPID_SYNDICATED_SHOW_CONTENT_BASE 0x840 -#define KS_NABTS_GROUPID_SYNDICATED_SHOW_ADVERTISER_BASE 0x850 - -#define KS_NABTS_GROUPID_NETWORK_WIDE_CONTENT_BASE 0x860 -#define KS_NABTS_GROUPID_NETWORK_WIDE_ADVERTISER_BASE 0x870 - -#define KS_NABTS_GROUPID_TELEVISION_STATION_CONTENT_BASE 0x880 -#define KS_NABTS_GROUPID_TELEVISION_STATION_ADVERTISER_BASE 0x890 - -#define KS_NABTS_GROUPID_LOCAL_CABLE_SYSTEM_CONTENT_BASE 0x8A0 -#define KS_NABTS_GROUPID_LOCAL_CABLE_SYSTEM_ADVERTISER_BASE 0x8B0 - -#define KS_NABTS_GROUPID_MICROSOFT_RESERVED_TEST_DATA_BASE 0x8F0 - -#define STATIC_KSDATAFORMAT_TYPE_NABTS \ - 0xe757bca0,0x39ac,0x11d1,0xa9,0xf5,0x0,0xc0,0x4f,0xbb,0xde,0x8f -DEFINE_GUIDSTRUCT("E757BCA0-39AC-11d1-A9F5-00C04FBBDE8F",KSDATAFORMAT_TYPE_NABTS); -#define KSDATAFORMAT_TYPE_NABTS DEFINE_GUIDNAMED(KSDATAFORMAT_TYPE_NABTS) - -#define STATIC_KSDATAFORMAT_SUBTYPE_NABTS_FEC \ - 0xe757bca1,0x39ac,0x11d1,0xa9,0xf5,0x0,0xc0,0x4f,0xbb,0xde,0x8f -DEFINE_GUIDSTRUCT("E757BCA1-39AC-11d1-A9F5-00C04FBBDE8F",KSDATAFORMAT_SUBTYPE_NABTS_FEC); -#define KSDATAFORMAT_SUBTYPE_NABTS_FEC DEFINE_GUIDNAMED(KSDATAFORMAT_SUBTYPE_NABTS_FEC) - -#define MAX_NABTS_VBI_LINES_PER_FIELD 11 -#define NABTS_LINES_PER_BUNDLE 16 -#define NABTS_PAYLOAD_PER_LINE 28 -#define NABTS_BYTES_PER_LINE 36 - -typedef struct _NABTSFEC_BUFFER { - ULONG dataSize; - USHORT groupID; - USHORT Reserved; - UCHAR data[NABTS_LINES_PER_BUNDLE *NABTS_PAYLOAD_PER_LINE]; -} NABTSFEC_BUFFER,*PNABTSFEC_BUFFER; - -#define STATIC_KSPROPSETID_VBICodecFiltering \ - 0xcafeb0caL,0x8715,0x11d0,0xbd,0x6a,0x00,0x35,0xc0,0xed,0xba,0xbe -DEFINE_GUIDSTRUCT("cafeb0ca-8715-11d0-bd6a-0035c0edbabe",KSPROPSETID_VBICodecFiltering); -#define KSPROPSETID_VBICodecFiltering DEFINE_GUIDNAMED(KSPROPSETID_VBICodecFiltering) - -typedef enum { - KSPROPERTY_VBICODECFILTERING_SCANLINES_REQUESTED_BIT_ARRAY = 0x01, - KSPROPERTY_VBICODECFILTERING_SCANLINES_DISCOVERED_BIT_ARRAY, - KSPROPERTY_VBICODECFILTERING_SUBSTREAMS_REQUESTED_BIT_ARRAY, - KSPROPERTY_VBICODECFILTERING_SUBSTREAMS_DISCOVERED_BIT_ARRAY, - KSPROPERTY_VBICODECFILTERING_STATISTICS -} KSPROPERTY_VBICODECFILTERING; - -typedef struct _VBICODECFILTERING_SCANLINES { - DWORD DwordBitArray[32]; -} VBICODECFILTERING_SCANLINES,*PVBICODECFILTERING_SCANLINES; - -typedef struct _VBICODECFILTERING_NABTS_SUBSTREAMS { - DWORD SubstreamMask[128]; -} VBICODECFILTERING_NABTS_SUBSTREAMS,*PVBICODECFILTERING_NABTS_SUBSTREAMS; - -typedef struct _VBICODECFILTERING_CC_SUBSTREAMS { - DWORD SubstreamMask; -} VBICODECFILTERING_CC_SUBSTREAMS,*PVBICODECFILTERING_CC_SUBSTREAMS; - -#define KS_CC_SUBSTREAM_ODD 0x0001L -#define KS_CC_SUBSTREAM_EVEN 0x0002L - -#define KS_CC_SUBSTREAM_FIELD1_MASK 0x00F0L -#define KS_CC_SUBSTREAM_SERVICE_CC1 0x0010L -#define KS_CC_SUBSTREAM_SERVICE_CC2 0x0020L -#define KS_CC_SUBSTREAM_SERVICE_T1 0x0040L -#define KS_CC_SUBSTREAM_SERVICE_T2 0x0080L - -#define KS_CC_SUBSTREAM_FIELD2_MASK 0x1F00L -#define KS_CC_SUBSTREAM_SERVICE_CC3 0x0100L -#define KS_CC_SUBSTREAM_SERVICE_CC4 0x0200L -#define KS_CC_SUBSTREAM_SERVICE_T3 0x0400L -#define KS_CC_SUBSTREAM_SERVICE_T4 0x0800L -#define KS_CC_SUBSTREAM_SERVICE_XDS 0x1000L - -#define CC_MAX_HW_DECODE_LINES 12 -typedef struct _CC_BYTE_PAIR { - BYTE Decoded[2]; - USHORT Reserved; -} CC_BYTE_PAIR,*PCC_BYTE_PAIR; - -typedef struct _CC_HW_FIELD { - VBICODECFILTERING_SCANLINES ScanlinesRequested; - ULONG fieldFlags; - LONGLONG PictureNumber; - CC_BYTE_PAIR Lines[CC_MAX_HW_DECODE_LINES]; -} CC_HW_FIELD,*PCC_HW_FIELD; - -#ifndef PACK_PRAGMAS_NOT_SUPPORTED -#include <pshpack1.h> -#endif -typedef struct _NABTS_BUFFER_LINE { - BYTE Confidence; - BYTE Bytes[NABTS_BYTES_PER_LINE]; -} NABTS_BUFFER_LINE,*PNABTS_BUFFER_LINE; - -#define NABTS_BUFFER_PICTURENUMBER_SUPPORT 1 -typedef struct _NABTS_BUFFER { - VBICODECFILTERING_SCANLINES ScanlinesRequested; - LONGLONG PictureNumber; - NABTS_BUFFER_LINE NabtsLines[MAX_NABTS_VBI_LINES_PER_FIELD]; -} NABTS_BUFFER,*PNABTS_BUFFER; -#ifndef PACK_PRAGMAS_NOT_SUPPORTED -#include <poppack.h> -#endif - -#define WST_TVTUNER_CHANGE_BEGIN_TUNE 0x1000L -#define WST_TVTUNER_CHANGE_END_TUNE 0x2000L - -#define MAX_WST_VBI_LINES_PER_FIELD 17 -#define WST_BYTES_PER_LINE 42 - -typedef struct _WST_BUFFER_LINE { - BYTE Confidence; - BYTE Bytes[WST_BYTES_PER_LINE]; -} WST_BUFFER_LINE,*PWST_BUFFER_LINE; - -typedef struct _WST_BUFFER { - VBICODECFILTERING_SCANLINES ScanlinesRequested; - WST_BUFFER_LINE WstLines[MAX_WST_VBI_LINES_PER_FIELD]; -} WST_BUFFER,*PWST_BUFFER; - -typedef struct _VBICODECFILTERING_STATISTICS_COMMON { - DWORD InputSRBsProcessed; - DWORD OutputSRBsProcessed; - DWORD SRBsIgnored; - DWORD InputSRBsMissing; - DWORD OutputSRBsMissing; - DWORD OutputFailures; - DWORD InternalErrors; - DWORD ExternalErrors; - DWORD InputDiscontinuities; - DWORD DSPFailures; - DWORD TvTunerChanges; - DWORD VBIHeaderChanges; - DWORD LineConfidenceAvg; - DWORD BytesOutput; -} VBICODECFILTERING_STATISTICS_COMMON,*PVBICODECFILTERING_STATISTICS_COMMON; - -typedef struct _VBICODECFILTERING_STATISTICS_COMMON_PIN { - DWORD SRBsProcessed; - DWORD SRBsIgnored; - DWORD SRBsMissing; - DWORD InternalErrors; - DWORD ExternalErrors; - DWORD Discontinuities; - DWORD LineConfidenceAvg; - DWORD BytesOutput; -} VBICODECFILTERING_STATISTICS_COMMON_PIN,*PVBICODECFILTERING_STATISTICS_COMMON_PIN; - -typedef struct _VBICODECFILTERING_STATISTICS_NABTS { - VBICODECFILTERING_STATISTICS_COMMON Common; - DWORD FECBundleBadLines; - DWORD FECQueueOverflows; - DWORD FECCorrectedLines; - DWORD FECUncorrectableLines; - DWORD BundlesProcessed; - DWORD BundlesSent2IP; - DWORD FilteredLines; -} VBICODECFILTERING_STATISTICS_NABTS,*PVBICODECFILTERING_STATISTICS_NABTS; - -typedef struct _VBICODECFILTERING_STATISTICS_NABTS_PIN { - VBICODECFILTERING_STATISTICS_COMMON_PIN Common; -} VBICODECFILTERING_STATISTICS_NABTS_PIN,*PVBICODECFILTERING_STATISTICS_NABTS_PIN; - -typedef struct _VBICODECFILTERING_STATISTICS_CC { - VBICODECFILTERING_STATISTICS_COMMON Common; -} VBICODECFILTERING_STATISTICS_CC,*PVBICODECFILTERING_STATISTICS_CC; - -typedef struct _VBICODECFILTERING_STATISTICS_CC_PIN { - VBICODECFILTERING_STATISTICS_COMMON_PIN Common; -} VBICODECFILTERING_STATISTICS_CC_PIN,*PVBICODECFILTERING_STATISTICS_CC_PIN; - -typedef struct _VBICODECFILTERING_STATISTICS_TELETEXT { - VBICODECFILTERING_STATISTICS_COMMON Common; -} VBICODECFILTERING_STATISTICS_TELETEXT,*PVBICODECFILTERING_STATISTICS_TELETEXT; - -typedef struct _VBICODECFILTERING_STATISTICS_TELETEXT_PIN { - VBICODECFILTERING_STATISTICS_COMMON_PIN Common; -} VBICODECFILTERING_STATISTICS_TELETEXT_PIN,*PVBICODECFILTERING_STATISTICS_TELETEXT_PIN; - -typedef struct { - KSPROPERTY Property; - VBICODECFILTERING_SCANLINES Scanlines; -} KSPROPERTY_VBICODECFILTERING_SCANLINES_S,*PKSPROPERTY_VBICODECFILTERING_SCANLINES_S; - -typedef struct { - KSPROPERTY Property; - VBICODECFILTERING_NABTS_SUBSTREAMS Substreams; -} KSPROPERTY_VBICODECFILTERING_NABTS_SUBSTREAMS_S,*PKSPROPERTY_VBICODECFILTERING_NABTS_SUBSTREAMS_S; - -typedef struct { - KSPROPERTY Property; - VBICODECFILTERING_CC_SUBSTREAMS Substreams; -} KSPROPERTY_VBICODECFILTERING_CC_SUBSTREAMS_S,*PKSPROPERTY_VBICODECFILTERING_CC_SUBSTREAMS_S; - -typedef struct { - KSPROPERTY Property; - VBICODECFILTERING_STATISTICS_COMMON Statistics; -} KSPROPERTY_VBICODECFILTERING_STATISTICS_COMMON_S,*PKSPROPERTY_VBICODECFILTERING_STATISTICS_COMMON_S; - -typedef struct { - KSPROPERTY Property; - VBICODECFILTERING_STATISTICS_COMMON_PIN Statistics; -} KSPROPERTY_VBICODECFILTERING_STATISTICS_COMMON_PIN_S,*PKSPROPERTY_VBICODECFILTERING_STATISTICS_COMMON_PIN_S; - -typedef struct { - KSPROPERTY Property; - VBICODECFILTERING_STATISTICS_NABTS Statistics; -} KSPROPERTY_VBICODECFILTERING_STATISTICS_NABTS_S,*PKSPROPERTY_VBICODECFILTERING_STATISTICS_NABTS_S; - -typedef struct { - KSPROPERTY Property; - VBICODECFILTERING_STATISTICS_NABTS_PIN Statistics; -} KSPROPERTY_VBICODECFILTERING_STATISTICS_NABTS_PIN_S,*PKSPROPERTY_VBICODECFILTERING_STATISTICS_NABTS_PIN_S; - -typedef struct { - KSPROPERTY Property; - VBICODECFILTERING_STATISTICS_CC Statistics; -} KSPROPERTY_VBICODECFILTERING_STATISTICS_CC_S,*PKSPROPERTY_VBICODECFILTERING_STATISTICS_CC_S; - -typedef struct { - KSPROPERTY Property; - VBICODECFILTERING_STATISTICS_CC_PIN Statistics; -} KSPROPERTY_VBICODECFILTERING_STATISTICS_CC_PIN_S,*PKSPROPERTY_VBICODECFILTERING_STATISTICS_CC_PIN_S; - -#define STATIC_PINNAME_VIDEO_CAPTURE \ - 0xfb6c4281,0x353,0x11d1,0x90,0x5f,0x0,0x0,0xc0,0xcc,0x16,0xba -#define STATIC_PINNAME_CAPTURE STATIC_PINNAME_VIDEO_CAPTURE -DEFINE_GUIDSTRUCT("FB6C4281-0353-11d1-905F-0000C0CC16BA",PINNAME_VIDEO_CAPTURE); -#define PINNAME_VIDEO_CAPTURE DEFINE_GUIDNAMED(PINNAME_VIDEO_CAPTURE) -#define PINNAME_CAPTURE PINNAME_VIDEO_CAPTURE - -#define STATIC_PINNAME_VIDEO_CC_CAPTURE \ - 0x1aad8061,0x12d,0x11d2,0xb4,0xb1,0x0,0xa0,0xd1,0x2,0xcf,0xbe -#define STATIC_PINNAME_CC_CAPTURE STATIC_PINNAME_VIDEO_CC_CAPTURE -DEFINE_GUIDSTRUCT("1AAD8061-012D-11d2-B4B1-00A0D102CFBE",PINNAME_VIDEO_CC_CAPTURE); -#define PINNAME_VIDEO_CC_CAPTURE DEFINE_GUIDNAMED(PINNAME_VIDEO_CC_CAPTURE) - -#define STATIC_PINNAME_VIDEO_NABTS_CAPTURE \ - 0x29703660,0x498a,0x11d2,0xb4,0xb1,0x0,0xa0,0xd1,0x2,0xcf,0xbe -#define STATIC_PINNAME_NABTS_CAPTURE STATIC_PINNAME_VIDEO_NABTS_CAPTURE -DEFINE_GUIDSTRUCT("29703660-498A-11d2-B4B1-00A0D102CFBE",PINNAME_VIDEO_NABTS_CAPTURE); -#define PINNAME_VIDEO_NABTS_CAPTURE DEFINE_GUIDNAMED(PINNAME_VIDEO_NABTS_CAPTURE) - -#define STATIC_PINNAME_VIDEO_PREVIEW \ - 0xfb6c4282,0x353,0x11d1,0x90,0x5f,0x0,0x0,0xc0,0xcc,0x16,0xba -#define STATIC_PINNAME_PREVIEW STATIC_PINNAME_VIDEO_PREVIEW -DEFINE_GUIDSTRUCT("FB6C4282-0353-11d1-905F-0000C0CC16BA",PINNAME_VIDEO_PREVIEW); -#define PINNAME_VIDEO_PREVIEW DEFINE_GUIDNAMED(PINNAME_VIDEO_PREVIEW) -#define PINNAME_PREVIEW PINNAME_VIDEO_PREVIEW - -#define STATIC_PINNAME_VIDEO_ANALOGVIDEOIN \ - 0xfb6c4283,0x353,0x11d1,0x90,0x5f,0x0,0x0,0xc0,0xcc,0x16,0xba -DEFINE_GUIDSTRUCT("FB6C4283-0353-11d1-905F-0000C0CC16BA",PINNAME_VIDEO_ANALOGVIDEOIN); -#define PINNAME_VIDEO_ANALOGVIDEOIN DEFINE_GUIDNAMED(PINNAME_VIDEO_ANALOGVIDEOIN) - -#define STATIC_PINNAME_VIDEO_VBI \ - 0xfb6c4284,0x353,0x11d1,0x90,0x5f,0x0,0x0,0xc0,0xcc,0x16,0xba -DEFINE_GUIDSTRUCT("FB6C4284-0353-11d1-905F-0000C0CC16BA",PINNAME_VIDEO_VBI); -#define PINNAME_VIDEO_VBI DEFINE_GUIDNAMED(PINNAME_VIDEO_VBI) - -#define STATIC_PINNAME_VIDEO_VIDEOPORT \ - 0xfb6c4285,0x353,0x11d1,0x90,0x5f,0x0,0x0,0xc0,0xcc,0x16,0xba -DEFINE_GUIDSTRUCT("FB6C4285-0353-11d1-905F-0000C0CC16BA",PINNAME_VIDEO_VIDEOPORT); -#define PINNAME_VIDEO_VIDEOPORT DEFINE_GUIDNAMED(PINNAME_VIDEO_VIDEOPORT) - -#define STATIC_PINNAME_VIDEO_NABTS \ - 0xfb6c4286,0x353,0x11d1,0x90,0x5f,0x0,0x0,0xc0,0xcc,0x16,0xba -DEFINE_GUIDSTRUCT("FB6C4286-0353-11d1-905F-0000C0CC16BA",PINNAME_VIDEO_NABTS); -#define PINNAME_VIDEO_NABTS DEFINE_GUIDNAMED(PINNAME_VIDEO_NABTS) - -#define STATIC_PINNAME_VIDEO_EDS \ - 0xfb6c4287,0x353,0x11d1,0x90,0x5f,0x0,0x0,0xc0,0xcc,0x16,0xba -DEFINE_GUIDSTRUCT("FB6C4287-0353-11d1-905F-0000C0CC16BA",PINNAME_VIDEO_EDS); -#define PINNAME_VIDEO_EDS DEFINE_GUIDNAMED(PINNAME_VIDEO_EDS) - -#define STATIC_PINNAME_VIDEO_TELETEXT \ - 0xfb6c4288,0x353,0x11d1,0x90,0x5f,0x0,0x0,0xc0,0xcc,0x16,0xba -DEFINE_GUIDSTRUCT("FB6C4288-0353-11d1-905F-0000C0CC16BA",PINNAME_VIDEO_TELETEXT); -#define PINNAME_VIDEO_TELETEXT DEFINE_GUIDNAMED(PINNAME_VIDEO_TELETEXT) - -#define STATIC_PINNAME_VIDEO_CC \ - 0xfb6c4289,0x353,0x11d1,0x90,0x5f,0x0,0x0,0xc0,0xcc,0x16,0xba -DEFINE_GUIDSTRUCT("FB6C4289-0353-11d1-905F-0000C0CC16BA",PINNAME_VIDEO_CC); -#define PINNAME_VIDEO_CC DEFINE_GUIDNAMED(PINNAME_VIDEO_CC) - -#define STATIC_PINNAME_VIDEO_STILL \ - 0xfb6c428A,0x353,0x11d1,0x90,0x5f,0x0,0x0,0xc0,0xcc,0x16,0xba -DEFINE_GUIDSTRUCT("FB6C428A-0353-11d1-905F-0000C0CC16BA",PINNAME_VIDEO_STILL); -#define PINNAME_VIDEO_STILL DEFINE_GUIDNAMED(PINNAME_VIDEO_STILL) - -#define STATIC_PINNAME_VIDEO_TIMECODE \ - 0xfb6c428B,0x353,0x11d1,0x90,0x5f,0x0,0x0,0xc0,0xcc,0x16,0xba -DEFINE_GUIDSTRUCT("FB6C428B-0353-11d1-905F-0000C0CC16BA",PINNAME_VIDEO_TIMECODE); -#define PINNAME_VIDEO_TIMECODE DEFINE_GUIDNAMED(PINNAME_VIDEO_TIMECODE) - -#define STATIC_PINNAME_VIDEO_VIDEOPORT_VBI \ - 0xfb6c428C,0x353,0x11d1,0x90,0x5f,0x0,0x0,0xc0,0xcc,0x16,0xba -DEFINE_GUIDSTRUCT("FB6C428C-0353-11d1-905F-0000C0CC16BA",PINNAME_VIDEO_VIDEOPORT_VBI); -#define PINNAME_VIDEO_VIDEOPORT_VBI DEFINE_GUIDNAMED(PINNAME_VIDEO_VIDEOPORT_VBI) - -#define KS_VIDEO_FLAG_FRAME 0x0000L -#define KS_VIDEO_FLAG_FIELD1 0x0001L -#define KS_VIDEO_FLAG_FIELD2 0x0002L - -#define KS_VIDEO_FLAG_I_FRAME 0x0000L -#define KS_VIDEO_FLAG_P_FRAME 0x0010L -#define KS_VIDEO_FLAG_B_FRAME 0x0020L - -typedef struct tagKS_FRAME_INFO { - ULONG ExtendedHeaderSize; - DWORD dwFrameFlags; - LONGLONG PictureNumber; - LONGLONG DropCount; - HANDLE hDirectDraw; - HANDLE hSurfaceHandle; - RECT DirectDrawRect; - - DWORD Reserved1; - DWORD Reserved2; - DWORD Reserved3; - DWORD Reserved4; -} KS_FRAME_INFO,*PKS_FRAME_INFO; - -#define KS_VBI_FLAG_FIELD1 0x0001L -#define KS_VBI_FLAG_FIELD2 0x0002L - -#define KS_VBI_FLAG_MV_PRESENT 0x0100L -#define KS_VBI_FLAG_MV_HARDWARE 0x0200L -#define KS_VBI_FLAG_MV_DETECTED 0x0400L - -#define KS_VBI_FLAG_TVTUNER_CHANGE 0x0010L -#define KS_VBI_FLAG_VBIINFOHEADER_CHANGE 0x0020L - -typedef struct tagKS_VBI_FRAME_INFO { - ULONG ExtendedHeaderSize; - DWORD dwFrameFlags; - LONGLONG PictureNumber; - LONGLONG DropCount; - DWORD dwSamplingFrequency; - KS_TVTUNER_CHANGE_INFO TvTunerChangeInfo; - KS_VBIINFOHEADER VBIInfoHeader; -} KS_VBI_FRAME_INFO,*PKS_VBI_FRAME_INFO; - -typedef enum -{ - KS_AnalogVideo_None = 0x00000000, - KS_AnalogVideo_NTSC_M = 0x00000001, - KS_AnalogVideo_NTSC_M_J = 0x00000002, - KS_AnalogVideo_NTSC_433 = 0x00000004, - KS_AnalogVideo_PAL_B = 0x00000010, - KS_AnalogVideo_PAL_D = 0x00000020, - KS_AnalogVideo_PAL_G = 0x00000040, - KS_AnalogVideo_PAL_H = 0x00000080, - KS_AnalogVideo_PAL_I = 0x00000100, - KS_AnalogVideo_PAL_M = 0x00000200, - KS_AnalogVideo_PAL_N = 0x00000400, - KS_AnalogVideo_PAL_60 = 0x00000800, - KS_AnalogVideo_SECAM_B = 0x00001000, - KS_AnalogVideo_SECAM_D = 0x00002000, - KS_AnalogVideo_SECAM_G = 0x00004000, - KS_AnalogVideo_SECAM_H = 0x00008000, - KS_AnalogVideo_SECAM_K = 0x00010000, - KS_AnalogVideo_SECAM_K1 = 0x00020000, - KS_AnalogVideo_SECAM_L = 0x00040000, - KS_AnalogVideo_SECAM_L1 = 0x00080000, - KS_AnalogVideo_PAL_N_COMBO = 0x00100000 -} KS_AnalogVideoStandard; - -#define KS_AnalogVideo_NTSC_Mask 0x00000007 -#define KS_AnalogVideo_PAL_Mask 0x00100FF0 -#define KS_AnalogVideo_SECAM_Mask 0x000FF000 - -#define STATIC_PROPSETID_ALLOCATOR_CONTROL \ - 0x53171960,0x148e,0x11d2,0x99,0x79,0x0,0x0,0xc0,0xcc,0x16,0xba -DEFINE_GUIDSTRUCT("53171960-148E-11d2-9979-0000C0CC16BA",PROPSETID_ALLOCATOR_CONTROL); -#define PROPSETID_ALLOCATOR_CONTROL DEFINE_GUIDNAMED(PROPSETID_ALLOCATOR_CONTROL) - -typedef enum { - KSPROPERTY_ALLOCATOR_CONTROL_HONOR_COUNT, - KSPROPERTY_ALLOCATOR_CONTROL_SURFACE_SIZE, - KSPROPERTY_ALLOCATOR_CONTROL_CAPTURE_CAPS, - KSPROPERTY_ALLOCATOR_CONTROL_CAPTURE_INTERLEAVE -} KSPROPERTY_ALLOCATOR_CONTROL; - -typedef struct { - ULONG CX; - ULONG CY; -} KSPROPERTY_ALLOCATOR_CONTROL_SURFACE_SIZE_S,*PKSPROPERTY_ALLOCATOR_CONTROL_SURFACE_SIZE_S; - -typedef struct { - ULONG InterleavedCapSupported; -} KSPROPERTY_ALLOCATOR_CONTROL_CAPTURE_CAPS_S,*PKSPROPERTY_ALLOCATOR_CONTROL_CAPTURE_CAPS_S; - -typedef struct { - ULONG InterleavedCapPossible; -} KSPROPERTY_ALLOCATOR_CONTROL_CAPTURE_INTERLEAVE_S,*PKSPROPERTY_ALLOCATOR_CONTROL_CAPTURE_INTERLEAVE_S; - -#define STATIC_PROPSETID_VIDCAP_VIDEOPROCAMP \ - 0xC6E13360L,0x30AC,0x11d0,0xa1,0x8c,0x00,0xA0,0xC9,0x11,0x89,0x56 -DEFINE_GUIDSTRUCT("C6E13360-30AC-11d0-A18C-00A0C9118956",PROPSETID_VIDCAP_VIDEOPROCAMP); -#define PROPSETID_VIDCAP_VIDEOPROCAMP DEFINE_GUIDNAMED(PROPSETID_VIDCAP_VIDEOPROCAMP) - -typedef enum { - KSPROPERTY_VIDEOPROCAMP_BRIGHTNESS, - KSPROPERTY_VIDEOPROCAMP_CONTRAST, - KSPROPERTY_VIDEOPROCAMP_HUE, - KSPROPERTY_VIDEOPROCAMP_SATURATION, - KSPROPERTY_VIDEOPROCAMP_SHARPNESS, - KSPROPERTY_VIDEOPROCAMP_GAMMA, - KSPROPERTY_VIDEOPROCAMP_COLORENABLE, - KSPROPERTY_VIDEOPROCAMP_WHITEBALANCE, - KSPROPERTY_VIDEOPROCAMP_BACKLIGHT_COMPENSATION, - KSPROPERTY_VIDEOPROCAMP_GAIN, - KSPROPERTY_VIDEOPROCAMP_DIGITAL_MULTIPLIER, - KSPROPERTY_VIDEOPROCAMP_DIGITAL_MULTIPLIER_LIMIT, - KSPROPERTY_VIDEOPROCAMP_WHITEBALANCE_COMPONENT, - KSPROPERTY_VIDEOPROCAMP_POWERLINE_FREQUENCY -} KSPROPERTY_VIDCAP_VIDEOPROCAMP; - -typedef struct { - KSPROPERTY Property; - LONG Value; - ULONG Flags; - ULONG Capabilities; -} KSPROPERTY_VIDEOPROCAMP_S,*PKSPROPERTY_VIDEOPROCAMP_S; - -typedef struct { - KSP_NODE NodeProperty; - LONG Value; - ULONG Flags; - ULONG Capabilities; -} KSPROPERTY_VIDEOPROCAMP_NODE_S,*PKSPROPERTY_VIDEOPROCAMP_NODE_S; - -typedef struct { - KSPROPERTY Property; - LONG Value1; - ULONG Flags; - ULONG Capabilities; - LONG Value2; -} KSPROPERTY_VIDEOPROCAMP_S2,*PKSPROPERTY_VIDEOPROCAMP_S2; - -typedef struct { - KSP_NODE NodeProperty; - LONG Value1; - ULONG Flags; - ULONG Capabilities; - LONG Value2; -} KSPROPERTY_VIDEOPROCAMP_NODE_S2,*PKSPROPERTY_VIDEOPROCAMP_NODE_S2; - -#define KSPROPERTY_VIDEOPROCAMP_FLAGS_AUTO 0X0001L -#define KSPROPERTY_VIDEOPROCAMP_FLAGS_MANUAL 0X0002L - -#define STATIC_PROPSETID_VIDCAP_SELECTOR \ - 0x1ABDAECA,0x68B6,0x4F83,0x93,0x71,0xB4,0x13,0x90,0x7C,0x7B,0x9F -DEFINE_GUIDSTRUCT("1ABDAECA-68B6-4F83-9371-B413907C7B9F",PROPSETID_VIDCAP_SELECTOR); -#define PROPSETID_VIDCAP_SELECTOR DEFINE_GUIDNAMED(PROPSETID_VIDCAP_SELECTOR) - -typedef enum { - KSPROPERTY_SELECTOR_SOURCE_NODE_ID, - KSPROPERTY_SELECTOR_NUM_SOURCES -} KSPROPERTY_VIDCAP_SELECTOR,*PKSPROPERTY_VIDCAP_SELECTOR; - -typedef struct { - KSPROPERTY Property; - LONG Value; - ULONG Flags; - ULONG Capabilities; -} KSPROPERTY_SELECTOR_S,*PKSPROPERTY_SELECTOR_S; - -typedef struct { - KSP_NODE NodeProperty; - LONG Value; - ULONG Flags; - ULONG Capabilities; -} KSPROPERTY_SELECTOR_NODE_S,*PKSPROPERTY_SELECTOR_NODE_S; - -#define STATIC_PROPSETID_TUNER \ - 0x6a2e0605L,0x28e4,0x11d0,0xa1,0x8c,0x00,0xa0,0xc9,0x11,0x89,0x56 -DEFINE_GUIDSTRUCT("6a2e0605-28e4-11d0-a18c-00a0c9118956",PROPSETID_TUNER); -#define PROPSETID_TUNER DEFINE_GUIDNAMED(PROPSETID_TUNER) - -typedef enum { - KSPROPERTY_TUNER_CAPS, - KSPROPERTY_TUNER_MODE_CAPS, - KSPROPERTY_TUNER_MODE, - KSPROPERTY_TUNER_STANDARD, - KSPROPERTY_TUNER_FREQUENCY, - KSPROPERTY_TUNER_INPUT, - KSPROPERTY_TUNER_STATUS, - KSPROPERTY_TUNER_IF_MEDIUM -} KSPROPERTY_TUNER; - -typedef enum { - KSPROPERTY_TUNER_MODE_TV = 0X0001, - KSPROPERTY_TUNER_MODE_FM_RADIO = 0X0002, - KSPROPERTY_TUNER_MODE_AM_RADIO = 0X0004, - KSPROPERTY_TUNER_MODE_DSS = 0X0008, - KSPROPERTY_TUNER_MODE_ATSC = 0X0010 -} KSPROPERTY_TUNER_MODES; - -typedef enum { - KS_TUNER_TUNING_EXACT = 1, - KS_TUNER_TUNING_FINE, - KS_TUNER_TUNING_COARSE -} KS_TUNER_TUNING_FLAGS; - -typedef enum { - KS_TUNER_STRATEGY_PLL = 0X01, - KS_TUNER_STRATEGY_SIGNAL_STRENGTH = 0X02, - KS_TUNER_STRATEGY_DRIVER_TUNES = 0X04 -} KS_TUNER_STRATEGY; - -typedef struct { - KSPROPERTY Property; - ULONG ModesSupported; - KSPIN_MEDIUM VideoMedium; - KSPIN_MEDIUM TVAudioMedium; - KSPIN_MEDIUM RadioAudioMedium; -} KSPROPERTY_TUNER_CAPS_S,*PKSPROPERTY_TUNER_CAPS_S; - -typedef struct { - KSPROPERTY Property; - KSPIN_MEDIUM IFMedium; -} KSPROPERTY_TUNER_IF_MEDIUM_S,*PKSPROPERTY_TUNER_IF_MEDIUM_S; - -typedef struct { - KSPROPERTY Property; - ULONG Mode; - ULONG StandardsSupported; - ULONG MinFrequency; - ULONG MaxFrequency; - ULONG TuningGranularity; - ULONG NumberOfInputs; - ULONG SettlingTime; - ULONG Strategy; -} KSPROPERTY_TUNER_MODE_CAPS_S,*PKSPROPERTY_TUNER_MODE_CAPS_S; - -typedef struct { - KSPROPERTY Property; - ULONG Mode; -} KSPROPERTY_TUNER_MODE_S,*PKSPROPERTY_TUNER_MODE_S; - -typedef struct { - KSPROPERTY Property; - ULONG Frequency; - ULONG LastFrequency; - ULONG TuningFlags; - ULONG VideoSubChannel; - ULONG AudioSubChannel; - ULONG Channel; - ULONG Country; -} KSPROPERTY_TUNER_FREQUENCY_S,*PKSPROPERTY_TUNER_FREQUENCY_S; - -typedef struct { - KSPROPERTY Property; - ULONG Standard; -} KSPROPERTY_TUNER_STANDARD_S,*PKSPROPERTY_TUNER_STANDARD_S; - -typedef struct { - KSPROPERTY Property; - ULONG InputIndex; -} KSPROPERTY_TUNER_INPUT_S,*PKSPROPERTY_TUNER_INPUT_S; - -typedef struct { - KSPROPERTY Property; - ULONG CurrentFrequency; - ULONG PLLOffset; - ULONG SignalStrength; - ULONG Busy; -} KSPROPERTY_TUNER_STATUS_S,*PKSPROPERTY_TUNER_STATUS_S; - -#define STATIC_EVENTSETID_TUNER \ - 0x6a2e0606L,0x28e4,0x11d0,0xa1,0x8c,0x00,0xa0,0xc9,0x11,0x89,0x56 -DEFINE_GUIDSTRUCT("6a2e0606-28e4-11d0-a18c-00a0c9118956",EVENTSETID_TUNER); -#define EVENTSETID_TUNER DEFINE_GUIDNAMED(EVENTSETID_TUNER) - -typedef enum { - KSEVENT_TUNER_CHANGED -} KSEVENT_TUNER; - -#define STATIC_KSNODETYPE_VIDEO_STREAMING \ - 0xDFF229E1L,0xF70F,0x11D0,0xB9,0x17,0x00,0xA0,0xC9,0x22,0x31,0x96 -DEFINE_GUIDSTRUCT("DFF229E1-F70F-11D0-B917-00A0C9223196",KSNODETYPE_VIDEO_STREAMING); -#define KSNODETYPE_VIDEO_STREAMING DEFINE_GUIDNAMED(KSNODETYPE_VIDEO_STREAMING) - -#define STATIC_KSNODETYPE_VIDEO_INPUT_TERMINAL \ - 0xDFF229E2L,0xF70F,0x11D0,0xB9,0x17,0x00,0xA0,0xC9,0x22,0x31,0x96 -DEFINE_GUIDSTRUCT("DFF229E2-F70F-11D0-B917-00A0C9223196",KSNODETYPE_VIDEO_INPUT_TERMINAL); -#define KSNODETYPE_VIDEO_INPUT_TERMINAL DEFINE_GUIDNAMED(KSNODETYPE_VIDEO_INPUT_TERMINAL) - -#define STATIC_KSNODETYPE_VIDEO_OUTPUT_TERMINAL \ - 0xDFF229E3L,0xF70F,0x11D0,0xB9,0x17,0x00,0xA0,0xC9,0x22,0x31,0x96 -DEFINE_GUIDSTRUCT("DFF229E3-F70F-11D0-B917-00A0C9223196",KSNODETYPE_VIDEO_OUTPUT_TERMINAL); -#define KSNODETYPE_VIDEO_OUTPUT_TERMINAL DEFINE_GUIDNAMED(KSNODETYPE_VIDEO_OUTPUT_TERMINAL) - -#define STATIC_KSNODETYPE_VIDEO_SELECTOR \ - 0xDFF229E4L,0xF70F,0x11D0,0xB9,0x17,0x00,0xA0,0xC9,0x22,0x31,0x96 -DEFINE_GUIDSTRUCT("DFF229E4-F70F-11D0-B917-00A0C9223196",KSNODETYPE_VIDEO_SELECTOR); -#define KSNODETYPE_VIDEO_SELECTOR DEFINE_GUIDNAMED(KSNODETYPE_VIDEO_SELECTOR) - -#define STATIC_KSNODETYPE_VIDEO_PROCESSING \ - 0xDFF229E5L,0xF70F,0x11D0,0xB9,0x17,0x00,0xA0,0xC9,0x22,0x31,0x96 -DEFINE_GUIDSTRUCT("DFF229E5-F70F-11D0-B917-00A0C9223196",KSNODETYPE_VIDEO_PROCESSING); -#define KSNODETYPE_VIDEO_PROCESSING DEFINE_GUIDNAMED(KSNODETYPE_VIDEO_PROCESSING) - -#define STATIC_KSNODETYPE_VIDEO_CAMERA_TERMINAL \ - 0xDFF229E6L,0xF70F,0x11D0,0xB9,0x17,0x00,0xA0,0xC9,0x22,0x31,0x96 -DEFINE_GUIDSTRUCT("DFF229E6-F70F-11D0-B917-00A0C9223196",KSNODETYPE_VIDEO_CAMERA_TERMINAL); -#define KSNODETYPE_VIDEO_CAMERA_TERMINAL DEFINE_GUIDNAMED(KSNODETYPE_VIDEO_CAMERA_TERMINAL) - -#define STATIC_KSNODETYPE_VIDEO_INPUT_MTT \ - 0xDFF229E7L,0xF70F,0x11D0,0xB9,0x17,0x00,0xA0,0xC9,0x22,0x31,0x96 -DEFINE_GUIDSTRUCT("DFF229E7-F70F-11D0-B917-00A0C9223196",KSNODETYPE_VIDEO_INPUT_MTT); -#define KSNODETYPE_VIDEO_INPUT_MTT DEFINE_GUIDNAMED(KSNODETYPE_VIDEO_INPUT_MTT) - -#define STATIC_KSNODETYPE_VIDEO_OUTPUT_MTT \ - 0xDFF229E8L,0xF70F,0x11D0,0xB9,0x17,0x00,0xA0,0xC9,0x22,0x31,0x96 -DEFINE_GUIDSTRUCT("DFF229E8-F70F-11D0-B917-00A0C9223196",KSNODETYPE_VIDEO_OUTPUT_MTT); -#define KSNODETYPE_VIDEO_OUTPUT_MTT DEFINE_GUIDNAMED(KSNODETYPE_VIDEO_OUTPUT_MTT) - -#define STATIC_PROPSETID_VIDCAP_VIDEOENCODER \ - 0x6a2e0610L,0x28e4,0x11d0,0xa1,0x8c,0x00,0xa0,0xc9,0x11,0x89,0x56 -DEFINE_GUIDSTRUCT("6a2e0610-28e4-11d0-a18c-00a0c9118956",PROPSETID_VIDCAP_VIDEOENCODER); -#define PROPSETID_VIDCAP_VIDEOENCODER DEFINE_GUIDNAMED(PROPSETID_VIDCAP_VIDEOENCODER) - -typedef enum { - KSPROPERTY_VIDEOENCODER_CAPS, - KSPROPERTY_VIDEOENCODER_STANDARD, - KSPROPERTY_VIDEOENCODER_COPYPROTECTION, - KSPROPERTY_VIDEOENCODER_CC_ENABLE -} KSPROPERTY_VIDCAP_VIDEOENCODER; - -typedef struct { - KSPROPERTY Property; - LONG Value; - ULONG Flags; - ULONG Capabilities; -} KSPROPERTY_VIDEOENCODER_S,*PKSPROPERTY_VIDEOENCODER_S; - -#define STATIC_PROPSETID_VIDCAP_VIDEODECODER \ - 0xC6E13350L,0x30AC,0x11d0,0xA1,0x8C,0x00,0xA0,0xC9,0x11,0x89,0x56 -DEFINE_GUIDSTRUCT("C6E13350-30AC-11d0-A18C-00A0C9118956",PROPSETID_VIDCAP_VIDEODECODER); -#define PROPSETID_VIDCAP_VIDEODECODER DEFINE_GUIDNAMED(PROPSETID_VIDCAP_VIDEODECODER) - -typedef enum { - KSPROPERTY_VIDEODECODER_CAPS, - KSPROPERTY_VIDEODECODER_STANDARD, - KSPROPERTY_VIDEODECODER_STATUS, - KSPROPERTY_VIDEODECODER_OUTPUT_ENABLE, - KSPROPERTY_VIDEODECODER_VCR_TIMING -} KSPROPERTY_VIDCAP_VIDEODECODER; - -typedef enum { - KS_VIDEODECODER_FLAGS_CAN_DISABLE_OUTPUT = 0X0001, - KS_VIDEODECODER_FLAGS_CAN_USE_VCR_LOCKING = 0X0002, - KS_VIDEODECODER_FLAGS_CAN_INDICATE_LOCKED = 0X0004 -} KS_VIDEODECODER_FLAGS; - -typedef struct { - KSPROPERTY Property; - ULONG StandardsSupported; - ULONG Capabilities; - ULONG SettlingTime; - ULONG HSyncPerVSync; -} KSPROPERTY_VIDEODECODER_CAPS_S,*PKSPROPERTY_VIDEODECODER_CAPS_S; - -typedef struct { - KSPROPERTY Property; - ULONG NumberOfLines; - ULONG SignalLocked; -} KSPROPERTY_VIDEODECODER_STATUS_S,*PKSPROPERTY_VIDEODECODER_STATUS_S; - -typedef struct { - KSPROPERTY Property; - ULONG Value; -} KSPROPERTY_VIDEODECODER_S,*PKSPROPERTY_VIDEODECODER_S; - -#define STATIC_EVENTSETID_VIDEODECODER \ - 0x6a2e0621L,0x28e4,0x11d0,0xa1,0x8c,0x00,0xa0,0xc9,0x11,0x89,0x56 -DEFINE_GUIDSTRUCT("6a2e0621-28e4-11d0-a18c-00a0c9118956",EVENTSETID_VIDEODECODER); -#define EVENTSETID_VIDEODECODER DEFINE_GUIDNAMED(EVENTSETID_VIDEODECODER) - -typedef enum { - KSEVENT_VIDEODECODER_CHANGED -} KSEVENT_VIDEODECODER; - -#define STATIC_PROPSETID_VIDCAP_CAMERACONTROL \ - 0xC6E13370L,0x30AC,0x11d0,0xa1,0x8C,0x00,0xA0,0xC9,0x11,0x89,0x56 -DEFINE_GUIDSTRUCT("C6E13370-30AC-11d0-A18C-00A0C9118956",PROPSETID_VIDCAP_CAMERACONTROL); -#define PROPSETID_VIDCAP_CAMERACONTROL DEFINE_GUIDNAMED(PROPSETID_VIDCAP_CAMERACONTROL) - -typedef enum { - KSPROPERTY_CAMERACONTROL_PAN, - KSPROPERTY_CAMERACONTROL_TILT, - KSPROPERTY_CAMERACONTROL_ROLL, - KSPROPERTY_CAMERACONTROL_ZOOM, - KSPROPERTY_CAMERACONTROL_EXPOSURE, - KSPROPERTY_CAMERACONTROL_IRIS, - KSPROPERTY_CAMERACONTROL_FOCUS, - KSPROPERTY_CAMERACONTROL_SCANMODE, - KSPROPERTY_CAMERACONTROL_PRIVACY, - KSPROPERTY_CAMERACONTROL_PANTILT, - KSPROPERTY_CAMERACONTROL_PAN_RELATIVE, - KSPROPERTY_CAMERACONTROL_TILT_RELATIVE, - KSPROPERTY_CAMERACONTROL_ROLL_RELATIVE, - KSPROPERTY_CAMERACONTROL_ZOOM_RELATIVE, - KSPROPERTY_CAMERACONTROL_EXPOSURE_RELATIVE, - KSPROPERTY_CAMERACONTROL_IRIS_RELATIVE, - KSPROPERTY_CAMERACONTROL_FOCUS_RELATIVE, - KSPROPERTY_CAMERACONTROL_PANTILT_RELATIVE, - KSPROPERTY_CAMERACONTROL_FOCAL_LENGTH -} KSPROPERTY_VIDCAP_CAMERACONTROL; - -typedef struct { - KSPROPERTY Property; - LONG Value; - ULONG Flags; - ULONG Capabilities; -} KSPROPERTY_CAMERACONTROL_S,*PKSPROPERTY_CAMERACONTROL_S; - -typedef struct { - KSP_NODE NodeProperty; - LONG Value; - ULONG Flags; - ULONG Capabilities; -} KSPROPERTY_CAMERACONTROL_NODE_S,PKSPROPERTY_CAMERACONTROL_NODE_S; - -typedef struct { - KSPROPERTY Property; - LONG Value1; - ULONG Flags; - ULONG Capabilities; - LONG Value2; -} KSPROPERTY_CAMERACONTROL_S2,*PKSPROPERTY_CAMERACONTROL_S2; - -typedef struct { - KSP_NODE NodeProperty; - LONG Value1; - ULONG Flags; - ULONG Capabilities; - LONG Value2; -} KSPROPERTY_CAMERACONTROL_NODE_S2,*PKSPROPERTY_CAMERACONTROL_NODE_S2; - -typedef struct { - KSPROPERTY Property; - LONG lOcularFocalLength; - LONG lObjectiveFocalLengthMin; - LONG lObjectiveFocalLengthMax; -} KSPROPERTY_CAMERACONTROL_FOCAL_LENGTH_S,*PKSPROPERTY_CAMERACONTROL_FOCAL_LENGTH_S; - -typedef struct { - KSNODEPROPERTY NodeProperty; - LONG lOcularFocalLength; - LONG lObjectiveFocalLengthMin; - LONG lObjectiveFocalLengthMax; -} KSPROPERTY_CAMERACONTROL_NODE_FOCAL_LENGTH_S,*PKSPROPERTY_CAMERACONTROL_NODE_FOCAL_LENGTH_S; - -#define KSPROPERTY_CAMERACONTROL_FLAGS_AUTO 0X0001L -#define KSPROPERTY_CAMERACONTROL_FLAGS_MANUAL 0X0002L - -#define KSPROPERTY_CAMERACONTROL_FLAGS_ABSOLUTE 0X0000L -#define KSPROPERTY_CAMERACONTROL_FLAGS_RELATIVE 0X0010L - -#ifndef __EDevCtrl__ -#define __EDevCtrl__ - -#define STATIC_PROPSETID_EXT_DEVICE \ - 0xB5730A90L,0x1A2C,0x11cf,0x8c,0x23,0x00,0xAA,0x00,0x6B,0x68,0x14 -DEFINE_GUIDSTRUCT("B5730A90-1A2C-11cf-8C23-00AA006B6814",PROPSETID_EXT_DEVICE); -#define PROPSETID_EXT_DEVICE DEFINE_GUIDNAMED(PROPSETID_EXT_DEVICE) - -typedef enum { - KSPROPERTY_EXTDEVICE_ID, - KSPROPERTY_EXTDEVICE_VERSION, - KSPROPERTY_EXTDEVICE_POWER_STATE, - KSPROPERTY_EXTDEVICE_PORT, - KSPROPERTY_EXTDEVICE_CAPABILITIES -} KSPROPERTY_EXTDEVICE; - -typedef struct tagDEVCAPS{ - LONG CanRecord; - LONG CanRecordStrobe; - LONG HasAudio; - LONG HasVideo; - LONG UsesFiles; - LONG CanSave; - LONG DeviceType; - LONG TCRead; - LONG TCWrite; - LONG CTLRead; - LONG IndexRead; - LONG Preroll; - LONG Postroll; - LONG SyncAcc; - LONG NormRate; - LONG CanPreview; - LONG CanMonitorSrc; - LONG CanTest; - LONG VideoIn; - LONG AudioIn; - LONG Calibrate; - LONG SeekType; - LONG SimulatedHardware; -} DEVCAPS,*PDEVCAPS; - -typedef struct { - KSPROPERTY Property; - union { - DEVCAPS Capabilities; - ULONG DevPort; - ULONG PowerState; - WCHAR pawchString[MAX_PATH]; - DWORD NodeUniqueID[2]; - } u; -} KSPROPERTY_EXTDEVICE_S,*PKSPROPERTY_EXTDEVICE_S; - -#define STATIC_PROPSETID_EXT_TRANSPORT \ - 0xA03CD5F0L,0x3045,0x11cf,0x8c,0x44,0x00,0xAA,0x00,0x6B,0x68,0x14 -DEFINE_GUIDSTRUCT("A03CD5F0-3045-11cf-8C44-00AA006B6814",PROPSETID_EXT_TRANSPORT); -#define PROPSETID_EXT_TRANSPORT DEFINE_GUIDNAMED(PROPSETID_EXT_TRANSPORT) - -typedef enum { - KSPROPERTY_EXTXPORT_CAPABILITIES, - KSPROPERTY_EXTXPORT_INPUT_SIGNAL_MODE, - KSPROPERTY_EXTXPORT_OUTPUT_SIGNAL_MODE, - KSPROPERTY_EXTXPORT_LOAD_MEDIUM, - KSPROPERTY_EXTXPORT_MEDIUM_INFO, - KSPROPERTY_EXTXPORT_STATE, - KSPROPERTY_EXTXPORT_STATE_NOTIFY, - KSPROPERTY_EXTXPORT_TIMECODE_SEARCH, - KSPROPERTY_EXTXPORT_ATN_SEARCH, - KSPROPERTY_EXTXPORT_RTC_SEARCH, - KSPROPERTY_RAW_AVC_CMD -} KSPROPERTY_EXTXPORT; - -typedef struct tagTRANSPORTSTATUS { - LONG Mode; - LONG LastError; - LONG RecordInhibit; - LONG ServoLock; - LONG MediaPresent; - LONG MediaLength; - LONG MediaSize; - LONG MediaTrackCount; - LONG MediaTrackLength; - LONG MediaTrackSide; - LONG MediaType; - LONG LinkMode; - LONG NotifyOn; -} TRANSPORTSTATUS,*PTRANSPORTSTATUS; - -typedef struct tagTRANSPORTBASICPARMS { - LONG TimeFormat; - LONG TimeReference; - LONG Superimpose; - LONG EndStopAction; - LONG RecordFormat; - LONG StepFrames; - LONG SetpField; - LONG Preroll; - LONG RecPreroll; - LONG Postroll; - LONG EditDelay; - LONG PlayTCDelay; - LONG RecTCDelay; - LONG EditField; - LONG FrameServo; - LONG ColorFrameServo; - LONG ServoRef; - LONG WarnGenlock; - LONG SetTracking; - TCHAR VolumeName[40]; - LONG Ballistic[20]; - LONG Speed; - LONG CounterFormat; - LONG TunerChannel; - LONG TunerNumber; - LONG TimerEvent; - LONG TimerStartDay; - LONG TimerStartTime; - LONG TimerStopDay; - LONG TimerStopTime; -} TRANSPORTBASICPARMS,*PTRANSPORTBASICPARMS; - -typedef struct tagTRANSPORTVIDEOPARMS { - LONG OutputMode; - LONG Input; -} TRANSPORTVIDEOPARMS,*PTRANSPORTVIDEOPARMS; - -typedef struct tagTRANSPORTAUDIOPARMS { - LONG EnableOutput; - LONG EnableRecord; - LONG EnableSelsync; - LONG Input; - LONG MonitorSource; -} TRANSPORTAUDIOPARMS,*PTRANSPORTAUDIOPARMS; - -typedef struct { - WINBOOL MediaPresent; - ULONG MediaType; - WINBOOL RecordInhibit; -} MEDIUM_INFO,*PMEDIUM_INFO; - -typedef struct { - ULONG Mode; - ULONG State; -} TRANSPORT_STATE,*PTRANSPORT_STATE; - -typedef struct { - KSPROPERTY Property; - union { - ULONG Capabilities; - ULONG SignalMode; - ULONG LoadMedium; - MEDIUM_INFO MediumInfo; - TRANSPORT_STATE XPrtState; - struct { - BYTE frame; - BYTE second; - BYTE minute; - BYTE hour; - } Timecode; - DWORD dwTimecode; - DWORD dwAbsTrackNumber; - struct { - ULONG PayloadSize; - BYTE Payload[512]; - } RawAVC; - } u; -} KSPROPERTY_EXTXPORT_S,*PKSPROPERTY_EXTXPORT_S; - -typedef struct { - KSP_NODE NodeProperty; - union { - ULONG Capabilities; - ULONG SignalMode; - ULONG LoadMedium; - MEDIUM_INFO MediumInfo; - TRANSPORT_STATE XPrtState; - struct { - BYTE frame; - BYTE second; - BYTE minute; - BYTE hour; - } Timecode; - DWORD dwTimecode; - DWORD dwAbsTrackNumber; - struct { - ULONG PayloadSize; - BYTE Payload[512]; - } RawAVC; - } u; -} KSPROPERTY_EXTXPORT_NODE_S,*PKSPROPERTY_EXTXPORT_NODE_S; - -#define STATIC_PROPSETID_TIMECODE_READER \ - 0x9B496CE1L,0x811B,0x11cf,0x8C,0x77,0x00,0xAA,0x00,0x6B,0x68,0x14 -DEFINE_GUIDSTRUCT("9B496CE1-811B-11cf-8C77-00AA006B6814",PROPSETID_TIMECODE_READER); -#define PROPSETID_TIMECODE_READER DEFINE_GUIDNAMED(PROPSETID_TIMECODE_READER) - -typedef enum { - KSPROPERTY_TIMECODE_READER, - KSPROPERTY_ATN_READER, - KSPROPERTY_RTC_READER -} KSPROPERTY_TIMECODE; - -#ifndef TIMECODE_DEFINED -#define TIMECODE_DEFINED -typedef union _timecode { - struct { - WORD wFrameRate; - WORD wFrameFract; - DWORD dwFrames; - }; - DWORDLONG qw; -} TIMECODE; -typedef TIMECODE *PTIMECODE; - -typedef struct tagTIMECODE_SAMPLE { - LONGLONG qwTick; - TIMECODE timecode; - DWORD dwUser; - DWORD dwFlags; -} TIMECODE_SAMPLE; - -typedef TIMECODE_SAMPLE *PTIMECODE_SAMPLE; -#endif /* TIMECODE_DEFINED */ - -typedef struct { - KSPROPERTY Property; - TIMECODE_SAMPLE TimecodeSamp; -} KSPROPERTY_TIMECODE_S,*PKSPROPERTY_TIMECODE_S; - -typedef struct { - KSP_NODE NodeProperty; - TIMECODE_SAMPLE TimecodeSamp; -} KSPROPERTY_TIMECODE_NODE_S,*PKSPROPERTY_TIMECODE_NODE_S; - -#define STATIC_KSEVENTSETID_EXTDEV_Command \ - 0x109c7988L,0xb3cb,0x11d2,0xb4,0x8e,0x00,0x60,0x97,0xb3,0x39,0x1b -DEFINE_GUIDSTRUCT("109c7988-b3cb-11d2-b48e-006097b3391b",KSEVENTSETID_EXTDEV_Command); -#define KSEVENTSETID_EXTDEV_Command DEFINE_GUIDNAMED(KSEVENTSETID_EXTDEV_Command) - -typedef enum { - KSEVENT_EXTDEV_COMMAND_NOTIFY_INTERIM_READY, - KSEVENT_EXTDEV_COMMAND_CONTROL_INTERIM_READY, - KSEVENT_EXTDEV_COMMAND_BUSRESET, - KSEVENT_EXTDEV_TIMECODE_UPDATE, - KSEVENT_EXTDEV_OPERATION_MODE_UPDATE, - KSEVENT_EXTDEV_TRANSPORT_STATE_UPDATE, - KSEVENT_EXTDEV_NOTIFY_REMOVAL, - KSEVENT_EXTDEV_NOTIFY_MEDIUM_CHANGE -} KSEVENT_DEVCMD; -#endif /* __EDevCtrl__ */ - -#define STATIC_PROPSETID_VIDCAP_CROSSBAR \ - 0x6a2e0640L,0x28e4,0x11d0,0xa1,0x8c,0x00,0xa0,0xc9,0x11,0x89,0x56 -DEFINE_GUIDSTRUCT("6a2e0640-28e4-11d0-a18c-00a0c9118956",PROPSETID_VIDCAP_CROSSBAR); -#define PROPSETID_VIDCAP_CROSSBAR DEFINE_GUIDNAMED(PROPSETID_VIDCAP_CROSSBAR) - -typedef enum { - KSPROPERTY_CROSSBAR_CAPS, - KSPROPERTY_CROSSBAR_PININFO, - KSPROPERTY_CROSSBAR_CAN_ROUTE, - KSPROPERTY_CROSSBAR_ROUTE -} KSPROPERTY_VIDCAP_CROSSBAR; - -typedef struct { - KSPROPERTY Property; - ULONG NumberOfInputs; - ULONG NumberOfOutputs; -} KSPROPERTY_CROSSBAR_CAPS_S,*PKSPROPERTY_CROSSBAR_CAPS_S; - -typedef struct { - KSPROPERTY Property; - KSPIN_DATAFLOW Direction; - ULONG Index; - ULONG PinType; - ULONG RelatedPinIndex; - KSPIN_MEDIUM Medium; -} KSPROPERTY_CROSSBAR_PININFO_S,*PKSPROPERTY_CROSSBAR_PININFO_S; - -typedef struct { - KSPROPERTY Property; - ULONG IndexInputPin; - ULONG IndexOutputPin; - ULONG CanRoute; -} KSPROPERTY_CROSSBAR_ROUTE_S,*PKSPROPERTY_CROSSBAR_ROUTE_S; - -#define STATIC_EVENTSETID_CROSSBAR \ - 0x6a2e0641L,0x28e4,0x11d0,0xa1,0x8c,0x00,0xa0,0xc9,0x11,0x89,0x56 -DEFINE_GUIDSTRUCT("6a2e0641-28e4-11d0-a18c-00a0c9118956",EVENTSETID_CROSSBAR); -#define EVENTSETID_CROSSBAR DEFINE_GUIDNAMED(EVENTSETID_CROSSBAR) - -typedef enum { - KSEVENT_CROSSBAR_CHANGED -} KSEVENT_CROSSBAR; - -typedef enum { - KS_PhysConn_Video_Tuner = 1, - KS_PhysConn_Video_Composite, - KS_PhysConn_Video_SVideo, - KS_PhysConn_Video_RGB, - KS_PhysConn_Video_YRYBY, - KS_PhysConn_Video_SerialDigital, - KS_PhysConn_Video_ParallelDigital, - KS_PhysConn_Video_SCSI, - KS_PhysConn_Video_AUX, - KS_PhysConn_Video_1394, - KS_PhysConn_Video_USB, - KS_PhysConn_Video_VideoDecoder, - KS_PhysConn_Video_VideoEncoder, - KS_PhysConn_Video_SCART, - KS_PhysConn_Audio_Tuner = 4096, - KS_PhysConn_Audio_Line, - KS_PhysConn_Audio_Mic, - KS_PhysConn_Audio_AESDigital, - KS_PhysConn_Audio_SPDIFDigital, - KS_PhysConn_Audio_SCSI, - KS_PhysConn_Audio_AUX, - KS_PhysConn_Audio_1394, - KS_PhysConn_Audio_USB, - KS_PhysConn_Audio_AudioDecoder -} KS_PhysicalConnectorType; - -#define STATIC_PROPSETID_VIDCAP_TVAUDIO \ - 0x6a2e0650L,0x28e4,0x11d0,0xa1,0x8c,0x00,0xa0,0xc9,0x11,0x89,0x56 -DEFINE_GUIDSTRUCT("6a2e0650-28e4-11d0-a18c-00a0c9118956",PROPSETID_VIDCAP_TVAUDIO); -#define PROPSETID_VIDCAP_TVAUDIO DEFINE_GUIDNAMED(PROPSETID_VIDCAP_TVAUDIO) - -typedef enum { - KSPROPERTY_TVAUDIO_CAPS, - KSPROPERTY_TVAUDIO_MODE, - KSPROPERTY_TVAUDIO_CURRENTLY_AVAILABLE_MODES -} KSPROPERTY_VIDCAP_TVAUDIO; - -#define KS_TVAUDIO_MODE_MONO 0x0001 -#define KS_TVAUDIO_MODE_STEREO 0x0002 -#define KS_TVAUDIO_MODE_LANG_A 0x0010 -#define KS_TVAUDIO_MODE_LANG_B 0x0020 -#define KS_TVAUDIO_MODE_LANG_C 0x0040 - -typedef struct { - KSPROPERTY Property; - ULONG Capabilities; - KSPIN_MEDIUM InputMedium; - KSPIN_MEDIUM OutputMedium; -} KSPROPERTY_TVAUDIO_CAPS_S,*PKSPROPERTY_TVAUDIO_CAPS_S; - -typedef struct { - KSPROPERTY Property; - ULONG Mode; -} KSPROPERTY_TVAUDIO_S,*PKSPROPERTY_TVAUDIO_S; - -#define STATIC_KSEVENTSETID_VIDCAP_TVAUDIO \ - 0x6a2e0651L,0x28e4,0x11d0,0xa1,0x8c,0x00,0xa0,0xc9,0x11,0x89,0x56 -DEFINE_GUIDSTRUCT("6a2e0651-28e4-11d0-a18c-00a0c9118956",KSEVENTSETID_VIDCAP_TVAUDIO); -#define KSEVENTSETID_VIDCAP_TVAUDIO DEFINE_GUIDNAMED(KSEVENTSETID_VIDCAP_TVAUDIO) - -typedef enum { - KSEVENT_TVAUDIO_CHANGED -} KSEVENT_TVAUDIO; - -#define STATIC_PROPSETID_VIDCAP_VIDEOCOMPRESSION \ - 0xC6E13343L,0x30AC,0x11d0,0xA1,0x8C,0x00,0xA0,0xC9,0x11,0x89,0x56 -DEFINE_GUIDSTRUCT("C6E13343-30AC-11d0-A18C-00A0C9118956",PROPSETID_VIDCAP_VIDEOCOMPRESSION); -#define PROPSETID_VIDCAP_VIDEOCOMPRESSION DEFINE_GUIDNAMED(PROPSETID_VIDCAP_VIDEOCOMPRESSION) - -typedef enum { - KSPROPERTY_VIDEOCOMPRESSION_GETINFO, - KSPROPERTY_VIDEOCOMPRESSION_KEYFRAME_RATE, - KSPROPERTY_VIDEOCOMPRESSION_PFRAMES_PER_KEYFRAME, - KSPROPERTY_VIDEOCOMPRESSION_QUALITY, - KSPROPERTY_VIDEOCOMPRESSION_OVERRIDE_KEYFRAME, - KSPROPERTY_VIDEOCOMPRESSION_OVERRIDE_FRAME_SIZE, - KSPROPERTY_VIDEOCOMPRESSION_WINDOWSIZE -} KSPROPERTY_VIDCAP_VIDEOCOMPRESSION; - -typedef enum { - KS_CompressionCaps_CanQuality = 1, - KS_CompressionCaps_CanCrunch = 2, - KS_CompressionCaps_CanKeyFrame = 4, - KS_CompressionCaps_CanBFrame = 8, - KS_CompressionCaps_CanWindow = 0x10 -} KS_CompressionCaps; - -typedef enum { - KS_StreamingHint_FrameInterval = 0x0100, - KS_StreamingHint_KeyFrameRate = 0x0200, - KS_StreamingHint_PFrameRate = 0x0400, - KS_StreamingHint_CompQuality = 0x0800, - KS_StreamingHint_CompWindowSize = 0x1000 -} KS_VideoStreamingHints; - -typedef struct { - KSPROPERTY Property; - ULONG StreamIndex; - LONG DefaultKeyFrameRate; - LONG DefaultPFrameRate; - LONG DefaultQuality; - LONG NumberOfQualitySettings; - LONG Capabilities; -} KSPROPERTY_VIDEOCOMPRESSION_GETINFO_S,*PKSPROPERTY_VIDEOCOMPRESSION_GETINFO_S; - -typedef struct { - KSPROPERTY Property; - ULONG StreamIndex; - LONG Value; -} KSPROPERTY_VIDEOCOMPRESSION_S,*PKSPROPERTY_VIDEOCOMPRESSION_S; - -typedef struct { - KSPROPERTY Property; - ULONG StreamIndex; - LONG Value; - ULONG Flags; -} KSPROPERTY_VIDEOCOMPRESSION_S1,*PKSPROPERTY_VIDEOCOMPRESSION_S1; - -#define STATIC_KSDATAFORMAT_SUBTYPE_OVERLAY \ - 0xe436eb7fL,0x524f,0x11ce,0x9f,0x53,0x00,0x20,0xaf,0x0b,0xa7,0x70 -DEFINE_GUIDSTRUCT("e436eb7f-524f-11ce-9f53-0020af0ba770",KSDATAFORMAT_SUBTYPE_OVERLAY); -#define KSDATAFORMAT_SUBTYPE_OVERLAY DEFINE_GUIDNAMED(KSDATAFORMAT_SUBTYPE_OVERLAY) - -#define STATIC_KSPROPSETID_OverlayUpdate \ - 0x490EA5CFL,0x7681,0x11D1,0xA2,0x1C,0x00,0xA0,0xC9,0x22,0x31,0x96 -DEFINE_GUIDSTRUCT("490EA5CF-7681-11D1-A21C-00A0C9223196",KSPROPSETID_OverlayUpdate); -#define KSPROPSETID_OverlayUpdate DEFINE_GUIDNAMED(KSPROPSETID_OverlayUpdate) - -typedef enum { - KSPROPERTY_OVERLAYUPDATE_INTERESTS, - KSPROPERTY_OVERLAYUPDATE_CLIPLIST = 0x1, - KSPROPERTY_OVERLAYUPDATE_PALETTE = 0x2, - KSPROPERTY_OVERLAYUPDATE_COLORKEY = 0x4, - KSPROPERTY_OVERLAYUPDATE_VIDEOPOSITION = 0x8, - KSPROPERTY_OVERLAYUPDATE_DISPLAYCHANGE = 0x10, - KSPROPERTY_OVERLAYUPDATE_COLORREF = 0x10000000 -} KSPROPERTY_OVERLAYUPDATE; - -typedef struct { - ULONG PelsWidth; - ULONG PelsHeight; - ULONG BitsPerPel; - WCHAR DeviceID[1]; -} KSDISPLAYCHANGE,*PKSDISPLAYCHANGE; - -#define DEFINE_KSPROPERTY_ITEM_OVERLAYUPDATE_INTERESTS(Handler) \ - DEFINE_KSPROPERTY_ITEM( \ - KSPROPERTY_OVERLAYUPDATE_INTERESTS, \ - (Handler), \ - sizeof(KSPROPERTY), \ - sizeof(ULONG), \ - NULL, NULL, 0, NULL, NULL, 0) - -#define DEFINE_KSPROPERTY_ITEM_OVERLAYUPDATE_PALETTE(Handler) \ - DEFINE_KSPROPERTY_ITEM( \ - KSPROPERTY_OVERLAYUPDATE_PALETTE, \ - NULL, \ - sizeof(KSPROPERTY), \ - 0, \ - (Handler), \ - NULL, 0, NULL, NULL, 0) - -#define DEFINE_KSPROPERTY_ITEM_OVERLAYUPDATE_COLORKEY(Handler) \ - DEFINE_KSPROPERTY_ITEM( \ - KSPROPERTY_OVERLAYUPDATE_COLORKEY, \ - NULL, \ - sizeof(KSPROPERTY), \ - sizeof(COLORKEY), \ - (Handler), \ - NULL, 0, NULL, NULL, 0) - -#define DEFINE_KSPROPERTY_ITEM_OVERLAYUPDATE_CLIPLIST(Handler) \ - DEFINE_KSPROPERTY_ITEM( \ - KSPROPERTY_OVERLAYUPDATE_CLIPLIST, \ - NULL, \ - sizeof(KSPROPERTY), \ - 2 *sizeof(RECT) + sizeof(RGNDATAHEADER),\ - (Handler), \ - NULL, 0, NULL, NULL, 0) - -#define DEFINE_KSPROPERTY_ITEM_OVERLAYUPDATE_VIDEOPOSITION(Handler) \ - DEFINE_KSPROPERTY_ITEM( \ - KSPROPERTY_OVERLAYUPDATE_VIDEOPOSITION, \ - NULL, \ - sizeof(KSPROPERTY), \ - 2 *sizeof(RECT), \ - (Handler), \ - NULL, 0, NULL, NULL, 0) - -#define DEFINE_KSPROPERTY_ITEM_OVERLAYUPDATE_DISPLAYCHANGE(Handler) \ - DEFINE_KSPROPERTY_ITEM( \ - KSPROPERTY_OVERLAYUPDATE_DISPLAYCHANGE, \ - NULL, \ - sizeof(KSPROPERTY), \ - sizeof(KSDISPLAYCHANGE), \ - (Handler), \ - NULL, 0, NULL, NULL, 0) - -#define DEFINE_KSPROPERTY_ITEM_OVERLAYUPDATE_COLORREF(Handler) \ - DEFINE_KSPROPERTY_ITEM( \ - KSPROPERTY_OVERLAYUPDATE_COLORREF, \ - (Handler), \ - sizeof(KSPROPERTY), \ - sizeof(COLORREF), \ - NULL, \ - NULL, 0, NULL, NULL, 0) - -#define STATIC_PROPSETID_VIDCAP_VIDEOCONTROL \ - 0x6a2e0670L,0x28e4,0x11d0,0xa1,0x8c,0x00,0xa0,0xc9,0x11,0x89,0x56 -DEFINE_GUIDSTRUCT("6a2e0670-28e4-11d0-a18c-00a0c9118956",PROPSETID_VIDCAP_VIDEOCONTROL); -#define PROPSETID_VIDCAP_VIDEOCONTROL DEFINE_GUIDNAMED(PROPSETID_VIDCAP_VIDEOCONTROL) - -typedef enum { - KSPROPERTY_VIDEOCONTROL_CAPS, - KSPROPERTY_VIDEOCONTROL_ACTUAL_FRAME_RATE, - KSPROPERTY_VIDEOCONTROL_FRAME_RATES, - KSPROPERTY_VIDEOCONTROL_MODE -} KSPROPERTY_VIDCAP_VIDEOCONTROL; - -typedef enum { - KS_VideoControlFlag_FlipHorizontal = 0x0001, - KS_VideoControlFlag_FlipVertical = 0x0002, - KS_Obsolete_VideoControlFlag_ExternalTriggerEnable = 0x0010, - KS_Obsolete_VideoControlFlag_Trigger = 0x0020, - KS_VideoControlFlag_ExternalTriggerEnable = 0x0004, - KS_VideoControlFlag_Trigger = 0x0008 -} KS_VideoControlFlags; - -typedef struct { - KSPROPERTY Property; - ULONG StreamIndex; - ULONG VideoControlCaps; -} KSPROPERTY_VIDEOCONTROL_CAPS_S,*PKSPROPERTY_VIDEOCONTROL_CAPS_S; - -typedef struct { - KSPROPERTY Property; - ULONG StreamIndex; - LONG Mode; -} KSPROPERTY_VIDEOCONTROL_MODE_S,*PKSPROPERTY_VIDEOCONTROL_MODE_S; - -typedef struct { - KSPROPERTY Property; - ULONG StreamIndex; - ULONG RangeIndex; - SIZE Dimensions; - LONGLONG CurrentActualFrameRate; - LONGLONG CurrentMaxAvailableFrameRate; -} KSPROPERTY_VIDEOCONTROL_ACTUAL_FRAME_RATE_S,*PKSPROPERTY_VIDEOCONTROL_ACTUAL_FRAME_RATE_S; - -typedef struct { - KSPROPERTY Property; - ULONG StreamIndex; - ULONG RangeIndex; - SIZE Dimensions; -} KSPROPERTY_VIDEOCONTROL_FRAME_RATES_S,*PKSPROPERTY_VIDEOCONTROL_FRAME_RATES_S; - -#define STATIC_PROPSETID_VIDCAP_DROPPEDFRAMES \ - 0xC6E13344L,0x30AC,0x11d0,0xa1,0x8c,0x00,0xa0,0xc9,0x11,0x89,0x56 -DEFINE_GUIDSTRUCT("C6E13344-30AC-11d0-A18C-00A0C9118956",PROPSETID_VIDCAP_DROPPEDFRAMES); -#define PROPSETID_VIDCAP_DROPPEDFRAMES DEFINE_GUIDNAMED(PROPSETID_VIDCAP_DROPPEDFRAMES) - -typedef enum { - KSPROPERTY_DROPPEDFRAMES_CURRENT -} KSPROPERTY_VIDCAP_DROPPEDFRAMES; - -typedef struct { - KSPROPERTY Property; - LONGLONG PictureNumber; - LONGLONG DropCount; - ULONG AverageFrameSize; -} KSPROPERTY_DROPPEDFRAMES_CURRENT_S,*PKSPROPERTY_DROPPEDFRAMES_CURRENT_S; - -#define STATIC_KSPROPSETID_VPConfig \ - 0xbc29a660L,0x30e3,0x11d0,0x9e,0x69,0x00,0xc0,0x4f,0xd7,0xc1,0x5b -DEFINE_GUIDSTRUCT("bc29a660-30e3-11d0-9e69-00c04fd7c15b",KSPROPSETID_VPConfig); -#define KSPROPSETID_VPConfig DEFINE_GUIDNAMED(KSPROPSETID_VPConfig) - -#define STATIC_KSPROPSETID_VPVBIConfig \ - 0xec529b00L,0x1a1f,0x11d1,0xba,0xd9,0x0,0x60,0x97,0x44,0x11,0x1a -DEFINE_GUIDSTRUCT("ec529b00-1a1f-11d1-bad9-00609744111a",KSPROPSETID_VPVBIConfig); -#define KSPROPSETID_VPVBIConfig DEFINE_GUIDNAMED(KSPROPSETID_VPVBIConfig) - -typedef enum { - KSPROPERTY_VPCONFIG_NUMCONNECTINFO, - KSPROPERTY_VPCONFIG_GETCONNECTINFO, - KSPROPERTY_VPCONFIG_SETCONNECTINFO, - KSPROPERTY_VPCONFIG_VPDATAINFO, - KSPROPERTY_VPCONFIG_MAXPIXELRATE, - KSPROPERTY_VPCONFIG_INFORMVPINPUT, - KSPROPERTY_VPCONFIG_NUMVIDEOFORMAT, - KSPROPERTY_VPCONFIG_GETVIDEOFORMAT, - KSPROPERTY_VPCONFIG_SETVIDEOFORMAT, - KSPROPERTY_VPCONFIG_INVERTPOLARITY, - KSPROPERTY_VPCONFIG_DECIMATIONCAPABILITY, - KSPROPERTY_VPCONFIG_SCALEFACTOR, - KSPROPERTY_VPCONFIG_DDRAWHANDLE, - KSPROPERTY_VPCONFIG_VIDEOPORTID, - KSPROPERTY_VPCONFIG_DDRAWSURFACEHANDLE, - KSPROPERTY_VPCONFIG_SURFACEPARAMS -} KSPROPERTY_VPCONFIG; - -#define STATIC_CLSID_KsIBasicAudioInterfaceHandler \ - 0xb9f8ac3e,0x0f71,0x11d2,0xb7,0x2c,0x00,0xc0,0x4f,0xb6,0xbd,0x3d -DEFINE_GUIDSTRUCT("b9f8ac3e-0f71-11d2-b72c-00c04fb6bd3d",CLSID_KsIBasicAudioInterfaceHandler); -#define CLSID_KsIBasicAudioInterfaceHandler DEFINE_GUIDNAMED(CLSID_KsIBasicAudioInterfaceHandler) - -#ifdef __IVPType__ -typedef struct { - AMVPSIZE Size; - DWORD MaxPixelsPerSecond; - DWORD Reserved; -} KSVPMAXPIXELRATE,*PKSVPMAXPIXELRATE; - -typedef struct { - KSPROPERTY Property; - AMVPSIZE Size; -} KSVPSIZE_PROP,*PKSVPSIZE_PROP; - -typedef struct { - DWORD dwPitch; - DWORD dwXOrigin; - DWORD dwYOrigin; -} KSVPSURFACEPARAMS,*PKSVPSURFACEPARAMS; -#else /* __IVPType__ */ - -#ifndef __DDRAW_INCLUDED__ -#define DDPF_FOURCC 0x00000004l - -typedef struct _DDPIXELFORMAT -{ - DWORD dwSize; - DWORD dwFlags; - DWORD dwFourCC; - __MINGW_EXTENSION union - { - DWORD dwRGBBitCount; - DWORD dwYUVBitCount; - DWORD dwZBufferBitDepth; - DWORD dwAlphaBitDepth; - }; - __MINGW_EXTENSION union - { - DWORD dwRBitMask; - DWORD dwYBitMask; - }; - __MINGW_EXTENSION union - { - DWORD dwGBitMask; - DWORD dwUBitMask; - }; - __MINGW_EXTENSION union - { - DWORD dwBBitMask; - DWORD dwVBitMask; - }; - __MINGW_EXTENSION union - { - DWORD dwRGBAlphaBitMask; - DWORD dwYUVAlphaBitMask; - DWORD dwRGBZBitMask; - DWORD dwYUVZBitMask; - }; -} DDPIXELFORMAT,*LPDDPIXELFORMAT; -#endif /* __DDRAW_INCLUDED__ */ - -#ifndef __DVP_INCLUDED__ -typedef struct _DDVIDEOPORTCONNECT { - DWORD dwSize; - DWORD dwPortWidth; - GUID guidTypeID; - DWORD dwFlags; - ULONG_PTR dwReserved1; -} DDVIDEOPORTCONNECT,*LPDDVIDEOPORTCONNECT; - -#define DDVPTYPE_E_HREFH_VREFH \ - 0x54F39980L,0xDA60,0x11CF,0x9B,0x06,0x00,0xA0,0xC9,0x03,0xA3,0xB8 - -#define DDVPTYPE_E_HREFL_VREFL \ - 0xE09C77E0L,0xDA60,0x11CF,0x9B,0x06,0x00,0xA0,0xC9,0x03,0xA3,0xB8 -#endif /* __DVP_INCLUDED__ */ - -typedef enum -{ - KS_PixAspectRatio_NTSC4x3, - KS_PixAspectRatio_NTSC16x9, - KS_PixAspectRatio_PAL4x3, - KS_PixAspectRatio_PAL16x9 -} KS_AMPixAspectRatio; - -typedef enum -{ - KS_AMVP_DO_NOT_CARE, - KS_AMVP_BEST_BANDWIDTH, - KS_AMVP_INPUT_SAME_AS_OUTPUT -} KS_AMVP_SELECTFORMATBY; - -typedef enum -{ - KS_AMVP_MODE_WEAVE, - KS_AMVP_MODE_BOBINTERLEAVED, - KS_AMVP_MODE_BOBNONINTERLEAVED, - KS_AMVP_MODE_SKIPEVEN, - KS_AMVP_MODE_SKIPODD -} KS_AMVP_MODE; - -typedef struct tagKS_AMVPDIMINFO -{ - DWORD dwFieldWidth; - DWORD dwFieldHeight; - DWORD dwVBIWidth; - DWORD dwVBIHeight; - RECT rcValidRegion; -} KS_AMVPDIMINFO,*PKS_AMVPDIMINFO; - -typedef struct tagKS_AMVPDATAINFO -{ - DWORD dwSize; - DWORD dwMicrosecondsPerField; - KS_AMVPDIMINFO amvpDimInfo; - DWORD dwPictAspectRatioX; - DWORD dwPictAspectRatioY; - WINBOOL bEnableDoubleClock; - WINBOOL bEnableVACT; - WINBOOL bDataIsInterlaced; - LONG lHalfLinesOdd; - WINBOOL bFieldPolarityInverted; - DWORD dwNumLinesInVREF; - LONG lHalfLinesEven; - DWORD dwReserved1; -} KS_AMVPDATAINFO,*PKS_AMVPDATAINFO; - -typedef struct tagKS_AMVPSIZE -{ - DWORD dwWidth; - DWORD dwHeight; -} KS_AMVPSIZE,*PKS_AMVPSIZE; - -typedef struct { - KS_AMVPSIZE Size; - DWORD MaxPixelsPerSecond; - DWORD Reserved; -} KSVPMAXPIXELRATE,*PKSVPMAXPIXELRATE; - -typedef struct { - KSPROPERTY Property; - KS_AMVPSIZE Size; -} KSVPSIZE_PROP,*PKSVPSIZE_PROP; - -typedef struct { - DWORD dwPitch; - DWORD dwXOrigin; - DWORD dwYOrigin; -} KSVPSURFACEPARAMS,*PKSVPSURFACEPARAMS; -#endif /* __IVPType__ */ - -#define STATIC_KSEVENTSETID_VPNotify \ - 0x20c5598eL,0xd3c8,0x11d0,0x8d,0xfc,0x00,0xc0,0x4f,0xd7,0xc0,0x8b -DEFINE_GUIDSTRUCT("20c5598e-d3c8-11d0-8dfc-00c04fd7c08b",KSEVENTSETID_VPNotify); -#define KSEVENTSETID_VPNotify DEFINE_GUIDNAMED(KSEVENTSETID_VPNotify) - -typedef enum { - KSEVENT_VPNOTIFY_FORMATCHANGE -} KSEVENT_VPNOTIFY; - -#define STATIC_KSEVENTSETID_VIDCAPTOSTI \ - 0xdb47de20,0xf628,0x11d1,0xba,0x41,0x0,0xa0,0xc9,0xd,0x2b,0x5 -DEFINE_GUIDSTRUCT("DB47DE20-F628-11d1-BA41-00A0C90D2B05",KSEVENTSETID_VIDCAPTOSTI); -#define KSEVENTSETID_VIDCAPNotify DEFINE_GUIDNAMED(KSEVENTSETID_VIDCAPTOSTI) - -typedef enum { - KSEVENT_VIDCAPTOSTI_EXT_TRIGGER, - KSEVENT_VIDCAP_AUTO_UPDATE, - KSEVENT_VIDCAP_SEARCH -} KSEVENT_VIDCAPTOSTI; - -typedef enum { - KSPROPERTY_EXTENSION_UNIT_INFO, - KSPROPERTY_EXTENSION_UNIT_CONTROL, - KSPROPERTY_EXTENSION_UNIT_PASS_THROUGH = 0xffff -} KSPROPERTY_EXTENSION_UNIT,*PKSPROPERTY_EXTENSION_UNIT; - -#define STATIC_KSEVENTSETID_VPVBINotify \ - 0xec529b01L,0x1a1f,0x11d1,0xba,0xd9,0x0,0x60,0x97,0x44,0x11,0x1a -DEFINE_GUIDSTRUCT("ec529b01-1a1f-11d1-bad9-00609744111a",KSEVENTSETID_VPVBINotify); -#define KSEVENTSETID_VPVBINotify DEFINE_GUIDNAMED(KSEVENTSETID_VPVBINotify) - -typedef enum { - KSEVENT_VPVBINOTIFY_FORMATCHANGE -} KSEVENT_VPVBINOTIFY; - -#define STATIC_KSDATAFORMAT_TYPE_AUXLine21Data \ - 0x670aea80L,0x3a82,0x11d0,0xb7,0x9b,0x00,0xaa,0x00,0x37,0x67,0xa7 -DEFINE_GUIDSTRUCT("670aea80-3a82-11d0-b79b-00aa003767a7",KSDATAFORMAT_TYPE_AUXLine21Data); -#define KSDATAFORMAT_TYPE_AUXLine21Data DEFINE_GUIDNAMED(KSDATAFORMAT_TYPE_AUXLine21Data) - -#define STATIC_KSDATAFORMAT_SUBTYPE_Line21_BytePair \ - 0x6e8d4a22L,0x310c,0x11d0,0xb7,0x9a,0x00,0xaa,0x00,0x37,0x67,0xa7 -DEFINE_GUIDSTRUCT("6e8d4a22-310c-11d0-b79a-00aa003767a7",KSDATAFORMAT_SUBTYPE_Line21_BytePair); -#define KSDATAFORMAT_SUBTYPE_Line21_BytePair DEFINE_GUIDNAMED(KSDATAFORMAT_SUBTYPE_Line21_BytePair) - -#define STATIC_KSDATAFORMAT_SUBTYPE_Line21_GOPPacket \ - 0x6e8d4a23L,0x310c,0x11d0,0xb7,0x9a,0x00,0xaa,0x00,0x37,0x67,0xa7 -DEFINE_GUIDSTRUCT("6e8d4a23-310c-11d0-b79a-00aa003767a7",KSDATAFORMAT_SUBTYPE_Line21_GOPPacket); -#define KSDATAFORMAT_SUBTYPE_Line21_GOPPacket DEFINE_GUIDNAMED(KSDATAFORMAT_SUBTYPE_Line21_GOPPacket) - -typedef struct _KSGOP_USERDATA { - ULONG sc; - ULONG reserved1; - BYTE cFields; - CHAR l21Data[3]; -} KSGOP_USERDATA,*PKSGOP_USERDATA; - -#define STATIC_KSDATAFORMAT_TYPE_DVD_ENCRYPTED_PACK \ - 0xed0b916a,0x044d,0x11d1,0xaa,0x78,0x00,0xc0,0x4f,0xc3,0x1d,0x60 -DEFINE_GUIDSTRUCT("ed0b916a-044d-11d1-aa78-00c04fc31d60",KSDATAFORMAT_TYPE_DVD_ENCRYPTED_PACK); -#define KSDATAFORMAT_TYPE_DVD_ENCRYPTED_PACK DEFINE_GUIDNAMED(KSDATAFORMAT_TYPE_DVD_ENCRYPTED_PACK) - -#define KS_AM_UseNewCSSKey 0x1 - -#define STATIC_KSPROPSETID_TSRateChange \ - 0xa503c5c0,0x1d1d,0x11d1,0xad,0x80,0x44,0x45,0x53,0x54,0x0,0x0 -DEFINE_GUIDSTRUCT("A503C5C0-1D1D-11D1-AD80-444553540000",KSPROPSETID_TSRateChange); -#define KSPROPSETID_TSRateChange DEFINE_GUIDNAMED(KSPROPSETID_TSRateChange) - -typedef enum { - KS_AM_RATE_SimpleRateChange = 1, - KS_AM_RATE_ExactRateChange = 2, - KS_AM_RATE_MaxFullDataRate = 3, - KS_AM_RATE_Step = 4 -} KS_AM_PROPERTY_TS_RATE_CHANGE; - -typedef struct { - REFERENCE_TIME StartTime; - LONG Rate; -} KS_AM_SimpleRateChange,*PKS_AM_SimpleRateChange; - -typedef struct { - REFERENCE_TIME OutputZeroTime; - LONG Rate; -} KS_AM_ExactRateChange,*PKS_AM_ExactRateChange; - -typedef LONG KS_AM_MaxFullDataRate; -typedef DWORD KS_AM_Step; - -#define STATIC_KSCATEGORY_ENCODER \ - 0x19689bf6,0xc384,0x48fd,0xad,0x51,0x90,0xe5,0x8c,0x79,0xf7,0xb -DEFINE_GUIDSTRUCT("19689BF6-C384-48fd-AD51-90E58C79F70B",KSCATEGORY_ENCODER); -#define KSCATEGORY_ENCODER DEFINE_GUIDNAMED(KSCATEGORY_ENCODER) - -#define STATIC_KSCATEGORY_MULTIPLEXER \ - 0x7a5de1d3,0x1a1,0x452c,0xb4,0x81,0x4f,0xa2,0xb9,0x62,0x71,0xe8 -DEFINE_GUIDSTRUCT("7A5DE1D3-01A1-452c-B481-4FA2B96271E8",KSCATEGORY_MULTIPLEXER); -#define KSCATEGORY_MULTIPLEXER DEFINE_GUIDNAMED(KSCATEGORY_MULTIPLEXER) - -#ifndef __ENCODER_API_GUIDS__ -#define __ENCODER_API_GUIDS__ - -#define STATIC_ENCAPIPARAM_BITRATE \ - 0x49cc4c43,0xca83,0x4ad4,0xa9,0xaf,0xf3,0x69,0x6a,0xf6,0x66,0xdf -DEFINE_GUIDSTRUCT("49CC4C43-CA83-4ad4-A9AF-F3696AF666DF",ENCAPIPARAM_BITRATE); -#define ENCAPIPARAM_BITRATE DEFINE_GUIDNAMED(ENCAPIPARAM_BITRATE) - -#define STATIC_ENCAPIPARAM_PEAK_BITRATE \ - 0x703f16a9,0x3d48,0x44a1,0xb0,0x77,0x1,0x8d,0xff,0x91,0x5d,0x19 -DEFINE_GUIDSTRUCT("703F16A9-3D48-44a1-B077-018DFF915D19",ENCAPIPARAM_PEAK_BITRATE); -#define ENCAPIPARAM_PEAK_BITRATE DEFINE_GUIDNAMED(ENCAPIPARAM_PEAK_BITRATE) - -#define STATIC_ENCAPIPARAM_BITRATE_MODE \ - 0xee5fb25c,0xc713,0x40d1,0x9d,0x58,0xc0,0xd7,0x24,0x1e,0x25,0xf -DEFINE_GUIDSTRUCT("EE5FB25C-C713-40d1-9D58-C0D7241E250F",ENCAPIPARAM_BITRATE_MODE); -#define ENCAPIPARAM_BITRATE_MODE DEFINE_GUIDNAMED(ENCAPIPARAM_BITRATE_MODE) - -#define STATIC_CODECAPI_CHANGELISTS \ - 0x62b12acf,0xf6b0,0x47d9,0x94,0x56,0x96,0xf2,0x2c,0x4e,0x0b,0x9d -DEFINE_GUIDSTRUCT("62B12ACF-F6B0-47D9-9456-96F22C4E0B9D",CODECAPI_CHANGELISTS); -#define CODECAPI_CHANGELISTS DEFINE_GUIDNAMED(CODECAPI_CHANGELISTS) - -#define STATIC_CODECAPI_VIDEO_ENCODER \ - 0x7112e8e1,0x3d03,0x47ef,0x8e,0x60,0x03,0xf1,0xcf,0x53,0x73,0x01 -DEFINE_GUIDSTRUCT("7112E8E1-3D03-47EF-8E60-03F1CF537301",CODECAPI_VIDEO_ENCODER); -#define CODECAPI_VIDEO_ENCODER DEFINE_GUIDNAMED(CODECAPI_VIDEO_ENCODER) - -#define STATIC_CODECAPI_AUDIO_ENCODER \ - 0xb9d19a3e,0xf897,0x429c,0xbc,0x46,0x81,0x38,0xb7,0x27,0x2b,0x2d -DEFINE_GUIDSTRUCT("B9D19A3E-F897-429C-BC46-8138B7272B2D",CODECAPI_AUDIO_ENCODER); -#define CODECAPI_AUDIO_ENCODER DEFINE_GUIDNAMED(CODECAPI_AUDIO_ENCODER) - -#define STATIC_CODECAPI_SETALLDEFAULTS \ - 0x6c5e6a7c,0xacf8,0x4f55,0xa9,0x99,0x1a,0x62,0x81,0x09,0x05,0x1b -DEFINE_GUIDSTRUCT("6C5E6A7C-ACF8-4F55-A999-1A628109051B",CODECAPI_SETALLDEFAULTS); -#define CODECAPI_SETALLDEFAULTS DEFINE_GUIDNAMED(CODECAPI_SETALLDEFAULTS) - -#define STATIC_CODECAPI_ALLSETTINGS \ - 0x6a577e92,0x83e1,0x4113,0xad,0xc2,0x4f,0xce,0xc3,0x2f,0x83,0xa1 -DEFINE_GUIDSTRUCT("6A577E92-83E1-4113-ADC2-4FCEC32F83A1",CODECAPI_ALLSETTINGS); -#define CODECAPI_ALLSETTINGS DEFINE_GUIDNAMED(CODECAPI_ALLSETTINGS) - -#define STATIC_CODECAPI_SUPPORTSEVENTS \ - 0x0581af97,0x7693,0x4dbd,0x9d,0xca,0x3f,0x9e,0xbd,0x65,0x85,0xa1 -DEFINE_GUIDSTRUCT("0581AF97-7693-4DBD-9DCA-3F9EBD6585A1",CODECAPI_SUPPORTSEVENTS); -#define CODECAPI_SUPPORTSEVENTS DEFINE_GUIDNAMED(CODECAPI_SUPPORTSEVENTS) - -#define STATIC_CODECAPI_CURRENTCHANGELIST \ - 0x1cb14e83,0x7d72,0x4657,0x83,0xfd,0x47,0xa2,0xc5,0xb9,0xd1,0x3d -DEFINE_GUIDSTRUCT("1CB14E83-7D72-4657-83FD-47A2C5B9D13D",CODECAPI_CURRENTCHANGELIST); -#define CODECAPI_CURRENTCHANGELIST DEFINE_GUIDNAMED(CODECAPI_CURRENTCHANGELIST) -#endif /* __ENCODER_API_GUIDS__ */ - -#ifndef __ENCODER_API_DEFINES__ -#define __ENCODER_API_DEFINES__ -typedef enum { - ConstantBitRate = 0, - VariableBitRateAverage, - VariableBitRatePeak -} VIDEOENCODER_BITRATE_MODE; -#endif /* __ENCODER_API_DEFINES__ */ - -#define STATIC_KSPROPSETID_Jack\ - 0x4509f757, 0x2d46, 0x4637, 0x8e, 0x62, 0xce, 0x7d, 0xb9, 0x44, 0xf5, 0x7b -DEFINE_GUIDSTRUCT("4509F757-2D46-4637-8E62-CE7DB944F57B", KSPROPSETID_Jack); -#define KSPROPSETID_Jack DEFINE_GUIDNAMED(KSPROPSETID_Jack) - -typedef enum { - KSPROPERTY_JACK_DESCRIPTION = 1, - KSPROPERTY_JACK_DESCRIPTION2, - KSPROPERTY_JACK_SINK_INFO -} KSPROPERTY_JACK; - -typedef enum -{ - eConnTypeUnknown, - eConnType3Point5mm, - eConnTypeQuarter, - eConnTypeAtapiInternal, - eConnTypeRCA, - eConnTypeOptical, - eConnTypeOtherDigital, - eConnTypeOtherAnalog, - eConnTypeMultichannelAnalogDIN, - eConnTypeXlrProfessional, - eConnTypeRJ11Modem, - eConnTypeCombination -} EPcxConnectionType; - -typedef enum -{ - eGeoLocRear = 0x1, - eGeoLocFront, - eGeoLocLeft, - eGeoLocRight, - eGeoLocTop, - eGeoLocBottom, - eGeoLocRearPanel, - eGeoLocRiser, - eGeoLocInsideMobileLid, - eGeoLocDrivebay, - eGeoLocHDMI, - eGeoLocOutsideMobileLid, - eGeoLocATAPI, - eGeoLocReserved5, - eGeoLocReserved6, - EPcxGeoLocation_enum_count -} EPcxGeoLocation; - -typedef enum -{ - eGenLocPrimaryBox = 0, - eGenLocInternal, - eGenLocSeparate, - eGenLocOther, - EPcxGenLocation_enum_count -} EPcxGenLocation; - -typedef enum -{ - ePortConnJack = 0, - ePortConnIntegratedDevice, - ePortConnBothIntegratedAndJack, - ePortConnUnknown -} EPxcPortConnection; - -typedef struct -{ - DWORD ChannelMapping; - COLORREF Color; - EPcxConnectionType ConnectionType; - EPcxGeoLocation GeoLocation; - EPcxGenLocation GenLocation; - EPxcPortConnection PortConnection; - BOOL IsConnected; -} KSJACK_DESCRIPTION, *PKSJACK_DESCRIPTION; - -typedef enum -{ - KSJACK_SINK_CONNECTIONTYPE_HDMI = 0, - KSJACK_SINK_CONNECTIONTYPE_DISPLAYPORT, -} KSJACK_SINK_CONNECTIONTYPE; - -#define MAX_SINK_DESCRIPTION_NAME_LENGTH 32 -typedef struct _tagKSJACK_SINK_INFORMATION -{ - KSJACK_SINK_CONNECTIONTYPE ConnType; - WORD ManufacturerId; - WORD ProductId; - WORD AudioLatency; - BOOL HDCPCapable; - BOOL AICapable; - UCHAR SinkDescriptionLength; - WCHAR SinkDescription[MAX_SINK_DESCRIPTION_NAME_LENGTH]; - LUID PortId; -} KSJACK_SINK_INFORMATION, *PKSJACK_SINK_INFORMATION; - -#define JACKDESC2_PRESENCE_DETECT_CAPABILITY 0x00000001 -#define JACKDESC2_DYNAMIC_FORMAT_CHANGE_CAPABILITY 0x00000002 - -typedef struct _tagKSJACK_DESCRIPTION2 -{ - DWORD DeviceStateInfo; - DWORD JackCapabilities; -} KSJACK_DESCRIPTION2, *PKSJACK_DESCRIPTION2; - -/* Additional structs for Windows Vista and later */ -typedef struct _tagKSRTAUDIO_BUFFER_PROPERTY { - KSPROPERTY Property; - PVOID BaseAddress; - ULONG RequestedBufferSize; -} KSRTAUDIO_BUFFER_PROPERTY, *PKSRTAUDIO_BUFFER_PROPERTY; - -typedef struct _tagKSRTAUDIO_BUFFER_PROPERTY_WITH_NOTIFICATION { - KSPROPERTY Property; - PVOID BaseAddress; - ULONG RequestedBufferSize; - ULONG NotificationCount; -} KSRTAUDIO_BUFFER_PROPERTY_WITH_NOTIFICATION, *PKSRTAUDIO_BUFFER_PROPERTY_WITH_NOTIFICATION; - -typedef struct _tagKSRTAUDIO_BUFFER { - PVOID BufferAddress; - ULONG ActualBufferSize; - BOOL CallMemoryBarrier; -} KSRTAUDIO_BUFFER, *PKSRTAUDIO_BUFFER; - -typedef struct _tagKSRTAUDIO_HWLATENCY { - ULONG FifoSize; - ULONG ChipsetDelay; - ULONG CodecDelay; -} KSRTAUDIO_HWLATENCY, *PKSRTAUDIO_HWLATENCY; - -typedef struct _tagKSRTAUDIO_HWREGISTER_PROPERTY { - KSPROPERTY Property; - PVOID BaseAddress; -} KSRTAUDIO_HWREGISTER_PROPERTY, *PKSRTAUDIO_HWREGISTER_PROPERTY; - -typedef struct _tagKSRTAUDIO_HWREGISTER { - PVOID Register; - ULONG Width; - ULONGLONG Numerator; - ULONGLONG Denominator; - ULONG Accuracy; -} KSRTAUDIO_HWREGISTER, *PKSRTAUDIO_HWREGISTER; - -typedef struct _tagKSRTAUDIO_NOTIFICATION_EVENT_PROPERTY { - KSPROPERTY Property; - HANDLE NotificationEvent; -} KSRTAUDIO_NOTIFICATION_EVENT_PROPERTY, *PKSRTAUDIO_NOTIFICATION_EVENT_PROPERTY; - - -#endif /* _KSMEDIA_ */ - diff --git a/portaudio/src/hostapi/wasapi/mingw-include/ksproxy.h b/portaudio/src/hostapi/wasapi/mingw-include/ksproxy.h deleted file mode 100644 index fcbc6b3..0000000 --- a/portaudio/src/hostapi/wasapi/mingw-include/ksproxy.h +++ /dev/null @@ -1,638 +0,0 @@ -/** - * This file has no copyright assigned and is placed in the Public Domain. - * This file is part of the w64 mingw-runtime package. - * No warranty is given; refer to the file DISCLAIMER.PD within this package. - */ -#ifndef __KSPROXY__ -#define __KSPROXY__ - -#ifdef __cplusplus -extern "C" { -#endif - -#undef KSDDKAPI -#ifdef _KSDDK_ -#define KSDDKAPI -#else -#define KSDDKAPI DECLSPEC_IMPORT -#endif - -#define STATIC_IID_IKsObject \ - 0x423c13a2L,0x2070,0x11d0,0x9e,0xf7,0x00,0xaa,0x00,0xa2,0x16,0xa1 - -#define STATIC_IID_IKsPinEx \ - 0x7bb38260L,0xd19c,0x11d2,0xb3,0x8a,0x00,0xa0,0xc9,0x5e,0xc2,0x2e - -#define STATIC_IID_IKsPin \ - 0xb61178d1L,0xa2d9,0x11cf,0x9e,0x53,0x00,0xaa,0x00,0xa2,0x16,0xa1 - -#define STATIC_IID_IKsPinPipe \ - 0xe539cd90L,0xa8b4,0x11d1,0x81,0x89,0x00,0xa0,0xc9,0x06,0x28,0x02 - -#define STATIC_IID_IKsDataTypeHandler \ - 0x5ffbaa02L,0x49a3,0x11d0,0x9f,0x36,0x00,0xaa,0x00,0xa2,0x16,0xa1 - -#define STATIC_IID_IKsDataTypeCompletion \ - 0x827D1A0EL,0x0F73,0x11D2,0xB2,0x7A,0x00,0xA0,0xC9,0x22,0x31,0x96 - -#define STATIC_IID_IKsInterfaceHandler \ - 0xD3ABC7E0L,0x9A61,0x11D0,0xA4,0x0D,0x00,0xA0,0xC9,0x22,0x31,0x96 - -#define STATIC_IID_IKsClockPropertySet \ - 0x5C5CBD84L,0xE755,0x11D0,0xAC,0x18,0x00,0xA0,0xC9,0x22,0x31,0x96 - -#define STATIC_IID_IKsAllocator \ - 0x8da64899L,0xc0d9,0x11d0,0x84,0x13,0x00,0x00,0xf8,0x22,0xfe,0x8a - -#define STATIC_IID_IKsAllocatorEx \ - 0x091bb63aL,0x603f,0x11d1,0xb0,0x67,0x00,0xa0,0xc9,0x06,0x28,0x02 - -#ifndef STATIC_IID_IKsPropertySet -#define STATIC_IID_IKsPropertySet \ - 0x31EFAC30L,0x515C,0x11d0,0xA9,0xAA,0x00,0xAA,0x00,0x61,0xBE,0x93 -#endif - -#define STATIC_IID_IKsTopology \ - 0x28F54683L,0x06FD,0x11D2,0xB2,0x7A,0x00,0xA0,0xC9,0x22,0x31,0x96 - -#ifndef STATIC_IID_IKsControl -#define STATIC_IID_IKsControl \ - 0x28F54685L,0x06FD,0x11D2,0xB2,0x7A,0x00,0xA0,0xC9,0x22,0x31,0x96 -#endif - -#define STATIC_IID_IKsAggregateControl \ - 0x7F40EAC0L,0x3947,0x11D2,0x87,0x4E,0x00,0xA0,0xC9,0x22,0x31,0x96 - -#define STATIC_CLSID_Proxy \ - 0x17CCA71BL,0xECD7,0x11D0,0xB9,0x08,0x00,0xA0,0xC9,0x22,0x31,0x96 - -#ifdef _KS_ - -DEFINE_GUIDEX(IID_IKsObject); - -DEFINE_GUIDEX(IID_IKsPin); - -DEFINE_GUIDEX(IID_IKsPinEx); - -DEFINE_GUIDEX(IID_IKsPinPipe); - -DEFINE_GUIDEX(IID_IKsDataTypeHandler); - -DEFINE_GUIDEX(IID_IKsDataTypeCompletion); - -DEFINE_GUIDEX(IID_IKsInterfaceHandler); - -DEFINE_GUIDEX(IID_IKsClockPropertySet); - -DEFINE_GUIDEX(IID_IKsAllocator); - -DEFINE_GUIDEX(IID_IKsAllocatorEx); - -#define IID_IKsQualityForwarder KSCATEGORY_QUALITY -#define STATIC_IID_IKsQualityForwarder STATIC_KSCATEGORY_QUALITY - -typedef enum { - KsAllocatorMode_User, - KsAllocatorMode_Kernel -} KSALLOCATORMODE; - -typedef enum { - FramingProp_Uninitialized, - FramingProp_None, - FramingProp_Old, - FramingProp_Ex -} FRAMING_PROP; - -typedef FRAMING_PROP *PFRAMING_PROP; - -typedef enum { - Framing_Cache_Update, - Framing_Cache_ReadLast, - Framing_Cache_ReadOrig, - Framing_Cache_Write -} FRAMING_CACHE_OPS; - -typedef struct { - LONGLONG MinTotalNominator; - LONGLONG MaxTotalNominator; - LONGLONG TotalDenominator; -} OPTIMAL_WEIGHT_TOTALS; - -typedef struct IPin IPin; -typedef struct IKsPin IKsPin; -typedef struct IKsAllocator IKsAllocator; -typedef struct IKsAllocatorEx IKsAllocatorEx; - -#define AllocatorStrategy_DontCare 0 -#define AllocatorStrategy_MinimizeNumberOfFrames 0x00000001 -#define AllocatorStrategy_MinimizeFrameSize 0x00000002 -#define AllocatorStrategy_MinimizeNumberOfAllocators 0x00000004 -#define AllocatorStrategy_MaximizeSpeed 0x00000008 - -#define PipeFactor_None 0 -#define PipeFactor_UserModeUpstream 0x00000001 -#define PipeFactor_UserModeDownstream 0x00000002 -#define PipeFactor_MemoryTypes 0x00000004 -#define PipeFactor_Flags 0x00000008 -#define PipeFactor_PhysicalRanges 0x00000010 -#define PipeFactor_OptimalRanges 0x00000020 -#define PipeFactor_FixedCompression 0x00000040 -#define PipeFactor_UnknownCompression 0x00000080 - -#define PipeFactor_Buffers 0x00000100 -#define PipeFactor_Align 0x00000200 -#define PipeFactor_PhysicalEnd 0x00000400 -#define PipeFactor_LogicalEnd 0x00000800 - -typedef enum { - PipeState_DontCare, - PipeState_RangeNotFixed, - PipeState_RangeFixed, - PipeState_CompressionUnknown, - PipeState_Finalized -} PIPE_STATE; - -typedef struct _PIPE_DIMENSIONS { - KS_COMPRESSION AllocatorPin; - KS_COMPRESSION MaxExpansionPin; - KS_COMPRESSION EndPin; -} PIPE_DIMENSIONS,*PPIPE_DIMENSIONS; - -typedef enum { - Pipe_Allocator_None, - Pipe_Allocator_FirstPin, - Pipe_Allocator_LastPin, - Pipe_Allocator_MiddlePin -} PIPE_ALLOCATOR_PLACE; - -typedef PIPE_ALLOCATOR_PLACE *PPIPE_ALLOCATOR_PLACE; - -typedef enum { - KS_MemoryTypeDontCare = 0, - KS_MemoryTypeKernelPaged, - KS_MemoryTypeKernelNonPaged, - KS_MemoryTypeDeviceHostMapped, - KS_MemoryTypeDeviceSpecific, - KS_MemoryTypeUser, - KS_MemoryTypeAnyHost -} KS_LogicalMemoryType; - -typedef KS_LogicalMemoryType *PKS_LogicalMemoryType; - -typedef struct _PIPE_TERMINATION { - ULONG Flags; - ULONG OutsideFactors; - ULONG Weigth; - KS_FRAMING_RANGE PhysicalRange; - KS_FRAMING_RANGE_WEIGHTED OptimalRange; - KS_COMPRESSION Compression; -} PIPE_TERMINATION; - -typedef struct _ALLOCATOR_PROPERTIES_EX -{ - long cBuffers; - long cbBuffer; - long cbAlign; - long cbPrefix; - - GUID MemoryType; - GUID BusType; - PIPE_STATE State; - PIPE_TERMINATION Input; - PIPE_TERMINATION Output; - ULONG Strategy; - ULONG Flags; - ULONG Weight; - KS_LogicalMemoryType LogicalMemoryType; - PIPE_ALLOCATOR_PLACE AllocatorPlace; - PIPE_DIMENSIONS Dimensions; - KS_FRAMING_RANGE PhysicalRange; - IKsAllocatorEx *PrevSegment; - ULONG CountNextSegments; - IKsAllocatorEx **NextSegments; - ULONG InsideFactors; - ULONG NumberPins; -} ALLOCATOR_PROPERTIES_EX; - -typedef ALLOCATOR_PROPERTIES_EX *PALLOCATOR_PROPERTIES_EX; - -#ifdef __STREAMS__ - -struct IKsClockPropertySet; -#undef INTERFACE -#define INTERFACE IKsClockPropertySet -DECLARE_INTERFACE_(IKsClockPropertySet,IUnknown) -{ - STDMETHOD(KsGetTime) (THIS_ - LONGLONG *Time - ) PURE; - STDMETHOD(KsSetTime) (THIS_ - LONGLONG Time - ) PURE; - STDMETHOD(KsGetPhysicalTime) (THIS_ - LONGLONG *Time - ) PURE; - STDMETHOD(KsSetPhysicalTime) (THIS_ - LONGLONG Time - ) PURE; - STDMETHOD(KsGetCorrelatedTime) (THIS_ - KSCORRELATED_TIME *CorrelatedTime - ) PURE; - STDMETHOD(KsSetCorrelatedTime) (THIS_ - KSCORRELATED_TIME *CorrelatedTime - ) PURE; - STDMETHOD(KsGetCorrelatedPhysicalTime)(THIS_ - KSCORRELATED_TIME *CorrelatedTime - ) PURE; - STDMETHOD(KsSetCorrelatedPhysicalTime)(THIS_ - KSCORRELATED_TIME *CorrelatedTime - ) PURE; - STDMETHOD(KsGetResolution) (THIS_ - KSRESOLUTION *Resolution - ) PURE; - STDMETHOD(KsGetState) (THIS_ - KSSTATE *State - ) PURE; -}; - -struct IKsAllocator; -#undef INTERFACE -#define INTERFACE IKsAllocator -DECLARE_INTERFACE_(IKsAllocator,IUnknown) -{ - STDMETHOD_(HANDLE,KsGetAllocatorHandle)(THIS) PURE; - STDMETHOD_(KSALLOCATORMODE,KsGetAllocatorMode)(THIS) PURE; - STDMETHOD(KsGetAllocatorStatus) (THIS_ - PKSSTREAMALLOCATOR_STATUS AllocatorStatus - ) PURE; - STDMETHOD_(VOID,KsSetAllocatorMode) (THIS_ - KSALLOCATORMODE Mode - ) PURE; -}; - -struct IKsAllocatorEx; -#undef INTERFACE -#define INTERFACE IKsAllocatorEx -DECLARE_INTERFACE_(IKsAllocatorEx,IKsAllocator) -{ - STDMETHOD_(PALLOCATOR_PROPERTIES_EX,KsGetProperties)(THIS) PURE; - STDMETHOD_(VOID,KsSetProperties) (THIS_ - PALLOCATOR_PROPERTIES_EX - ) PURE; - STDMETHOD_(VOID,KsSetAllocatorHandle) (THIS_ - HANDLE AllocatorHandle - ) PURE; - STDMETHOD_(HANDLE,KsCreateAllocatorAndGetHandle)(THIS_ - IKsPin *KsPin - ) PURE; -}; - -typedef enum { - KsPeekOperation_PeekOnly, - KsPeekOperation_AddRef -} KSPEEKOPERATION; - -typedef struct _KSSTREAM_SEGMENT *PKSSTREAM_SEGMENT; -struct IKsPin; - -#undef INTERFACE -#define INTERFACE IKsPin -DECLARE_INTERFACE_(IKsPin,IUnknown) -{ - STDMETHOD(KsQueryMediums) (THIS_ - PKSMULTIPLE_ITEM *MediumList - ) PURE; - STDMETHOD(KsQueryInterfaces) (THIS_ - PKSMULTIPLE_ITEM *InterfaceList - ) PURE; - STDMETHOD(KsCreateSinkPinHandle) (THIS_ - KSPIN_INTERFACE& Interface, - KSPIN_MEDIUM& Medium - ) PURE; - STDMETHOD(KsGetCurrentCommunication) (THIS_ - KSPIN_COMMUNICATION *Communication, - KSPIN_INTERFACE *Interface, - KSPIN_MEDIUM *Medium - ) PURE; - STDMETHOD(KsPropagateAcquire) (THIS) PURE; - STDMETHOD(KsDeliver) (THIS_ - IMediaSample *Sample, - ULONG Flags - ) PURE; - STDMETHOD(KsMediaSamplesCompleted) (THIS_ - PKSSTREAM_SEGMENT StreamSegment - ) PURE; - STDMETHOD_(IMemAllocator *,KsPeekAllocator)(THIS_ - KSPEEKOPERATION Operation - ) PURE; - STDMETHOD(KsReceiveAllocator) (THIS_ - IMemAllocator *MemAllocator - ) PURE; - STDMETHOD(KsRenegotiateAllocator) (THIS) PURE; - STDMETHOD_(LONG,KsIncrementPendingIoCount)(THIS) PURE; - STDMETHOD_(LONG,KsDecrementPendingIoCount)(THIS) PURE; - STDMETHOD(KsQualityNotify) (THIS_ - ULONG Proportion, - REFERENCE_TIME TimeDelta - ) PURE; -}; - -struct IKsPinEx; -#undef INTERFACE -#define INTERFACE IKsPinEx -DECLARE_INTERFACE_(IKsPinEx,IKsPin) -{ - STDMETHOD_(VOID,KsNotifyError) (THIS_ - IMediaSample *Sample, - HRESULT hr - ) PURE; -}; - -struct IKsPinPipe; -#undef INTERFACE -#define INTERFACE IKsPinPipe -DECLARE_INTERFACE_(IKsPinPipe,IUnknown) -{ - STDMETHOD(KsGetPinFramingCache) (THIS_ - PKSALLOCATOR_FRAMING_EX *FramingEx, - PFRAMING_PROP FramingProp, - FRAMING_CACHE_OPS Option - ) PURE; - STDMETHOD(KsSetPinFramingCache) (THIS_ - PKSALLOCATOR_FRAMING_EX FramingEx, - PFRAMING_PROP FramingProp, - FRAMING_CACHE_OPS Option - ) PURE; - STDMETHOD_(IPin*,KsGetConnectedPin) (THIS) PURE; - STDMETHOD_(IKsAllocatorEx*,KsGetPipe) (THIS_ - KSPEEKOPERATION Operation - ) PURE; - STDMETHOD(KsSetPipe) (THIS_ - IKsAllocatorEx *KsAllocator - ) PURE; - STDMETHOD_(ULONG,KsGetPipeAllocatorFlag)(THIS) PURE; - STDMETHOD(KsSetPipeAllocatorFlag) (THIS_ - ULONG Flag - ) PURE; - STDMETHOD_(GUID,KsGetPinBusCache) (THIS) PURE; - STDMETHOD(KsSetPinBusCache) (THIS_ - GUID Bus - ) PURE; - STDMETHOD_(PWCHAR,KsGetPinName) (THIS) PURE; - STDMETHOD_(PWCHAR,KsGetFilterName) (THIS) PURE; -}; - -struct IKsPinFactory; -#undef INTERFACE -#define INTERFACE IKsPinFactory -DECLARE_INTERFACE_(IKsPinFactory,IUnknown) -{ - STDMETHOD(KsPinFactory) (THIS_ - ULONG *PinFactory - ) PURE; -}; - -typedef enum { - KsIoOperation_Write, - KsIoOperation_Read -} KSIOOPERATION; - -struct IKsDataTypeHandler; -#undef INTERFACE -#define INTERFACE IKsDataTypeHandler -DECLARE_INTERFACE_(IKsDataTypeHandler,IUnknown) -{ - STDMETHOD(KsCompleteIoOperation) (THIS_ - IMediaSample *Sample, - PVOID StreamHeader, - KSIOOPERATION IoOperation, - WINBOOL Cancelled - ) PURE; - STDMETHOD(KsIsMediaTypeInRanges) (THIS_ - PVOID DataRanges - ) PURE; - STDMETHOD(KsPrepareIoOperation) (THIS_ - IMediaSample *Sample, - PVOID StreamHeader, - KSIOOPERATION IoOperation - ) PURE; - STDMETHOD(KsQueryExtendedSize) (THIS_ - ULONG *ExtendedSize - ) PURE; - STDMETHOD(KsSetMediaType) (THIS_ - const AM_MEDIA_TYPE *AmMediaType - ) PURE; -}; - -struct IKsDataTypeCompletion; -#undef INTERFACE -#define INTERFACE IKsDataTypeCompletion -DECLARE_INTERFACE_(IKsDataTypeCompletion,IUnknown) -{ - STDMETHOD(KsCompleteMediaType) (THIS_ - HANDLE FilterHandle, - ULONG PinFactoryId, - AM_MEDIA_TYPE *AmMediaType - ) PURE; -}; - -struct IKsInterfaceHandler; -#undef INTERFACE -#define INTERFACE IKsInterfaceHandler -DECLARE_INTERFACE_(IKsInterfaceHandler,IUnknown) -{ - STDMETHOD(KsSetPin) (THIS_ - IKsPin *KsPin - ) PURE; - STDMETHOD(KsProcessMediaSamples) (THIS_ - IKsDataTypeHandler *KsDataTypeHandler, - IMediaSample **SampleList, - PLONG SampleCount, - KSIOOPERATION IoOperation, - PKSSTREAM_SEGMENT *StreamSegment - ) PURE; - STDMETHOD(KsCompleteIo) (THIS_ - PKSSTREAM_SEGMENT StreamSegment - ) PURE; -}; - -typedef struct _KSSTREAM_SEGMENT { - IKsInterfaceHandler *KsInterfaceHandler; - IKsDataTypeHandler *KsDataTypeHandler; - KSIOOPERATION IoOperation; - HANDLE CompletionEvent; -} KSSTREAM_SEGMENT; - -struct IKsObject; -#undef INTERFACE -#define INTERFACE IKsObject -DECLARE_INTERFACE_(IKsObject,IUnknown) -{ - STDMETHOD_(HANDLE,KsGetObjectHandle) (THIS) PURE; -}; - -struct IKsQualityForwarder; -#undef INTERFACE -#define INTERFACE IKsQualityForwarder -DECLARE_INTERFACE_(IKsQualityForwarder,IKsObject) -{ - STDMETHOD_(VOID,KsFlushClient) (THIS_ - IKsPin *Pin - ) PURE; -}; - -struct IKsNotifyEvent; -#undef INTERFACE -#define INTERFACE IKsNotifyEvent -DECLARE_INTERFACE_(IKsNotifyEvent,IUnknown) -{ - STDMETHOD(KsNotifyEvent) (THIS_ - ULONG Event, - ULONG_PTR lParam1, - ULONG_PTR lParam2 - ) PURE; -}; - -KSDDKAPI HRESULT WINAPI KsResolveRequiredAttributes(PKSDATARANGE DataRange,PKSMULTIPLE_ITEM Attributes); -KSDDKAPI HRESULT WINAPI KsOpenDefaultDevice(REFGUID Category,ACCESS_MASK Access,PHANDLE DeviceHandle); -KSDDKAPI HRESULT WINAPI KsSynchronousDeviceControl(HANDLE Handle,ULONG IoControl,PVOID InBuffer,ULONG InLength,PVOID OutBuffer,ULONG OutLength,PULONG BytesReturned); -KSDDKAPI HRESULT WINAPI KsGetMultiplePinFactoryItems(HANDLE FilterHandle,ULONG PinFactoryId,ULONG PropertyId,PVOID *Items); -KSDDKAPI HRESULT WINAPI KsGetMediaTypeCount(HANDLE FilterHandle,ULONG PinFactoryId,ULONG *MediaTypeCount); -KSDDKAPI HRESULT WINAPI KsGetMediaType(int Position,AM_MEDIA_TYPE *AmMediaType,HANDLE FilterHandle,ULONG PinFactoryId); -#endif /* __STREAMS__ */ - -#ifndef _IKsPropertySet_ -DEFINE_GUIDEX(IID_IKsPropertySet); -#endif - -#ifndef _IKsControl_ -DEFINE_GUIDEX(IID_IKsControl); -#endif - -DEFINE_GUIDEX(IID_IKsAggregateControl); -#ifndef _IKsTopology_ -DEFINE_GUIDEX(IID_IKsTopology); -#endif -DEFINE_GUIDSTRUCT("17CCA71B-ECD7-11D0-B908-00A0C9223196",CLSID_Proxy); -#define CLSID_Proxy DEFINE_GUIDNAMED(CLSID_Proxy) - -#else /* _KS_ */ - -#ifndef _IKsPropertySet_ -DEFINE_GUID(IID_IKsPropertySet,STATIC_IID_IKsPropertySet); -#endif - -DEFINE_GUID(CLSID_Proxy,STATIC_CLSID_Proxy); - -#endif /* _KS_ */ - -#ifndef _IKsPropertySet_ -#define _IKsPropertySet_ -#define KSPROPERTY_SUPPORT_GET 1 -#define KSPROPERTY_SUPPORT_SET 2 - -#ifdef DECLARE_INTERFACE_ -struct IKsPropertySet; -#undef INTERFACE -#define INTERFACE IKsPropertySet -DECLARE_INTERFACE_(IKsPropertySet,IUnknown) -{ - STDMETHOD(Set) (THIS_ - REFGUID PropSet, - ULONG Id, - LPVOID InstanceData, - ULONG InstanceLength, - LPVOID PropertyData, - ULONG DataLength - ) PURE; - STDMETHOD(Get) (THIS_ - REFGUID PropSet, - ULONG Id, - LPVOID InstanceData, - ULONG InstanceLength, - LPVOID PropertyData, - ULONG DataLength, - ULONG *BytesReturned - ) PURE; - STDMETHOD(QuerySupported) (THIS_ - REFGUID PropSet, - ULONG Id, - ULONG *TypeSupport - ) PURE; -}; -#endif /* DECLARE_INTERFACE_ */ -#endif /* _IKsPropertySet_ */ - -#ifndef _IKsControl_ -#define _IKsControl_ -#ifdef DECLARE_INTERFACE_ -struct IKsControl; -#undef INTERFACE -#define INTERFACE IKsControl -DECLARE_INTERFACE_(IKsControl,IUnknown) -{ - STDMETHOD(KsProperty) (THIS_ - PKSPROPERTY Property, - ULONG PropertyLength, - LPVOID PropertyData, - ULONG DataLength, - ULONG *BytesReturned - ) PURE; - STDMETHOD(KsMethod) (THIS_ - PKSMETHOD Method, - ULONG MethodLength, - LPVOID MethodData, - ULONG DataLength, - ULONG *BytesReturned - ) PURE; - STDMETHOD(KsEvent) (THIS_ - PKSEVENT Event, - ULONG EventLength, - LPVOID EventData, - ULONG DataLength, - ULONG *BytesReturned - ) PURE; -}; -#endif /* DECLARE_INTERFACE_ */ -#endif /* _IKsControl_ */ - -#ifdef DECLARE_INTERFACE_ -struct IKsAggregateControl; -#undef INTERFACE -#define INTERFACE IKsAggregateControl -DECLARE_INTERFACE_(IKsAggregateControl,IUnknown) -{ - STDMETHOD(KsAddAggregate) (THIS_ - REFGUID AggregateClass - ) PURE; - STDMETHOD(KsRemoveAggregate) (THIS_ - REFGUID AggregateClass - ) PURE; -}; -#endif /* DECLARE_INTERFACE_ */ - -#ifndef _IKsTopology_ -#define _IKsTopology_ -#ifdef DECLARE_INTERFACE_ -struct IKsTopology; -#undef INTERFACE -#define INTERFACE IKsTopology -DECLARE_INTERFACE_(IKsTopology,IUnknown) -{ - STDMETHOD(CreateNodeInstance) (THIS_ - ULONG NodeId, - ULONG Flags, - ACCESS_MASK DesiredAccess, - IUnknown *UnkOuter, - REFGUID InterfaceId, - LPVOID *Interface - ) PURE; -}; -#endif /* DECLARE_INTERFACE_ */ -#endif /* _IKsTopology_ */ - -#ifdef __cplusplus -} -#endif - -#endif /* __KSPROXY__ */ diff --git a/portaudio/src/hostapi/wasapi/mingw-include/ksuuids.h b/portaudio/src/hostapi/wasapi/mingw-include/ksuuids.h deleted file mode 100644 index 7d0efff..0000000 --- a/portaudio/src/hostapi/wasapi/mingw-include/ksuuids.h +++ /dev/null @@ -1,159 +0,0 @@ -/** - * This file has no copyright assigned and is placed in the Public Domain. - * This file is part of the w64 mingw-runtime package. - * No warranty is given; refer to the file DISCLAIMER.PD within this package. - */ - -OUR_GUID_ENTRY(MEDIATYPE_MPEG2_PACK, - 0x36523B13,0x8EE5,0x11d1,0x8C,0xA3,0x00,0x60,0xB0,0x57,0x66,0x4A) - -OUR_GUID_ENTRY(MEDIATYPE_MPEG2_PES, - 0xe06d8020,0xdb46,0x11cf,0xb4,0xd1,0x00,0x80,0x5f,0x6c,0xbb,0xea) - -OUR_GUID_ENTRY(MEDIATYPE_MPEG2_SECTIONS, - 0x455f176c,0x4b06,0x47ce,0x9a,0xef,0x8c,0xae,0xf7,0x3d,0xf7,0xb5) - -OUR_GUID_ENTRY(MEDIASUBTYPE_ATSC_SI, - 0xb3c7397c,0xd303,0x414d,0xb3,0x3c,0x4e,0xd2,0xc9,0xd2,0x97,0x33) - -OUR_GUID_ENTRY(MEDIASUBTYPE_DVB_SI, - 0xe9dd31a3,0x221d,0x4adb,0x85,0x32,0x9a,0xf3,0x9,0xc1,0xa4,0x8) - -OUR_GUID_ENTRY(MEDIASUBTYPE_MPEG2DATA, - 0xc892e55b,0x252d,0x42b5,0xa3,0x16,0xd9,0x97,0xe7,0xa5,0xd9,0x95) - -OUR_GUID_ENTRY(MEDIASUBTYPE_MPEG2_VIDEO, - 0xe06d8026,0xdb46,0x11cf,0xb4,0xd1,0x00,0x80,0x5f,0x6c,0xbb,0xea) - -OUR_GUID_ENTRY(FORMAT_MPEG2_VIDEO, - 0xe06d80e3,0xdb46,0x11cf,0xb4,0xd1,0x00,0x80,0x5f,0x6c,0xbb,0xea) - -OUR_GUID_ENTRY(FORMAT_VIDEOINFO2, - 0xf72a76A0L,0xeb0a,0x11d0,0xac,0xe4,0x0,0x0,0xc0,0xcc,0x16,0xba) - -OUR_GUID_ENTRY(MEDIASUBTYPE_MPEG2_PROGRAM, - 0xe06d8022,0xdb46,0x11cf,0xb4,0xd1,0x00,0x80,0x05f,0x6c,0xbb,0xea) - -OUR_GUID_ENTRY(MEDIASUBTYPE_MPEG2_TRANSPORT, - 0xe06d8023,0xdb46,0x11cf,0xb4,0xd1,0x00,0x80,0x05f,0x6c,0xbb,0xea) - -OUR_GUID_ENTRY(MEDIASUBTYPE_MPEG2_TRANSPORT_STRIDE, - 0x138aa9a4,0x1ee2,0x4c5b,0x98,0x8e,0x19,0xab,0xfd,0xbc,0x8a,0x11) - -OUR_GUID_ENTRY(MEDIASUBTYPE_MPEG2_AUDIO, - 0xe06d802b,0xdb46,0x11cf,0xb4,0xd1,0x00,0x80,0x05f,0x6c,0xbb,0xea) - -OUR_GUID_ENTRY(MEDIASUBTYPE_DOLBY_AC3, - 0xe06d802c,0xdb46,0x11cf,0xb4,0xd1,0x00,0x80,0x05f,0x6c,0xbb,0xea) - -OUR_GUID_ENTRY(MEDIASUBTYPE_DVD_SUBPICTURE, - 0xe06d802d,0xdb46,0x11cf,0xb4,0xd1,0x00,0x80,0x05f,0x6c,0xbb,0xea) - -OUR_GUID_ENTRY(MEDIASUBTYPE_DVD_LPCM_AUDIO, - 0xe06d8032,0xdb46,0x11cf,0xb4,0xd1,0x00,0x80,0x05f,0x6c,0xbb,0xea) - -OUR_GUID_ENTRY(MEDIASUBTYPE_DTS, - 0xe06d8033,0xdb46,0x11cf,0xb4,0xd1,0x00,0x80,0x05f,0x6c,0xbb,0xea) - -OUR_GUID_ENTRY(MEDIASUBTYPE_SDDS, - 0xe06d8034,0xdb46,0x11cf,0xb4,0xd1,0x00,0x80,0x05f,0x6c,0xbb,0xea) - -OUR_GUID_ENTRY(MEDIATYPE_DVD_ENCRYPTED_PACK, - 0xed0b916a,0x044d,0x11d1,0xaa,0x78,0x00,0xc0,0x04f,0xc3,0x1d,0x60) - -OUR_GUID_ENTRY(MEDIATYPE_DVD_NAVIGATION, - 0xe06d802e,0xdb46,0x11cf,0xb4,0xd1,0x00,0x80,0x05f,0x6c,0xbb,0xea) - -OUR_GUID_ENTRY(MEDIASUBTYPE_DVD_NAVIGATION_PCI, - 0xe06d802f,0xdb46,0x11cf,0xb4,0xd1,0x00,0x80,0x05f,0x6c,0xbb,0xea) - -OUR_GUID_ENTRY(MEDIASUBTYPE_DVD_NAVIGATION_DSI, - 0xe06d8030,0xdb46,0x11cf,0xb4,0xd1,0x00,0x80,0x05f,0x6c,0xbb,0xea) - -OUR_GUID_ENTRY(MEDIASUBTYPE_DVD_NAVIGATION_PROVIDER, - 0xe06d8031,0xdb46,0x11cf,0xb4,0xd1,0x00,0x80,0x05f,0x6c,0xbb,0xea) - -OUR_GUID_ENTRY(FORMAT_MPEG2Video, - 0xe06d80e3,0xdb46,0x11cf,0xb4,0xd1,0x00,0x80,0x05f,0x6c,0xbb,0xea) - -OUR_GUID_ENTRY(FORMAT_DolbyAC3, - 0xe06d80e4,0xdb46,0x11cf,0xb4,0xd1,0x00,0x80,0x05f,0x6c,0xbb,0xea) - -OUR_GUID_ENTRY(FORMAT_MPEG2Audio, - 0xe06d80e5,0xdb46,0x11cf,0xb4,0xd1,0x00,0x80,0x05f,0x6c,0xbb,0xea) - -OUR_GUID_ENTRY(FORMAT_DVD_LPCMAudio, - 0xe06d80e6,0xdb46,0x11cf,0xb4,0xd1,0x00,0x80,0x05f,0x6c,0xbb,0xea) - -OUR_GUID_ENTRY(AM_KSPROPSETID_AC3, - 0xBFABE720,0x6E1F,0x11D0,0xBC,0xF2,0x44,0x45,0x53,0x54,0x00,0x00) - -OUR_GUID_ENTRY(AM_KSPROPSETID_DvdSubPic, - 0xac390460,0x43af,0x11d0,0xbd,0x6a,0x00,0x35,0x05,0xc1,0x03,0xa9) - -OUR_GUID_ENTRY(AM_KSPROPSETID_CopyProt, - 0x0E8A0A40,0x6AEF,0x11D0,0x9E,0xD0,0x00,0xA0,0x24,0xCA,0x19,0xB3) - -OUR_GUID_ENTRY(AM_KSPROPSETID_TSRateChange, - 0xa503c5c0,0x1d1d,0x11d1,0xad,0x80,0x44,0x45,0x53,0x54,0x0,0x0) - -OUR_GUID_ENTRY(AM_KSPROPSETID_DVD_RateChange, - 0x3577eb09,0x9582,0x477f,0xb2,0x9c,0xb0,0xc4,0x52,0xa4,0xff,0x9a) - -OUR_GUID_ENTRY(AM_KSPROPSETID_DvdKaraoke, - 0xae4720ae,0xaa71,0x42d8,0xb8,0x2a,0xff,0xfd,0xf5,0x8b,0x76,0xfd) - -OUR_GUID_ENTRY(AM_KSPROPSETID_FrameStep, - 0xc830acbd,0xab07,0x492f,0x88,0x52,0x45,0xb6,0x98,0x7c,0x29,0x79) - -OUR_GUID_ENTRY(AM_KSCATEGORY_CAPTURE, - 0x65E8773DL,0x8F56,0x11D0,0xA3,0xB9,0x00,0xA0,0xC9,0x22,0x31,0x96) - -OUR_GUID_ENTRY(AM_KSCATEGORY_RENDER, - 0x65E8773EL,0x8F56,0x11D0,0xA3,0xB9,0x00,0xA0,0xC9,0x22,0x31,0x96) - -OUR_GUID_ENTRY(AM_KSCATEGORY_DATACOMPRESSOR, - 0x1E84C900L,0x7E70,0x11D0,0xA5,0xD6,0x28,0xDB,0x04,0xC1,0x00,0x00) - -OUR_GUID_ENTRY(AM_KSCATEGORY_AUDIO, - 0x6994AD04L,0x93EF,0x11D0,0xA3,0xCC,0x00,0xA0,0xC9,0x22,0x31,0x96) - -OUR_GUID_ENTRY(AM_KSCATEGORY_VIDEO, - 0x6994AD05L,0x93EF,0x11D0,0xA3,0xCC,0x00,0xA0,0xC9,0x22,0x31,0x96) - -OUR_GUID_ENTRY(AM_KSCATEGORY_TVTUNER, - 0xa799a800L,0xa46d,0x11d0,0xa1,0x8c,0x00,0xa0,0x24,0x01,0xdc,0xd4) - -OUR_GUID_ENTRY(AM_KSCATEGORY_CROSSBAR, - 0xa799a801L,0xa46d,0x11d0,0xa1,0x8c,0x00,0xa0,0x24,0x01,0xdc,0xd4) - -OUR_GUID_ENTRY(AM_KSCATEGORY_TVAUDIO, - 0xa799a802L,0xa46d,0x11d0,0xa1,0x8c,0x00,0xa0,0x24,0x01,0xdc,0xd4) - -OUR_GUID_ENTRY(AM_KSCATEGORY_VBICODEC, - 0x07dad660L,0x22f1,0x11d1,0xa9,0xf4,0x00,0xc0,0x4f,0xbb,0xde,0x8f) - -OUR_GUID_ENTRY(AM_KSCATEGORY_VBICODEC_MI, - 0x9c24a977,0x951,0x451a,0x80,0x6,0xe,0x49,0xbd,0x28,0xcd,0x5f) - -OUR_GUID_ENTRY(AM_KSCATEGORY_SPLITTER, - 0x0A4252A0L,0x7E70,0x11D0,0xA5,0xD6,0x28,0xDB,0x04,0xC1,0x00,0x00) - -OUR_GUID_ENTRY(IID_IKsInterfaceHandler, - 0xD3ABC7E0L,0x9A61,0x11D0,0xA4,0x0D,0x00,0xA0,0xC9,0x22,0x31,0x96) - -OUR_GUID_ENTRY(IID_IKsDataTypeHandler, - 0x5FFBAA02L,0x49A3,0x11D0,0x9F,0x36,0x00,0xAA,0x00,0xA2,0x16,0xA1) - -OUR_GUID_ENTRY(IID_IKsPin, - 0xb61178d1L,0xa2d9,0x11cf,0x9e,0x53,0x00,0xaa,0x00,0xa2,0x16,0xa1) - -OUR_GUID_ENTRY(IID_IKsControl, - 0x28F54685L,0x06FD,0x11D2,0xB2,0x7A,0x00,0xA0,0xC9,0x22,0x31,0x96) - -OUR_GUID_ENTRY(IID_IKsPinFactory, - 0xCD5EBE6BL,0x8B6E,0x11D1,0x8A,0xE0,0x00,0xA0,0xC9,0x22,0x31,0x96) - -OUR_GUID_ENTRY(AM_INTERFACESETID_Standard, - 0x1A8766A0L,0x62CE,0x11CF,0xA5,0xD6,0x28,0xDB,0x04,0xC1,0x00,0x00) - diff --git a/portaudio/src/hostapi/wasapi/mingw-include/mmdeviceapi.h b/portaudio/src/hostapi/wasapi/mingw-include/mmdeviceapi.h deleted file mode 100644 index a75e475..0000000 --- a/portaudio/src/hostapi/wasapi/mingw-include/mmdeviceapi.h +++ /dev/null @@ -1,929 +0,0 @@ - - -/* this ALWAYS GENERATED file contains the definitions for the interfaces */ - - - /* File created by MIDL compiler version 7.00.0499 */ -/* Compiler settings for mmdeviceapi.idl: - Oicf, W1, Zp8, env=Win32 (32b run) - protocol : dce , ms_ext, c_ext, robust - error checks: allocation ref bounds_check enum stub_data - VC __declspec() decoration level: - __declspec(uuid()), __declspec(selectany), __declspec(novtable) - DECLSPEC_UUID(), MIDL_INTERFACE() -*/ -//@@MIDL_FILE_HEADING( ) - -#pragma warning( disable: 4049 ) /* more than 64k source lines */ - - -/* verify that the <rpcndr.h> version is high enough to compile this file*/ -#ifndef __REQUIRED_RPCNDR_H_VERSION__ -#define __REQUIRED_RPCNDR_H_VERSION__ 500 -#endif - -/* verify that the <rpcsal.h> version is high enough to compile this file*/ -#ifndef __REQUIRED_RPCSAL_H_VERSION__ -#define __REQUIRED_RPCSAL_H_VERSION__ 100 -#endif - -#include "rpc.h" -#include "rpcndr.h" - -#ifndef __RPCNDR_H_VERSION__ -#error this stub requires an updated version of <rpcndr.h> -#endif // __RPCNDR_H_VERSION__ - -#ifndef COM_NO_WINDOWS_H -#include "windows.h" -#include "ole2.h" -#endif /*COM_NO_WINDOWS_H*/ - -#ifndef __mmdeviceapi_h__ -#define __mmdeviceapi_h__ - -#if __GNUC__ >=3 -#pragma GCC system_header -#endif - -#if defined(_MSC_VER) && (_MSC_VER >= 1020) -#pragma once -#endif - -/* Forward Declarations */ - -#ifndef __IMMNotificationClient_FWD_DEFINED__ -#define __IMMNotificationClient_FWD_DEFINED__ -typedef interface IMMNotificationClient IMMNotificationClient; -#endif /* __IMMNotificationClient_FWD_DEFINED__ */ - - -#ifndef __IMMDevice_FWD_DEFINED__ -#define __IMMDevice_FWD_DEFINED__ -typedef interface IMMDevice IMMDevice; -#endif /* __IMMDevice_FWD_DEFINED__ */ - - -#ifndef __IMMDeviceCollection_FWD_DEFINED__ -#define __IMMDeviceCollection_FWD_DEFINED__ -typedef interface IMMDeviceCollection IMMDeviceCollection; -#endif /* __IMMDeviceCollection_FWD_DEFINED__ */ - - -#ifndef __IMMEndpoint_FWD_DEFINED__ -#define __IMMEndpoint_FWD_DEFINED__ -typedef interface IMMEndpoint IMMEndpoint; -#endif /* __IMMEndpoint_FWD_DEFINED__ */ - - -#ifndef __IMMDeviceEnumerator_FWD_DEFINED__ -#define __IMMDeviceEnumerator_FWD_DEFINED__ -typedef interface IMMDeviceEnumerator IMMDeviceEnumerator; -#endif /* __IMMDeviceEnumerator_FWD_DEFINED__ */ - - -#ifndef __IMMDeviceActivator_FWD_DEFINED__ -#define __IMMDeviceActivator_FWD_DEFINED__ -typedef interface IMMDeviceActivator IMMDeviceActivator; -#endif /* __IMMDeviceActivator_FWD_DEFINED__ */ - - -#ifndef __MMDeviceEnumerator_FWD_DEFINED__ -#define __MMDeviceEnumerator_FWD_DEFINED__ - -#ifdef __cplusplus -typedef class MMDeviceEnumerator MMDeviceEnumerator; -#else -typedef struct MMDeviceEnumerator MMDeviceEnumerator; -#endif /* __cplusplus */ - -#endif /* __MMDeviceEnumerator_FWD_DEFINED__ */ - - -/* header files for imported files */ -#include "unknwn.h" -#include "propsys.h" - -#ifdef __cplusplus -extern "C"{ -#endif - - -/* interface __MIDL_itf_mmdeviceapi_0000_0000 */ -/* [local] */ - -#define E_NOTFOUND HRESULT_FROM_WIN32(ERROR_NOT_FOUND) -#define E_UNSUPPORTED_TYPE HRESULT_FROM_WIN32(ERROR_UNSUPPORTED_TYPE) -#define DEVICE_STATE_ACTIVE 0x00000001 -#define DEVICE_STATE_DISABLED 0x00000002 -#define DEVICE_STATE_NOTPRESENT 0x00000004 -#define DEVICE_STATE_UNPLUGGED 0x00000008 -#define DEVICE_STATEMASK_ALL 0x0000000f -#ifdef DEFINE_PROPERTYKEY -#undef DEFINE_PROPERTYKEY -#endif -#ifdef INITGUID -#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 } -#else -#define DEFINE_PROPERTYKEY(name, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8, pid) EXTERN_C const PROPERTYKEY name -#endif // INITGUID -DEFINE_PROPERTYKEY(PKEY_AudioEndpoint_FormFactor, 0x1da5d803, 0xd492, 0x4edd, 0x8c, 0x23, 0xe0, 0xc0, 0xff, 0xee, 0x7f, 0x0e, 0); -DEFINE_PROPERTYKEY(PKEY_AudioEndpoint_ControlPanelPageProvider, 0x1da5d803, 0xd492, 0x4edd, 0x8c, 0x23, 0xe0, 0xc0, 0xff, 0xee, 0x7f, 0x0e, 1); -DEFINE_PROPERTYKEY(PKEY_AudioEndpoint_Association, 0x1da5d803, 0xd492, 0x4edd, 0x8c, 0x23, 0xe0, 0xc0, 0xff, 0xee, 0x7f, 0x0e, 2); -DEFINE_PROPERTYKEY(PKEY_AudioEndpoint_PhysicalSpeakers, 0x1da5d803, 0xd492, 0x4edd, 0x8c, 0x23, 0xe0, 0xc0, 0xff, 0xee, 0x7f, 0x0e, 3); -DEFINE_PROPERTYKEY(PKEY_AudioEndpoint_GUID, 0x1da5d803, 0xd492, 0x4edd, 0x8c, 0x23, 0xe0, 0xc0, 0xff, 0xee, 0x7f, 0x0e, 4); -DEFINE_PROPERTYKEY(PKEY_AudioEndpoint_Disable_SysFx, 0x1da5d803, 0xd492, 0x4edd, 0x8c, 0x23, 0xe0, 0xc0, 0xff, 0xee, 0x7f, 0x0e, 5); -#define ENDPOINT_SYSFX_ENABLED 0x00000000 // System Effects are enabled. -#define ENDPOINT_SYSFX_DISABLED 0x00000001 // System Effects are disabled. -DEFINE_PROPERTYKEY(PKEY_AudioEndpoint_FullRangeSpeakers, 0x1da5d803, 0xd492, 0x4edd, 0x8c, 0x23, 0xe0, 0xc0, 0xff, 0xee, 0x7f, 0x0e, 6); -DEFINE_PROPERTYKEY(PKEY_AudioEngine_DeviceFormat, 0xf19f064d, 0x82c, 0x4e27, 0xbc, 0x73, 0x68, 0x82, 0xa1, 0xbb, 0x8e, 0x4c, 0); -typedef struct tagDIRECTX_AUDIO_ACTIVATION_PARAMS - { - DWORD cbDirectXAudioActivationParams; - GUID guidAudioSession; - DWORD dwAudioStreamFlags; - } DIRECTX_AUDIO_ACTIVATION_PARAMS; - -typedef struct tagDIRECTX_AUDIO_ACTIVATION_PARAMS *PDIRECTX_AUDIO_ACTIVATION_PARAMS; - -typedef /* [public][public][public][public][public] */ -enum __MIDL___MIDL_itf_mmdeviceapi_0000_0000_0001 - { eRender = 0, - eCapture = ( eRender + 1 ) , - eAll = ( eCapture + 1 ) , - EDataFlow_enum_count = ( eAll + 1 ) - } EDataFlow; - -typedef /* [public][public][public] */ -enum __MIDL___MIDL_itf_mmdeviceapi_0000_0000_0002 - { eConsole = 0, - eMultimedia = ( eConsole + 1 ) , - eCommunications = ( eMultimedia + 1 ) , - ERole_enum_count = ( eCommunications + 1 ) - } ERole; - -typedef /* [public] */ -enum __MIDL___MIDL_itf_mmdeviceapi_0000_0000_0003 - { RemoteNetworkDevice = 0, - Speakers = ( RemoteNetworkDevice + 1 ) , - LineLevel = ( Speakers + 1 ) , - Headphones = ( LineLevel + 1 ) , - Microphone = ( Headphones + 1 ) , - Headset = ( Microphone + 1 ) , - Handset = ( Headset + 1 ) , - UnknownDigitalPassthrough = ( Handset + 1 ) , - SPDIF = ( UnknownDigitalPassthrough + 1 ) , - HDMI = ( SPDIF + 1 ) , - UnknownFormFactor = ( HDMI + 1 ) - } EndpointFormFactor; - - - -extern RPC_IF_HANDLE __MIDL_itf_mmdeviceapi_0000_0000_v0_0_c_ifspec; -extern RPC_IF_HANDLE __MIDL_itf_mmdeviceapi_0000_0000_v0_0_s_ifspec; - -#ifndef __IMMNotificationClient_INTERFACE_DEFINED__ -#define __IMMNotificationClient_INTERFACE_DEFINED__ - -/* interface IMMNotificationClient */ -/* [unique][helpstring][nonextensible][uuid][local][object] */ - - -EXTERN_C const IID IID_IMMNotificationClient; - -#if defined(__cplusplus) && !defined(CINTERFACE) - - MIDL_INTERFACE("7991EEC9-7E89-4D85-8390-6C703CEC60C0") - IMMNotificationClient : public IUnknown - { - public: - virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE OnDeviceStateChanged( - /* [in] */ - __in LPCWSTR pwstrDeviceId, - /* [in] */ - __in DWORD dwNewState) = 0; - - virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE OnDeviceAdded( - /* [in] */ - __in LPCWSTR pwstrDeviceId) = 0; - - virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE OnDeviceRemoved( - /* [in] */ - __in LPCWSTR pwstrDeviceId) = 0; - - virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE OnDefaultDeviceChanged( - /* [in] */ - __in EDataFlow flow, - /* [in] */ - __in ERole role, - /* [in] */ - __in LPCWSTR pwstrDefaultDeviceId) = 0; - - virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE OnPropertyValueChanged( - /* [in] */ - __in LPCWSTR pwstrDeviceId, - /* [in] */ - __in const PROPERTYKEY key) = 0; - - }; - -#else /* C style interface */ - - typedef struct IMMNotificationClientVtbl - { - BEGIN_INTERFACE - - HRESULT ( STDMETHODCALLTYPE *QueryInterface )( - IMMNotificationClient * This, - /* [in] */ REFIID riid, - /* [iid_is][out] */ - __RPC__deref_out void **ppvObject); - - ULONG ( STDMETHODCALLTYPE *AddRef )( - IMMNotificationClient * This); - - ULONG ( STDMETHODCALLTYPE *Release )( - IMMNotificationClient * This); - - /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *OnDeviceStateChanged )( - IMMNotificationClient * This, - /* [in] */ - __in LPCWSTR pwstrDeviceId, - /* [in] */ - __in DWORD dwNewState); - - /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *OnDeviceAdded )( - IMMNotificationClient * This, - /* [in] */ - __in LPCWSTR pwstrDeviceId); - - /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *OnDeviceRemoved )( - IMMNotificationClient * This, - /* [in] */ - __in LPCWSTR pwstrDeviceId); - - /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *OnDefaultDeviceChanged )( - IMMNotificationClient * This, - /* [in] */ - __in EDataFlow flow, - /* [in] */ - __in ERole role, - /* [in] */ - __in LPCWSTR pwstrDefaultDeviceId); - - /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *OnPropertyValueChanged )( - IMMNotificationClient * This, - /* [in] */ - __in LPCWSTR pwstrDeviceId, - /* [in] */ - __in const PROPERTYKEY key); - - END_INTERFACE - } IMMNotificationClientVtbl; - - interface IMMNotificationClient - { - CONST_VTBL struct IMMNotificationClientVtbl *lpVtbl; - }; - - - -#ifdef COBJMACROS - - -#define IMMNotificationClient_QueryInterface(This,riid,ppvObject) \ - ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) - -#define IMMNotificationClient_AddRef(This) \ - ( (This)->lpVtbl -> AddRef(This) ) - -#define IMMNotificationClient_Release(This) \ - ( (This)->lpVtbl -> Release(This) ) - - -#define IMMNotificationClient_OnDeviceStateChanged(This,pwstrDeviceId,dwNewState) \ - ( (This)->lpVtbl -> OnDeviceStateChanged(This,pwstrDeviceId,dwNewState) ) - -#define IMMNotificationClient_OnDeviceAdded(This,pwstrDeviceId) \ - ( (This)->lpVtbl -> OnDeviceAdded(This,pwstrDeviceId) ) - -#define IMMNotificationClient_OnDeviceRemoved(This,pwstrDeviceId) \ - ( (This)->lpVtbl -> OnDeviceRemoved(This,pwstrDeviceId) ) - -#define IMMNotificationClient_OnDefaultDeviceChanged(This,flow,role,pwstrDefaultDeviceId) \ - ( (This)->lpVtbl -> OnDefaultDeviceChanged(This,flow,role,pwstrDefaultDeviceId) ) - -#define IMMNotificationClient_OnPropertyValueChanged(This,pwstrDeviceId,key) \ - ( (This)->lpVtbl -> OnPropertyValueChanged(This,pwstrDeviceId,key) ) - -#endif /* COBJMACROS */ - - -#endif /* C style interface */ - - - - -#endif /* __IMMNotificationClient_INTERFACE_DEFINED__ */ - - -#ifndef __IMMDevice_INTERFACE_DEFINED__ -#define __IMMDevice_INTERFACE_DEFINED__ - -/* interface IMMDevice */ -/* [unique][helpstring][nonextensible][uuid][local][object] */ - - -EXTERN_C const IID IID_IMMDevice; - -#if defined(__cplusplus) && !defined(CINTERFACE) - - MIDL_INTERFACE("D666063F-1587-4E43-81F1-B948E807363F") - IMMDevice : public IUnknown - { - public: - virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE Activate( - /* [in] */ - __in REFIID iid, - /* [in] */ - __in DWORD dwClsCtx, - /* [unique][in] */ - __in_opt PROPVARIANT *pActivationParams, - /* [iid_is][out] */ - __out void **ppInterface) = 0; - - virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE OpenPropertyStore( - /* [in] */ - __in DWORD stgmAccess, - /* [out] */ - __out IPropertyStore **ppProperties) = 0; - - virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE GetId( - /* [out] */ - __deref_out LPWSTR *ppstrId) = 0; - - virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE GetState( - /* [out] */ - __out DWORD *pdwState) = 0; - - }; - -#else /* C style interface */ - - typedef struct IMMDeviceVtbl - { - BEGIN_INTERFACE - - HRESULT ( STDMETHODCALLTYPE *QueryInterface )( - IMMDevice * This, - /* [in] */ REFIID riid, - /* [iid_is][out] */ - __RPC__deref_out void **ppvObject); - - ULONG ( STDMETHODCALLTYPE *AddRef )( - IMMDevice * This); - - ULONG ( STDMETHODCALLTYPE *Release )( - IMMDevice * This); - - /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Activate )( - IMMDevice * This, - /* [in] */ - __in REFIID iid, - /* [in] */ - __in DWORD dwClsCtx, - /* [unique][in] */ - __in_opt PROPVARIANT *pActivationParams, - /* [iid_is][out] */ - __out void **ppInterface); - - /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *OpenPropertyStore )( - IMMDevice * This, - /* [in] */ - __in DWORD stgmAccess, - /* [out] */ - __out IPropertyStore **ppProperties); - - /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *GetId )( - IMMDevice * This, - /* [out] */ - __deref_out LPWSTR *ppstrId); - - /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *GetState )( - IMMDevice * This, - /* [out] */ - __out DWORD *pdwState); - - END_INTERFACE - } IMMDeviceVtbl; - - interface IMMDevice - { - CONST_VTBL struct IMMDeviceVtbl *lpVtbl; - }; - - - -#ifdef COBJMACROS - - -#define IMMDevice_QueryInterface(This,riid,ppvObject) \ - ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) - -#define IMMDevice_AddRef(This) \ - ( (This)->lpVtbl -> AddRef(This) ) - -#define IMMDevice_Release(This) \ - ( (This)->lpVtbl -> Release(This) ) - - -#define IMMDevice_Activate(This,iid,dwClsCtx,pActivationParams,ppInterface) \ - ( (This)->lpVtbl -> Activate(This,iid,dwClsCtx,pActivationParams,ppInterface) ) - -#define IMMDevice_OpenPropertyStore(This,stgmAccess,ppProperties) \ - ( (This)->lpVtbl -> OpenPropertyStore(This,stgmAccess,ppProperties) ) - -#define IMMDevice_GetId(This,ppstrId) \ - ( (This)->lpVtbl -> GetId(This,ppstrId) ) - -#define IMMDevice_GetState(This,pdwState) \ - ( (This)->lpVtbl -> GetState(This,pdwState) ) - -#endif /* COBJMACROS */ - - -#endif /* C style interface */ - - - - -#endif /* __IMMDevice_INTERFACE_DEFINED__ */ - - -#ifndef __IMMDeviceCollection_INTERFACE_DEFINED__ -#define __IMMDeviceCollection_INTERFACE_DEFINED__ - -/* interface IMMDeviceCollection */ -/* [unique][helpstring][nonextensible][uuid][local][object] */ - - -EXTERN_C const IID IID_IMMDeviceCollection; - -#if defined(__cplusplus) && !defined(CINTERFACE) - - MIDL_INTERFACE("0BD7A1BE-7A1A-44DB-8397-CC5392387B5E") - IMMDeviceCollection : public IUnknown - { - public: - virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE GetCount( - /* [out] */ - __out UINT *pcDevices) = 0; - - virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE Item( - /* [in] */ - __in UINT nDevice, - /* [out] */ - __out IMMDevice **ppDevice) = 0; - - }; - -#else /* C style interface */ - - typedef struct IMMDeviceCollectionVtbl - { - BEGIN_INTERFACE - - HRESULT ( STDMETHODCALLTYPE *QueryInterface )( - IMMDeviceCollection * This, - /* [in] */ REFIID riid, - /* [iid_is][out] */ - __RPC__deref_out void **ppvObject); - - ULONG ( STDMETHODCALLTYPE *AddRef )( - IMMDeviceCollection * This); - - ULONG ( STDMETHODCALLTYPE *Release )( - IMMDeviceCollection * This); - - /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *GetCount )( - IMMDeviceCollection * This, - /* [out] */ - __out UINT *pcDevices); - - /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Item )( - IMMDeviceCollection * This, - /* [in] */ - __in UINT nDevice, - /* [out] */ - __out IMMDevice **ppDevice); - - END_INTERFACE - } IMMDeviceCollectionVtbl; - - interface IMMDeviceCollection - { - CONST_VTBL struct IMMDeviceCollectionVtbl *lpVtbl; - }; - - - -#ifdef COBJMACROS - - -#define IMMDeviceCollection_QueryInterface(This,riid,ppvObject) \ - ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) - -#define IMMDeviceCollection_AddRef(This) \ - ( (This)->lpVtbl -> AddRef(This) ) - -#define IMMDeviceCollection_Release(This) \ - ( (This)->lpVtbl -> Release(This) ) - - -#define IMMDeviceCollection_GetCount(This,pcDevices) \ - ( (This)->lpVtbl -> GetCount(This,pcDevices) ) - -#define IMMDeviceCollection_Item(This,nDevice,ppDevice) \ - ( (This)->lpVtbl -> Item(This,nDevice,ppDevice) ) - -#endif /* COBJMACROS */ - - -#endif /* C style interface */ - - - - -#endif /* __IMMDeviceCollection_INTERFACE_DEFINED__ */ - - -#ifndef __IMMEndpoint_INTERFACE_DEFINED__ -#define __IMMEndpoint_INTERFACE_DEFINED__ - -/* interface IMMEndpoint */ -/* [unique][helpstring][nonextensible][uuid][local][object] */ - - -EXTERN_C const IID IID_IMMEndpoint; - -#if defined(__cplusplus) && !defined(CINTERFACE) - - MIDL_INTERFACE("1BE09788-6894-4089-8586-9A2A6C265AC5") - IMMEndpoint : public IUnknown - { - public: - virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE GetDataFlow( - /* [out] */ - __out EDataFlow *pDataFlow) = 0; - - }; - -#else /* C style interface */ - - typedef struct IMMEndpointVtbl - { - BEGIN_INTERFACE - - HRESULT ( STDMETHODCALLTYPE *QueryInterface )( - IMMEndpoint * This, - /* [in] */ REFIID riid, - /* [iid_is][out] */ - __RPC__deref_out void **ppvObject); - - ULONG ( STDMETHODCALLTYPE *AddRef )( - IMMEndpoint * This); - - ULONG ( STDMETHODCALLTYPE *Release )( - IMMEndpoint * This); - - /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *GetDataFlow )( - IMMEndpoint * This, - /* [out] */ - __out EDataFlow *pDataFlow); - - END_INTERFACE - } IMMEndpointVtbl; - - interface IMMEndpoint - { - CONST_VTBL struct IMMEndpointVtbl *lpVtbl; - }; - - - -#ifdef COBJMACROS - - -#define IMMEndpoint_QueryInterface(This,riid,ppvObject) \ - ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) - -#define IMMEndpoint_AddRef(This) \ - ( (This)->lpVtbl -> AddRef(This) ) - -#define IMMEndpoint_Release(This) \ - ( (This)->lpVtbl -> Release(This) ) - - -#define IMMEndpoint_GetDataFlow(This,pDataFlow) \ - ( (This)->lpVtbl -> GetDataFlow(This,pDataFlow) ) - -#endif /* COBJMACROS */ - - -#endif /* C style interface */ - - - - -#endif /* __IMMEndpoint_INTERFACE_DEFINED__ */ - - -#ifndef __IMMDeviceEnumerator_INTERFACE_DEFINED__ -#define __IMMDeviceEnumerator_INTERFACE_DEFINED__ - -/* interface IMMDeviceEnumerator */ -/* [unique][helpstring][nonextensible][uuid][local][object] */ - - -EXTERN_C const IID IID_IMMDeviceEnumerator; - -#if defined(__cplusplus) && !defined(CINTERFACE) - - MIDL_INTERFACE("A95664D2-9614-4F35-A746-DE8DB63617E6") - IMMDeviceEnumerator : public IUnknown - { - public: - virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE EnumAudioEndpoints( - /* [in] */ - __in EDataFlow dataFlow, - /* [in] */ - __in DWORD dwStateMask, - /* [out] */ - __out IMMDeviceCollection **ppDevices) = 0; - - virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE GetDefaultAudioEndpoint( - /* [in] */ - __in EDataFlow dataFlow, - /* [in] */ - __in ERole role, - /* [out] */ - __out IMMDevice **ppEndpoint) = 0; - - virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE GetDevice( - /* */ - __in LPCWSTR pwstrId, - /* [out] */ - __out IMMDevice **ppDevice) = 0; - - virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE RegisterEndpointNotificationCallback( - /* [in] */ - __in IMMNotificationClient *pClient) = 0; - - virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE UnregisterEndpointNotificationCallback( - /* [in] */ - __in IMMNotificationClient *pClient) = 0; - - }; - -#else /* C style interface */ - - typedef struct IMMDeviceEnumeratorVtbl - { - BEGIN_INTERFACE - - HRESULT ( STDMETHODCALLTYPE *QueryInterface )( - IMMDeviceEnumerator * This, - /* [in] */ REFIID riid, - /* [iid_is][out] */ - __RPC__deref_out void **ppvObject); - - ULONG ( STDMETHODCALLTYPE *AddRef )( - IMMDeviceEnumerator * This); - - ULONG ( STDMETHODCALLTYPE *Release )( - IMMDeviceEnumerator * This); - - /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *EnumAudioEndpoints )( - IMMDeviceEnumerator * This, - /* [in] */ - __in EDataFlow dataFlow, - /* [in] */ - __in DWORD dwStateMask, - /* [out] */ - __out IMMDeviceCollection **ppDevices); - - /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *GetDefaultAudioEndpoint )( - IMMDeviceEnumerator * This, - /* [in] */ - __in EDataFlow dataFlow, - /* [in] */ - __in ERole role, - /* [out] */ - __out IMMDevice **ppEndpoint); - - /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *GetDevice )( - IMMDeviceEnumerator * This, - /* */ - __in LPCWSTR pwstrId, - /* [out] */ - __out IMMDevice **ppDevice); - - /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *RegisterEndpointNotificationCallback )( - IMMDeviceEnumerator * This, - /* [in] */ - __in IMMNotificationClient *pClient); - - /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *UnregisterEndpointNotificationCallback )( - IMMDeviceEnumerator * This, - /* [in] */ - __in IMMNotificationClient *pClient); - - END_INTERFACE - } IMMDeviceEnumeratorVtbl; - - interface IMMDeviceEnumerator - { - CONST_VTBL struct IMMDeviceEnumeratorVtbl *lpVtbl; - }; - - - -#ifdef COBJMACROS - - -#define IMMDeviceEnumerator_QueryInterface(This,riid,ppvObject) \ - ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) - -#define IMMDeviceEnumerator_AddRef(This) \ - ( (This)->lpVtbl -> AddRef(This) ) - -#define IMMDeviceEnumerator_Release(This) \ - ( (This)->lpVtbl -> Release(This) ) - - -#define IMMDeviceEnumerator_EnumAudioEndpoints(This,dataFlow,dwStateMask,ppDevices) \ - ( (This)->lpVtbl -> EnumAudioEndpoints(This,dataFlow,dwStateMask,ppDevices) ) - -#define IMMDeviceEnumerator_GetDefaultAudioEndpoint(This,dataFlow,role,ppEndpoint) \ - ( (This)->lpVtbl -> GetDefaultAudioEndpoint(This,dataFlow,role,ppEndpoint) ) - -#define IMMDeviceEnumerator_GetDevice(This,pwstrId,ppDevice) \ - ( (This)->lpVtbl -> GetDevice(This,pwstrId,ppDevice) ) - -#define IMMDeviceEnumerator_RegisterEndpointNotificationCallback(This,pClient) \ - ( (This)->lpVtbl -> RegisterEndpointNotificationCallback(This,pClient) ) - -#define IMMDeviceEnumerator_UnregisterEndpointNotificationCallback(This,pClient) \ - ( (This)->lpVtbl -> UnregisterEndpointNotificationCallback(This,pClient) ) - -#endif /* COBJMACROS */ - - -#endif /* C style interface */ - - - - -#endif /* __IMMDeviceEnumerator_INTERFACE_DEFINED__ */ - - -#ifndef __IMMDeviceActivator_INTERFACE_DEFINED__ -#define __IMMDeviceActivator_INTERFACE_DEFINED__ - -/* interface IMMDeviceActivator */ -/* [unique][helpstring][nonextensible][uuid][local][object] */ - - -EXTERN_C const IID IID_IMMDeviceActivator; - -#if defined(__cplusplus) && !defined(CINTERFACE) - - MIDL_INTERFACE("3B0D0EA4-D0A9-4B0E-935B-09516746FAC0") - IMMDeviceActivator : public IUnknown - { - public: - virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE Activate( - /* [in] */ - __in REFIID iid, - /* [in] */ - __in IMMDevice *pDevice, - /* [in] */ - __in_opt PROPVARIANT *pActivationParams, - /* [iid_is][out] */ - __out void **ppInterface) = 0; - - }; - -#else /* C style interface */ - - typedef struct IMMDeviceActivatorVtbl - { - BEGIN_INTERFACE - - HRESULT ( STDMETHODCALLTYPE *QueryInterface )( - IMMDeviceActivator * This, - /* [in] */ REFIID riid, - /* [iid_is][out] */ - __RPC__deref_out void **ppvObject); - - ULONG ( STDMETHODCALLTYPE *AddRef )( - IMMDeviceActivator * This); - - ULONG ( STDMETHODCALLTYPE *Release )( - IMMDeviceActivator * This); - - /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Activate )( - IMMDeviceActivator * This, - /* [in] */ - __in REFIID iid, - /* [in] */ - __in IMMDevice *pDevice, - /* [in] */ - __in_opt PROPVARIANT *pActivationParams, - /* [iid_is][out] */ - __out void **ppInterface); - - END_INTERFACE - } IMMDeviceActivatorVtbl; - - interface IMMDeviceActivator - { - CONST_VTBL struct IMMDeviceActivatorVtbl *lpVtbl; - }; - - - -#ifdef COBJMACROS - - -#define IMMDeviceActivator_QueryInterface(This,riid,ppvObject) \ - ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) - -#define IMMDeviceActivator_AddRef(This) \ - ( (This)->lpVtbl -> AddRef(This) ) - -#define IMMDeviceActivator_Release(This) \ - ( (This)->lpVtbl -> Release(This) ) - - -#define IMMDeviceActivator_Activate(This,iid,pDevice,pActivationParams,ppInterface) \ - ( (This)->lpVtbl -> Activate(This,iid,pDevice,pActivationParams,ppInterface) ) - -#endif /* COBJMACROS */ - - -#endif /* C style interface */ - - - - -#endif /* __IMMDeviceActivator_INTERFACE_DEFINED__ */ - - -/* interface __MIDL_itf_mmdeviceapi_0000_0006 */ -/* [local] */ - -typedef /* [public] */ struct __MIDL___MIDL_itf_mmdeviceapi_0000_0006_0001 - { - LPARAM AddPageParam; - IMMDevice *pEndpoint; - IMMDevice *pPnpInterface; - IMMDevice *pPnpDevnode; - } AudioExtensionParams; - - - -extern RPC_IF_HANDLE __MIDL_itf_mmdeviceapi_0000_0006_v0_0_c_ifspec; -extern RPC_IF_HANDLE __MIDL_itf_mmdeviceapi_0000_0006_v0_0_s_ifspec; - - -#ifndef __MMDeviceAPILib_LIBRARY_DEFINED__ -#define __MMDeviceAPILib_LIBRARY_DEFINED__ - -/* library MMDeviceAPILib */ -/* [helpstring][version][uuid] */ - - -EXTERN_C const IID LIBID_MMDeviceAPILib; - -EXTERN_C const CLSID CLSID_MMDeviceEnumerator; - -#ifdef __cplusplus - -class DECLSPEC_UUID("BCDE0395-E52F-467C-8E3D-C4579291692E") -MMDeviceEnumerator; -#endif -#endif /* __MMDeviceAPILib_LIBRARY_DEFINED__ */ - -/* Additional Prototypes for ALL interfaces */ - -/* end of Additional Prototypes */ - -#ifdef __cplusplus -} -#endif - -#endif - - - diff --git a/portaudio/src/hostapi/wasapi/mingw-include/propkey.h b/portaudio/src/hostapi/wasapi/mingw-include/propkey.h deleted file mode 100644 index 5b68236..0000000 --- a/portaudio/src/hostapi/wasapi/mingw-include/propkey.h +++ /dev/null @@ -1,13 +0,0 @@ -/** - * This file has no copyright assigned and is placed in the Public Domain. - * This file is part of the PortAudio library. - */ -#ifndef _INC_PROPKEY_PA -#define _INC_PROPKEY_PA - -#ifndef DEFINE_API_PKEY -#define DEFINE_API_PKEY(name, managed_name, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8, pid) \ - DEFINE_PROPERTYKEY(name, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8, pid) -#endif - -#endif /* _INC_PROPKEY_PA */ diff --git a/portaudio/src/hostapi/wasapi/mingw-include/propkeydef.h b/portaudio/src/hostapi/wasapi/mingw-include/propkeydef.h deleted file mode 100644 index a361044..0000000 --- a/portaudio/src/hostapi/wasapi/mingw-include/propkeydef.h +++ /dev/null @@ -1,26 +0,0 @@ -#ifndef PID_FIRST_USABLE -#define PID_FIRST_USABLE 2 -#endif - -#ifndef REFPROPERTYKEY -#ifdef __cplusplus -#define REFPROPERTYKEY const PROPERTYKEY & -#else // !__cplusplus -#define REFPROPERTYKEY const PROPERTYKEY * __MIDL_CONST -#endif // __cplusplus -#endif //REFPROPERTYKEY - -#ifdef DEFINE_PROPERTYKEY -#undef DEFINE_PROPERTYKEY -#endif - -#ifdef INITGUID -#define DEFINE_PROPERTYKEY(name, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8, pid) EXTERN_C const PROPERTYKEY DECLSPEC_SELECTANY name = { { l, w1, w2, { b1, b2, b3, b4, b5, b6, b7, b8 } }, pid } -#else -#define DEFINE_PROPERTYKEY(name, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8, pid) EXTERN_C const PROPERTYKEY name -#endif // INITGUID - -#ifndef IsEqualPropertyKey -#define IsEqualPropertyKey(a, b) (((a).pid == (b).pid) && IsEqualIID((a).fmtid, (b).fmtid) ) -#endif // IsEqualPropertyKey - diff --git a/portaudio/src/hostapi/wasapi/mingw-include/propsys.h b/portaudio/src/hostapi/wasapi/mingw-include/propsys.h deleted file mode 100644 index 5ed5608..0000000 --- a/portaudio/src/hostapi/wasapi/mingw-include/propsys.h +++ /dev/null @@ -1,3605 +0,0 @@ - - -/* this ALWAYS GENERATED file contains the definitions for the interfaces */ - - - /* File created by MIDL compiler version 7.00.0499 */ -/* Compiler settings for propsys.idl: - Oicf, W1, Zp8, env=Win32 (32b run) - protocol : dce , ms_ext, c_ext, robust - error checks: allocation ref bounds_check enum stub_data - VC __declspec() decoration level: - __declspec(uuid()), __declspec(selectany), __declspec(novtable) - DECLSPEC_UUID(), MIDL_INTERFACE() -*/ -//@@MIDL_FILE_HEADING( ) - -#pragma warning( disable: 4049 ) /* more than 64k source lines */ - - -/* verify that the <rpcndr.h> version is high enough to compile this file*/ -#ifndef __REQUIRED_RPCNDR_H_VERSION__ -#define __REQUIRED_RPCNDR_H_VERSION__ 475 -#endif - -/* verify that the <rpcsal.h> version is high enough to compile this file*/ -#ifndef __REQUIRED_RPCSAL_H_VERSION__ -#define __REQUIRED_RPCSAL_H_VERSION__ 100 -#endif - -#include "rpc.h" -#include "rpcndr.h" - -#ifndef __RPCNDR_H_VERSION__ -#error this stub requires an updated version of <rpcndr.h> -#endif // __RPCNDR_H_VERSION__ - -#ifndef COM_NO_WINDOWS_H -#include "windows.h" -#include "ole2.h" -#endif /*COM_NO_WINDOWS_H*/ - -#ifndef __propsys_h__ -#define __propsys_h__ - -#if defined(_MSC_VER) && (_MSC_VER >= 1020) -#pragma once -#endif - -/* Forward Declarations */ - -#ifndef __IInitializeWithFile_FWD_DEFINED__ -#define __IInitializeWithFile_FWD_DEFINED__ -typedef interface IInitializeWithFile IInitializeWithFile; -#endif /* __IInitializeWithFile_FWD_DEFINED__ */ - - -#ifndef __IInitializeWithStream_FWD_DEFINED__ -#define __IInitializeWithStream_FWD_DEFINED__ -typedef interface IInitializeWithStream IInitializeWithStream; -#endif /* __IInitializeWithStream_FWD_DEFINED__ */ - - -#ifndef __IPropertyStore_FWD_DEFINED__ -#define __IPropertyStore_FWD_DEFINED__ -typedef interface IPropertyStore IPropertyStore; -#endif /* __IPropertyStore_FWD_DEFINED__ */ - - -#ifndef __INamedPropertyStore_FWD_DEFINED__ -#define __INamedPropertyStore_FWD_DEFINED__ -typedef interface INamedPropertyStore INamedPropertyStore; -#endif /* __INamedPropertyStore_FWD_DEFINED__ */ - - -#ifndef __IObjectWithPropertyKey_FWD_DEFINED__ -#define __IObjectWithPropertyKey_FWD_DEFINED__ -typedef interface IObjectWithPropertyKey IObjectWithPropertyKey; -#endif /* __IObjectWithPropertyKey_FWD_DEFINED__ */ - - -#ifndef __IPropertyChange_FWD_DEFINED__ -#define __IPropertyChange_FWD_DEFINED__ -typedef interface IPropertyChange IPropertyChange; -#endif /* __IPropertyChange_FWD_DEFINED__ */ - - -#ifndef __IPropertyChangeArray_FWD_DEFINED__ -#define __IPropertyChangeArray_FWD_DEFINED__ -typedef interface IPropertyChangeArray IPropertyChangeArray; -#endif /* __IPropertyChangeArray_FWD_DEFINED__ */ - - -#ifndef __IPropertyStoreCapabilities_FWD_DEFINED__ -#define __IPropertyStoreCapabilities_FWD_DEFINED__ -typedef interface IPropertyStoreCapabilities IPropertyStoreCapabilities; -#endif /* __IPropertyStoreCapabilities_FWD_DEFINED__ */ - - -#ifndef __IPropertyStoreCache_FWD_DEFINED__ -#define __IPropertyStoreCache_FWD_DEFINED__ -typedef interface IPropertyStoreCache IPropertyStoreCache; -#endif /* __IPropertyStoreCache_FWD_DEFINED__ */ - - -#ifndef __IPropertyEnumType_FWD_DEFINED__ -#define __IPropertyEnumType_FWD_DEFINED__ -typedef interface IPropertyEnumType IPropertyEnumType; -#endif /* __IPropertyEnumType_FWD_DEFINED__ */ - - -#ifndef __IPropertyEnumTypeList_FWD_DEFINED__ -#define __IPropertyEnumTypeList_FWD_DEFINED__ -typedef interface IPropertyEnumTypeList IPropertyEnumTypeList; -#endif /* __IPropertyEnumTypeList_FWD_DEFINED__ */ - - -#ifndef __IPropertyDescription_FWD_DEFINED__ -#define __IPropertyDescription_FWD_DEFINED__ -typedef interface IPropertyDescription IPropertyDescription; -#endif /* __IPropertyDescription_FWD_DEFINED__ */ - - -#ifndef __IPropertyDescriptionAliasInfo_FWD_DEFINED__ -#define __IPropertyDescriptionAliasInfo_FWD_DEFINED__ -typedef interface IPropertyDescriptionAliasInfo IPropertyDescriptionAliasInfo; -#endif /* __IPropertyDescriptionAliasInfo_FWD_DEFINED__ */ - - -#ifndef __IPropertyDescriptionSearchInfo_FWD_DEFINED__ -#define __IPropertyDescriptionSearchInfo_FWD_DEFINED__ -typedef interface IPropertyDescriptionSearchInfo IPropertyDescriptionSearchInfo; -#endif /* __IPropertyDescriptionSearchInfo_FWD_DEFINED__ */ - - -#ifndef __IPropertySystem_FWD_DEFINED__ -#define __IPropertySystem_FWD_DEFINED__ -typedef interface IPropertySystem IPropertySystem; -#endif /* __IPropertySystem_FWD_DEFINED__ */ - - -#ifndef __IPropertyDescriptionList_FWD_DEFINED__ -#define __IPropertyDescriptionList_FWD_DEFINED__ -typedef interface IPropertyDescriptionList IPropertyDescriptionList; -#endif /* __IPropertyDescriptionList_FWD_DEFINED__ */ - - -#ifndef __IPropertyStoreFactory_FWD_DEFINED__ -#define __IPropertyStoreFactory_FWD_DEFINED__ -typedef interface IPropertyStoreFactory IPropertyStoreFactory; -#endif /* __IPropertyStoreFactory_FWD_DEFINED__ */ - - -#ifndef __IDelayedPropertyStoreFactory_FWD_DEFINED__ -#define __IDelayedPropertyStoreFactory_FWD_DEFINED__ -typedef interface IDelayedPropertyStoreFactory IDelayedPropertyStoreFactory; -#endif /* __IDelayedPropertyStoreFactory_FWD_DEFINED__ */ - - -#ifndef __IPersistSerializedPropStorage_FWD_DEFINED__ -#define __IPersistSerializedPropStorage_FWD_DEFINED__ -typedef interface IPersistSerializedPropStorage IPersistSerializedPropStorage; -#endif /* __IPersistSerializedPropStorage_FWD_DEFINED__ */ - - -#ifndef __IPropertySystemChangeNotify_FWD_DEFINED__ -#define __IPropertySystemChangeNotify_FWD_DEFINED__ -typedef interface IPropertySystemChangeNotify IPropertySystemChangeNotify; -#endif /* __IPropertySystemChangeNotify_FWD_DEFINED__ */ - - -#ifndef __ICreateObject_FWD_DEFINED__ -#define __ICreateObject_FWD_DEFINED__ -typedef interface ICreateObject ICreateObject; -#endif /* __ICreateObject_FWD_DEFINED__ */ - - -#ifndef __InMemoryPropertyStore_FWD_DEFINED__ -#define __InMemoryPropertyStore_FWD_DEFINED__ - -#ifdef __cplusplus -typedef class InMemoryPropertyStore InMemoryPropertyStore; -#else -typedef struct InMemoryPropertyStore InMemoryPropertyStore; -#endif /* __cplusplus */ - -#endif /* __InMemoryPropertyStore_FWD_DEFINED__ */ - - -#ifndef __PropertySystem_FWD_DEFINED__ -#define __PropertySystem_FWD_DEFINED__ - -#ifdef __cplusplus -typedef class PropertySystem PropertySystem; -#else -typedef struct PropertySystem PropertySystem; -#endif /* __cplusplus */ - -#endif /* __PropertySystem_FWD_DEFINED__ */ - - -/* header files for imported files */ -#include "objidl.h" -#include "oleidl.h" -#include "ocidl.h" -#include "shtypes.h" -#include "structuredquery.h" - -#ifdef __cplusplus -extern "C"{ -#endif - - -/* interface __MIDL_itf_propsys_0000_0000 */ -/* [local] */ - -#ifndef PSSTDAPI -#if defined(_PROPSYS_) -#define PSSTDAPI STDAPI -#define PSSTDAPI_(type) STDAPI_(type) -#else -#define PSSTDAPI EXTERN_C DECLSPEC_IMPORT HRESULT STDAPICALLTYPE -#define PSSTDAPI_(type) EXTERN_C DECLSPEC_IMPORT type STDAPICALLTYPE -#endif -#endif // PSSTDAPI -#if 0 -typedef PROPERTYKEY *REFPROPERTYKEY; - -#endif // 0 -#include <propkeydef.h> - - -extern RPC_IF_HANDLE __MIDL_itf_propsys_0000_0000_v0_0_c_ifspec; -extern RPC_IF_HANDLE __MIDL_itf_propsys_0000_0000_v0_0_s_ifspec; - -#ifndef __IInitializeWithFile_INTERFACE_DEFINED__ -#define __IInitializeWithFile_INTERFACE_DEFINED__ - -/* interface IInitializeWithFile */ -/* [unique][object][uuid] */ - - -EXTERN_C const IID IID_IInitializeWithFile; - -#if defined(__cplusplus) && !defined(CINTERFACE) - - MIDL_INTERFACE("b7d14566-0509-4cce-a71f-0a554233bd9b") - IInitializeWithFile : public IUnknown - { - public: - virtual HRESULT STDMETHODCALLTYPE Initialize( - /* [string][in] */ __RPC__in LPCWSTR pszFilePath, - /* [in] */ DWORD grfMode) = 0; - - }; - -#else /* C style interface */ - - typedef struct IInitializeWithFileVtbl - { - BEGIN_INTERFACE - - HRESULT ( STDMETHODCALLTYPE *QueryInterface )( - IInitializeWithFile * This, - /* [in] */ __RPC__in REFIID riid, - /* [iid_is][out] */ - __RPC__deref_out void **ppvObject); - - ULONG ( STDMETHODCALLTYPE *AddRef )( - IInitializeWithFile * This); - - ULONG ( STDMETHODCALLTYPE *Release )( - IInitializeWithFile * This); - - HRESULT ( STDMETHODCALLTYPE *Initialize )( - IInitializeWithFile * This, - /* [string][in] */ __RPC__in LPCWSTR pszFilePath, - /* [in] */ DWORD grfMode); - - END_INTERFACE - } IInitializeWithFileVtbl; - - interface IInitializeWithFile - { - CONST_VTBL struct IInitializeWithFileVtbl *lpVtbl; - }; - - - -#ifdef COBJMACROS - - -#define IInitializeWithFile_QueryInterface(This,riid,ppvObject) \ - ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) - -#define IInitializeWithFile_AddRef(This) \ - ( (This)->lpVtbl -> AddRef(This) ) - -#define IInitializeWithFile_Release(This) \ - ( (This)->lpVtbl -> Release(This) ) - - -#define IInitializeWithFile_Initialize(This,pszFilePath,grfMode) \ - ( (This)->lpVtbl -> Initialize(This,pszFilePath,grfMode) ) - -#endif /* COBJMACROS */ - - -#endif /* C style interface */ - - - - -#endif /* __IInitializeWithFile_INTERFACE_DEFINED__ */ - - -#ifndef __IInitializeWithStream_INTERFACE_DEFINED__ -#define __IInitializeWithStream_INTERFACE_DEFINED__ - -/* interface IInitializeWithStream */ -/* [unique][object][uuid] */ - - -EXTERN_C const IID IID_IInitializeWithStream; - -#if defined(__cplusplus) && !defined(CINTERFACE) - - MIDL_INTERFACE("b824b49d-22ac-4161-ac8a-9916e8fa3f7f") - IInitializeWithStream : public IUnknown - { - public: - virtual /* [local] */ HRESULT STDMETHODCALLTYPE Initialize( - /* [in] */ IStream *pstream, - /* [in] */ DWORD grfMode) = 0; - - }; - -#else /* C style interface */ - - typedef struct IInitializeWithStreamVtbl - { - BEGIN_INTERFACE - - HRESULT ( STDMETHODCALLTYPE *QueryInterface )( - IInitializeWithStream * This, - /* [in] */ __RPC__in REFIID riid, - /* [iid_is][out] */ - __RPC__deref_out void **ppvObject); - - ULONG ( STDMETHODCALLTYPE *AddRef )( - IInitializeWithStream * This); - - ULONG ( STDMETHODCALLTYPE *Release )( - IInitializeWithStream * This); - - /* [local] */ HRESULT ( STDMETHODCALLTYPE *Initialize )( - IInitializeWithStream * This, - /* [in] */ IStream *pstream, - /* [in] */ DWORD grfMode); - - END_INTERFACE - } IInitializeWithStreamVtbl; - - interface IInitializeWithStream - { - CONST_VTBL struct IInitializeWithStreamVtbl *lpVtbl; - }; - - - -#ifdef COBJMACROS - - -#define IInitializeWithStream_QueryInterface(This,riid,ppvObject) \ - ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) - -#define IInitializeWithStream_AddRef(This) \ - ( (This)->lpVtbl -> AddRef(This) ) - -#define IInitializeWithStream_Release(This) \ - ( (This)->lpVtbl -> Release(This) ) - - -#define IInitializeWithStream_Initialize(This,pstream,grfMode) \ - ( (This)->lpVtbl -> Initialize(This,pstream,grfMode) ) - -#endif /* COBJMACROS */ - - -#endif /* C style interface */ - - - -/* [call_as] */ HRESULT STDMETHODCALLTYPE IInitializeWithStream_RemoteInitialize_Proxy( - IInitializeWithStream * This, - /* [in] */ __RPC__in_opt IStream *pstream, - /* [in] */ DWORD grfMode); - - -void __RPC_STUB IInitializeWithStream_RemoteInitialize_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - - -#endif /* __IInitializeWithStream_INTERFACE_DEFINED__ */ - - -#ifndef __IPropertyStore_INTERFACE_DEFINED__ -#define __IPropertyStore_INTERFACE_DEFINED__ - -/* interface IPropertyStore */ -/* [unique][object][helpstring][uuid] */ - - -EXTERN_C const IID IID_IPropertyStore; - -#if defined(__cplusplus) && !defined(CINTERFACE) - - MIDL_INTERFACE("886d8eeb-8cf2-4446-8d02-cdba1dbdcf99") - IPropertyStore : public IUnknown - { - public: - virtual HRESULT STDMETHODCALLTYPE GetCount( - /* [out] */ __RPC__out DWORD *cProps) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetAt( - /* [in] */ DWORD iProp, - /* [out] */ __RPC__out PROPERTYKEY *pkey) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetValue( - /* [in] */ __RPC__in REFPROPERTYKEY key, - /* [out] */ __RPC__out PROPVARIANT *pv) = 0; - - virtual HRESULT STDMETHODCALLTYPE SetValue( - /* [in] */ __RPC__in REFPROPERTYKEY key, - /* [in] */ __RPC__in REFPROPVARIANT propvar) = 0; - - virtual HRESULT STDMETHODCALLTYPE Commit( void) = 0; - - }; - -#else /* C style interface */ - - typedef struct IPropertyStoreVtbl - { - BEGIN_INTERFACE - - HRESULT ( STDMETHODCALLTYPE *QueryInterface )( - IPropertyStore * This, - /* [in] */ __RPC__in REFIID riid, - /* [iid_is][out] */ - __RPC__deref_out void **ppvObject); - - ULONG ( STDMETHODCALLTYPE *AddRef )( - IPropertyStore * This); - - ULONG ( STDMETHODCALLTYPE *Release )( - IPropertyStore * This); - - HRESULT ( STDMETHODCALLTYPE *GetCount )( - IPropertyStore * This, - /* [out] */ __RPC__out DWORD *cProps); - - HRESULT ( STDMETHODCALLTYPE *GetAt )( - IPropertyStore * This, - /* [in] */ DWORD iProp, - /* [out] */ __RPC__out PROPERTYKEY *pkey); - - HRESULT ( STDMETHODCALLTYPE *GetValue )( - IPropertyStore * This, - /* [in] */ __RPC__in REFPROPERTYKEY key, - /* [out] */ __RPC__out PROPVARIANT *pv); - - HRESULT ( STDMETHODCALLTYPE *SetValue )( - IPropertyStore * This, - /* [in] */ __RPC__in REFPROPERTYKEY key, - /* [in] */ __RPC__in REFPROPVARIANT propvar); - - HRESULT ( STDMETHODCALLTYPE *Commit )( - IPropertyStore * This); - - END_INTERFACE - } IPropertyStoreVtbl; - - interface IPropertyStore - { - CONST_VTBL struct IPropertyStoreVtbl *lpVtbl; - }; - - - -#ifdef COBJMACROS - - -#define IPropertyStore_QueryInterface(This,riid,ppvObject) \ - ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) - -#define IPropertyStore_AddRef(This) \ - ( (This)->lpVtbl -> AddRef(This) ) - -#define IPropertyStore_Release(This) \ - ( (This)->lpVtbl -> Release(This) ) - - -#define IPropertyStore_GetCount(This,cProps) \ - ( (This)->lpVtbl -> GetCount(This,cProps) ) - -#define IPropertyStore_GetAt(This,iProp,pkey) \ - ( (This)->lpVtbl -> GetAt(This,iProp,pkey) ) - -#define IPropertyStore_GetValue(This,key,pv) \ - ( (This)->lpVtbl -> GetValue(This,key,pv) ) - -#define IPropertyStore_SetValue(This,key,propvar) \ - ( (This)->lpVtbl -> SetValue(This,key,propvar) ) - -#define IPropertyStore_Commit(This) \ - ( (This)->lpVtbl -> Commit(This) ) - -#endif /* COBJMACROS */ - - -#endif /* C style interface */ - - - - -#endif /* __IPropertyStore_INTERFACE_DEFINED__ */ - - -/* interface __MIDL_itf_propsys_0000_0003 */ -/* [local] */ - -typedef /* [unique] */ __RPC_unique_pointer IPropertyStore *LPPROPERTYSTORE; - - - -extern RPC_IF_HANDLE __MIDL_itf_propsys_0000_0003_v0_0_c_ifspec; -extern RPC_IF_HANDLE __MIDL_itf_propsys_0000_0003_v0_0_s_ifspec; - -#ifndef __INamedPropertyStore_INTERFACE_DEFINED__ -#define __INamedPropertyStore_INTERFACE_DEFINED__ - -/* interface INamedPropertyStore */ -/* [unique][object][uuid] */ - - -EXTERN_C const IID IID_INamedPropertyStore; - -#if defined(__cplusplus) && !defined(CINTERFACE) - - MIDL_INTERFACE("71604b0f-97b0-4764-8577-2f13e98a1422") - INamedPropertyStore : public IUnknown - { - public: - virtual HRESULT STDMETHODCALLTYPE GetNamedValue( - /* [string][in] */ __RPC__in LPCWSTR pszName, - /* [out] */ __RPC__out PROPVARIANT *ppropvar) = 0; - - virtual HRESULT STDMETHODCALLTYPE SetNamedValue( - /* [string][in] */ __RPC__in LPCWSTR pszName, - /* [in] */ __RPC__in REFPROPVARIANT propvar) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetNameCount( - /* [out] */ __RPC__out DWORD *pdwCount) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetNameAt( - /* [in] */ DWORD iProp, - /* [out] */ __RPC__deref_out_opt BSTR *pbstrName) = 0; - - }; - -#else /* C style interface */ - - typedef struct INamedPropertyStoreVtbl - { - BEGIN_INTERFACE - - HRESULT ( STDMETHODCALLTYPE *QueryInterface )( - INamedPropertyStore * This, - /* [in] */ __RPC__in REFIID riid, - /* [iid_is][out] */ - __RPC__deref_out void **ppvObject); - - ULONG ( STDMETHODCALLTYPE *AddRef )( - INamedPropertyStore * This); - - ULONG ( STDMETHODCALLTYPE *Release )( - INamedPropertyStore * This); - - HRESULT ( STDMETHODCALLTYPE *GetNamedValue )( - INamedPropertyStore * This, - /* [string][in] */ __RPC__in LPCWSTR pszName, - /* [out] */ __RPC__out PROPVARIANT *ppropvar); - - HRESULT ( STDMETHODCALLTYPE *SetNamedValue )( - INamedPropertyStore * This, - /* [string][in] */ __RPC__in LPCWSTR pszName, - /* [in] */ __RPC__in REFPROPVARIANT propvar); - - HRESULT ( STDMETHODCALLTYPE *GetNameCount )( - INamedPropertyStore * This, - /* [out] */ __RPC__out DWORD *pdwCount); - - HRESULT ( STDMETHODCALLTYPE *GetNameAt )( - INamedPropertyStore * This, - /* [in] */ DWORD iProp, - /* [out] */ __RPC__deref_out_opt BSTR *pbstrName); - - END_INTERFACE - } INamedPropertyStoreVtbl; - - interface INamedPropertyStore - { - CONST_VTBL struct INamedPropertyStoreVtbl *lpVtbl; - }; - - - -#ifdef COBJMACROS - - -#define INamedPropertyStore_QueryInterface(This,riid,ppvObject) \ - ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) - -#define INamedPropertyStore_AddRef(This) \ - ( (This)->lpVtbl -> AddRef(This) ) - -#define INamedPropertyStore_Release(This) \ - ( (This)->lpVtbl -> Release(This) ) - - -#define INamedPropertyStore_GetNamedValue(This,pszName,ppropvar) \ - ( (This)->lpVtbl -> GetNamedValue(This,pszName,ppropvar) ) - -#define INamedPropertyStore_SetNamedValue(This,pszName,propvar) \ - ( (This)->lpVtbl -> SetNamedValue(This,pszName,propvar) ) - -#define INamedPropertyStore_GetNameCount(This,pdwCount) \ - ( (This)->lpVtbl -> GetNameCount(This,pdwCount) ) - -#define INamedPropertyStore_GetNameAt(This,iProp,pbstrName) \ - ( (This)->lpVtbl -> GetNameAt(This,iProp,pbstrName) ) - -#endif /* COBJMACROS */ - - -#endif /* C style interface */ - - - - -#endif /* __INamedPropertyStore_INTERFACE_DEFINED__ */ - - -/* interface __MIDL_itf_propsys_0000_0004 */ -/* [local] */ - -/* [v1_enum] */ -enum tagGETPROPERTYSTOREFLAGS - { GPS_DEFAULT = 0, - GPS_HANDLERPROPERTIESONLY = 0x1, - GPS_READWRITE = 0x2, - GPS_TEMPORARY = 0x4, - GPS_FASTPROPERTIESONLY = 0x8, - GPS_OPENSLOWITEM = 0x10, - GPS_DELAYCREATION = 0x20, - GPS_BESTEFFORT = 0x40, - GPS_MASK_VALID = 0x7f - } ; -typedef int GETPROPERTYSTOREFLAGS; - - - -extern RPC_IF_HANDLE __MIDL_itf_propsys_0000_0004_v0_0_c_ifspec; -extern RPC_IF_HANDLE __MIDL_itf_propsys_0000_0004_v0_0_s_ifspec; - -#ifndef __IObjectWithPropertyKey_INTERFACE_DEFINED__ -#define __IObjectWithPropertyKey_INTERFACE_DEFINED__ - -/* interface IObjectWithPropertyKey */ -/* [uuid][object] */ - - -EXTERN_C const IID IID_IObjectWithPropertyKey; - -#if defined(__cplusplus) && !defined(CINTERFACE) - - MIDL_INTERFACE("fc0ca0a7-c316-4fd2-9031-3e628e6d4f23") - IObjectWithPropertyKey : public IUnknown - { - public: - virtual HRESULT STDMETHODCALLTYPE SetPropertyKey( - /* [in] */ __RPC__in REFPROPERTYKEY key) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetPropertyKey( - /* [out] */ __RPC__out PROPERTYKEY *pkey) = 0; - - }; - -#else /* C style interface */ - - typedef struct IObjectWithPropertyKeyVtbl - { - BEGIN_INTERFACE - - HRESULT ( STDMETHODCALLTYPE *QueryInterface )( - IObjectWithPropertyKey * This, - /* [in] */ __RPC__in REFIID riid, - /* [iid_is][out] */ - __RPC__deref_out void **ppvObject); - - ULONG ( STDMETHODCALLTYPE *AddRef )( - IObjectWithPropertyKey * This); - - ULONG ( STDMETHODCALLTYPE *Release )( - IObjectWithPropertyKey * This); - - HRESULT ( STDMETHODCALLTYPE *SetPropertyKey )( - IObjectWithPropertyKey * This, - /* [in] */ __RPC__in REFPROPERTYKEY key); - - HRESULT ( STDMETHODCALLTYPE *GetPropertyKey )( - IObjectWithPropertyKey * This, - /* [out] */ __RPC__out PROPERTYKEY *pkey); - - END_INTERFACE - } IObjectWithPropertyKeyVtbl; - - interface IObjectWithPropertyKey - { - CONST_VTBL struct IObjectWithPropertyKeyVtbl *lpVtbl; - }; - - - -#ifdef COBJMACROS - - -#define IObjectWithPropertyKey_QueryInterface(This,riid,ppvObject) \ - ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) - -#define IObjectWithPropertyKey_AddRef(This) \ - ( (This)->lpVtbl -> AddRef(This) ) - -#define IObjectWithPropertyKey_Release(This) \ - ( (This)->lpVtbl -> Release(This) ) - - -#define IObjectWithPropertyKey_SetPropertyKey(This,key) \ - ( (This)->lpVtbl -> SetPropertyKey(This,key) ) - -#define IObjectWithPropertyKey_GetPropertyKey(This,pkey) \ - ( (This)->lpVtbl -> GetPropertyKey(This,pkey) ) - -#endif /* COBJMACROS */ - - -#endif /* C style interface */ - - - - -#endif /* __IObjectWithPropertyKey_INTERFACE_DEFINED__ */ - - -/* interface __MIDL_itf_propsys_0000_0005 */ -/* [local] */ - -typedef /* [v1_enum] */ -enum tagPKA_FLAGS - { PKA_SET = 0, - PKA_APPEND = ( PKA_SET + 1 ) , - PKA_DELETE = ( PKA_APPEND + 1 ) - } PKA_FLAGS; - - - -extern RPC_IF_HANDLE __MIDL_itf_propsys_0000_0005_v0_0_c_ifspec; -extern RPC_IF_HANDLE __MIDL_itf_propsys_0000_0005_v0_0_s_ifspec; - -#ifndef __IPropertyChange_INTERFACE_DEFINED__ -#define __IPropertyChange_INTERFACE_DEFINED__ - -/* interface IPropertyChange */ -/* [unique][object][uuid] */ - - -EXTERN_C const IID IID_IPropertyChange; - -#if defined(__cplusplus) && !defined(CINTERFACE) - - MIDL_INTERFACE("f917bc8a-1bba-4478-a245-1bde03eb9431") - IPropertyChange : public IObjectWithPropertyKey - { - public: - virtual HRESULT STDMETHODCALLTYPE ApplyToPropVariant( - /* [in] */ __RPC__in REFPROPVARIANT propvarIn, - /* [out] */ __RPC__out PROPVARIANT *ppropvarOut) = 0; - - }; - -#else /* C style interface */ - - typedef struct IPropertyChangeVtbl - { - BEGIN_INTERFACE - - HRESULT ( STDMETHODCALLTYPE *QueryInterface )( - IPropertyChange * This, - /* [in] */ __RPC__in REFIID riid, - /* [iid_is][out] */ - __RPC__deref_out void **ppvObject); - - ULONG ( STDMETHODCALLTYPE *AddRef )( - IPropertyChange * This); - - ULONG ( STDMETHODCALLTYPE *Release )( - IPropertyChange * This); - - HRESULT ( STDMETHODCALLTYPE *SetPropertyKey )( - IPropertyChange * This, - /* [in] */ __RPC__in REFPROPERTYKEY key); - - HRESULT ( STDMETHODCALLTYPE *GetPropertyKey )( - IPropertyChange * This, - /* [out] */ __RPC__out PROPERTYKEY *pkey); - - HRESULT ( STDMETHODCALLTYPE *ApplyToPropVariant )( - IPropertyChange * This, - /* [in] */ __RPC__in REFPROPVARIANT propvarIn, - /* [out] */ __RPC__out PROPVARIANT *ppropvarOut); - - END_INTERFACE - } IPropertyChangeVtbl; - - interface IPropertyChange - { - CONST_VTBL struct IPropertyChangeVtbl *lpVtbl; - }; - - - -#ifdef COBJMACROS - - -#define IPropertyChange_QueryInterface(This,riid,ppvObject) \ - ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) - -#define IPropertyChange_AddRef(This) \ - ( (This)->lpVtbl -> AddRef(This) ) - -#define IPropertyChange_Release(This) \ - ( (This)->lpVtbl -> Release(This) ) - - -#define IPropertyChange_SetPropertyKey(This,key) \ - ( (This)->lpVtbl -> SetPropertyKey(This,key) ) - -#define IPropertyChange_GetPropertyKey(This,pkey) \ - ( (This)->lpVtbl -> GetPropertyKey(This,pkey) ) - - -#define IPropertyChange_ApplyToPropVariant(This,propvarIn,ppropvarOut) \ - ( (This)->lpVtbl -> ApplyToPropVariant(This,propvarIn,ppropvarOut) ) - -#endif /* COBJMACROS */ - - -#endif /* C style interface */ - - - - -#endif /* __IPropertyChange_INTERFACE_DEFINED__ */ - - -#ifndef __IPropertyChangeArray_INTERFACE_DEFINED__ -#define __IPropertyChangeArray_INTERFACE_DEFINED__ - -/* interface IPropertyChangeArray */ -/* [unique][object][uuid] */ - - -EXTERN_C const IID IID_IPropertyChangeArray; - -#if defined(__cplusplus) && !defined(CINTERFACE) - - MIDL_INTERFACE("380f5cad-1b5e-42f2-805d-637fd392d31e") - IPropertyChangeArray : public IUnknown - { - public: - virtual HRESULT STDMETHODCALLTYPE GetCount( - /* [out] */ __RPC__out UINT *pcOperations) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetAt( - /* [in] */ UINT iIndex, - /* [in] */ __RPC__in REFIID riid, - /* [iid_is][out] */ __RPC__deref_out_opt void **ppv) = 0; - - virtual HRESULT STDMETHODCALLTYPE InsertAt( - /* [in] */ UINT iIndex, - /* [in] */ __RPC__in_opt IPropertyChange *ppropChange) = 0; - - virtual HRESULT STDMETHODCALLTYPE Append( - /* [in] */ __RPC__in_opt IPropertyChange *ppropChange) = 0; - - virtual HRESULT STDMETHODCALLTYPE AppendOrReplace( - /* [in] */ __RPC__in_opt IPropertyChange *ppropChange) = 0; - - virtual HRESULT STDMETHODCALLTYPE RemoveAt( - /* [in] */ UINT iIndex) = 0; - - virtual HRESULT STDMETHODCALLTYPE IsKeyInArray( - /* [in] */ __RPC__in REFPROPERTYKEY key) = 0; - - }; - -#else /* C style interface */ - - typedef struct IPropertyChangeArrayVtbl - { - BEGIN_INTERFACE - - HRESULT ( STDMETHODCALLTYPE *QueryInterface )( - IPropertyChangeArray * This, - /* [in] */ __RPC__in REFIID riid, - /* [iid_is][out] */ - __RPC__deref_out void **ppvObject); - - ULONG ( STDMETHODCALLTYPE *AddRef )( - IPropertyChangeArray * This); - - ULONG ( STDMETHODCALLTYPE *Release )( - IPropertyChangeArray * This); - - HRESULT ( STDMETHODCALLTYPE *GetCount )( - IPropertyChangeArray * This, - /* [out] */ __RPC__out UINT *pcOperations); - - HRESULT ( STDMETHODCALLTYPE *GetAt )( - IPropertyChangeArray * This, - /* [in] */ UINT iIndex, - /* [in] */ __RPC__in REFIID riid, - /* [iid_is][out] */ __RPC__deref_out_opt void **ppv); - - HRESULT ( STDMETHODCALLTYPE *InsertAt )( - IPropertyChangeArray * This, - /* [in] */ UINT iIndex, - /* [in] */ __RPC__in_opt IPropertyChange *ppropChange); - - HRESULT ( STDMETHODCALLTYPE *Append )( - IPropertyChangeArray * This, - /* [in] */ __RPC__in_opt IPropertyChange *ppropChange); - - HRESULT ( STDMETHODCALLTYPE *AppendOrReplace )( - IPropertyChangeArray * This, - /* [in] */ __RPC__in_opt IPropertyChange *ppropChange); - - HRESULT ( STDMETHODCALLTYPE *RemoveAt )( - IPropertyChangeArray * This, - /* [in] */ UINT iIndex); - - HRESULT ( STDMETHODCALLTYPE *IsKeyInArray )( - IPropertyChangeArray * This, - /* [in] */ __RPC__in REFPROPERTYKEY key); - - END_INTERFACE - } IPropertyChangeArrayVtbl; - - interface IPropertyChangeArray - { - CONST_VTBL struct IPropertyChangeArrayVtbl *lpVtbl; - }; - - - -#ifdef COBJMACROS - - -#define IPropertyChangeArray_QueryInterface(This,riid,ppvObject) \ - ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) - -#define IPropertyChangeArray_AddRef(This) \ - ( (This)->lpVtbl -> AddRef(This) ) - -#define IPropertyChangeArray_Release(This) \ - ( (This)->lpVtbl -> Release(This) ) - - -#define IPropertyChangeArray_GetCount(This,pcOperations) \ - ( (This)->lpVtbl -> GetCount(This,pcOperations) ) - -#define IPropertyChangeArray_GetAt(This,iIndex,riid,ppv) \ - ( (This)->lpVtbl -> GetAt(This,iIndex,riid,ppv) ) - -#define IPropertyChangeArray_InsertAt(This,iIndex,ppropChange) \ - ( (This)->lpVtbl -> InsertAt(This,iIndex,ppropChange) ) - -#define IPropertyChangeArray_Append(This,ppropChange) \ - ( (This)->lpVtbl -> Append(This,ppropChange) ) - -#define IPropertyChangeArray_AppendOrReplace(This,ppropChange) \ - ( (This)->lpVtbl -> AppendOrReplace(This,ppropChange) ) - -#define IPropertyChangeArray_RemoveAt(This,iIndex) \ - ( (This)->lpVtbl -> RemoveAt(This,iIndex) ) - -#define IPropertyChangeArray_IsKeyInArray(This,key) \ - ( (This)->lpVtbl -> IsKeyInArray(This,key) ) - -#endif /* COBJMACROS */ - - -#endif /* C style interface */ - - - - -#endif /* __IPropertyChangeArray_INTERFACE_DEFINED__ */ - - -#ifndef __IPropertyStoreCapabilities_INTERFACE_DEFINED__ -#define __IPropertyStoreCapabilities_INTERFACE_DEFINED__ - -/* interface IPropertyStoreCapabilities */ -/* [unique][object][uuid] */ - - -EXTERN_C const IID IID_IPropertyStoreCapabilities; - -#if defined(__cplusplus) && !defined(CINTERFACE) - - MIDL_INTERFACE("c8e2d566-186e-4d49-bf41-6909ead56acc") - IPropertyStoreCapabilities : public IUnknown - { - public: - virtual HRESULT STDMETHODCALLTYPE IsPropertyWritable( - /* [in] */ __RPC__in REFPROPERTYKEY key) = 0; - - }; - -#else /* C style interface */ - - typedef struct IPropertyStoreCapabilitiesVtbl - { - BEGIN_INTERFACE - - HRESULT ( STDMETHODCALLTYPE *QueryInterface )( - IPropertyStoreCapabilities * This, - /* [in] */ __RPC__in REFIID riid, - /* [iid_is][out] */ - __RPC__deref_out void **ppvObject); - - ULONG ( STDMETHODCALLTYPE *AddRef )( - IPropertyStoreCapabilities * This); - - ULONG ( STDMETHODCALLTYPE *Release )( - IPropertyStoreCapabilities * This); - - HRESULT ( STDMETHODCALLTYPE *IsPropertyWritable )( - IPropertyStoreCapabilities * This, - /* [in] */ __RPC__in REFPROPERTYKEY key); - - END_INTERFACE - } IPropertyStoreCapabilitiesVtbl; - - interface IPropertyStoreCapabilities - { - CONST_VTBL struct IPropertyStoreCapabilitiesVtbl *lpVtbl; - }; - - - -#ifdef COBJMACROS - - -#define IPropertyStoreCapabilities_QueryInterface(This,riid,ppvObject) \ - ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) - -#define IPropertyStoreCapabilities_AddRef(This) \ - ( (This)->lpVtbl -> AddRef(This) ) - -#define IPropertyStoreCapabilities_Release(This) \ - ( (This)->lpVtbl -> Release(This) ) - - -#define IPropertyStoreCapabilities_IsPropertyWritable(This,key) \ - ( (This)->lpVtbl -> IsPropertyWritable(This,key) ) - -#endif /* COBJMACROS */ - - -#endif /* C style interface */ - - - - -#endif /* __IPropertyStoreCapabilities_INTERFACE_DEFINED__ */ - - -#ifndef __IPropertyStoreCache_INTERFACE_DEFINED__ -#define __IPropertyStoreCache_INTERFACE_DEFINED__ - -/* interface IPropertyStoreCache */ -/* [unique][object][uuid] */ - -typedef /* [v1_enum] */ -enum _PSC_STATE - { PSC_NORMAL = 0, - PSC_NOTINSOURCE = 1, - PSC_DIRTY = 2, - PSC_READONLY = 3 - } PSC_STATE; - - -EXTERN_C const IID IID_IPropertyStoreCache; - -#if defined(__cplusplus) && !defined(CINTERFACE) - - MIDL_INTERFACE("3017056d-9a91-4e90-937d-746c72abbf4f") - IPropertyStoreCache : public IPropertyStore - { - public: - virtual HRESULT STDMETHODCALLTYPE GetState( - /* [in] */ __RPC__in REFPROPERTYKEY key, - /* [out] */ __RPC__out PSC_STATE *pstate) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetValueAndState( - /* [in] */ __RPC__in REFPROPERTYKEY key, - /* [out] */ __RPC__out PROPVARIANT *ppropvar, - /* [out] */ __RPC__out PSC_STATE *pstate) = 0; - - virtual HRESULT STDMETHODCALLTYPE SetState( - /* [in] */ __RPC__in REFPROPERTYKEY key, - /* [in] */ PSC_STATE state) = 0; - - virtual HRESULT STDMETHODCALLTYPE SetValueAndState( - /* [in] */ __RPC__in REFPROPERTYKEY key, - /* [unique][in] */ __RPC__in_opt const PROPVARIANT *ppropvar, - /* [in] */ PSC_STATE state) = 0; - - }; - -#else /* C style interface */ - - typedef struct IPropertyStoreCacheVtbl - { - BEGIN_INTERFACE - - HRESULT ( STDMETHODCALLTYPE *QueryInterface )( - IPropertyStoreCache * This, - /* [in] */ __RPC__in REFIID riid, - /* [iid_is][out] */ - __RPC__deref_out void **ppvObject); - - ULONG ( STDMETHODCALLTYPE *AddRef )( - IPropertyStoreCache * This); - - ULONG ( STDMETHODCALLTYPE *Release )( - IPropertyStoreCache * This); - - HRESULT ( STDMETHODCALLTYPE *GetCount )( - IPropertyStoreCache * This, - /* [out] */ __RPC__out DWORD *cProps); - - HRESULT ( STDMETHODCALLTYPE *GetAt )( - IPropertyStoreCache * This, - /* [in] */ DWORD iProp, - /* [out] */ __RPC__out PROPERTYKEY *pkey); - - HRESULT ( STDMETHODCALLTYPE *GetValue )( - IPropertyStoreCache * This, - /* [in] */ __RPC__in REFPROPERTYKEY key, - /* [out] */ __RPC__out PROPVARIANT *pv); - - HRESULT ( STDMETHODCALLTYPE *SetValue )( - IPropertyStoreCache * This, - /* [in] */ __RPC__in REFPROPERTYKEY key, - /* [in] */ __RPC__in REFPROPVARIANT propvar); - - HRESULT ( STDMETHODCALLTYPE *Commit )( - IPropertyStoreCache * This); - - HRESULT ( STDMETHODCALLTYPE *GetState )( - IPropertyStoreCache * This, - /* [in] */ __RPC__in REFPROPERTYKEY key, - /* [out] */ __RPC__out PSC_STATE *pstate); - - HRESULT ( STDMETHODCALLTYPE *GetValueAndState )( - IPropertyStoreCache * This, - /* [in] */ __RPC__in REFPROPERTYKEY key, - /* [out] */ __RPC__out PROPVARIANT *ppropvar, - /* [out] */ __RPC__out PSC_STATE *pstate); - - HRESULT ( STDMETHODCALLTYPE *SetState )( - IPropertyStoreCache * This, - /* [in] */ __RPC__in REFPROPERTYKEY key, - /* [in] */ PSC_STATE state); - - HRESULT ( STDMETHODCALLTYPE *SetValueAndState )( - IPropertyStoreCache * This, - /* [in] */ __RPC__in REFPROPERTYKEY key, - /* [unique][in] */ __RPC__in_opt const PROPVARIANT *ppropvar, - /* [in] */ PSC_STATE state); - - END_INTERFACE - } IPropertyStoreCacheVtbl; - - interface IPropertyStoreCache - { - CONST_VTBL struct IPropertyStoreCacheVtbl *lpVtbl; - }; - - - -#ifdef COBJMACROS - - -#define IPropertyStoreCache_QueryInterface(This,riid,ppvObject) \ - ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) - -#define IPropertyStoreCache_AddRef(This) \ - ( (This)->lpVtbl -> AddRef(This) ) - -#define IPropertyStoreCache_Release(This) \ - ( (This)->lpVtbl -> Release(This) ) - - -#define IPropertyStoreCache_GetCount(This,cProps) \ - ( (This)->lpVtbl -> GetCount(This,cProps) ) - -#define IPropertyStoreCache_GetAt(This,iProp,pkey) \ - ( (This)->lpVtbl -> GetAt(This,iProp,pkey) ) - -#define IPropertyStoreCache_GetValue(This,key,pv) \ - ( (This)->lpVtbl -> GetValue(This,key,pv) ) - -#define IPropertyStoreCache_SetValue(This,key,propvar) \ - ( (This)->lpVtbl -> SetValue(This,key,propvar) ) - -#define IPropertyStoreCache_Commit(This) \ - ( (This)->lpVtbl -> Commit(This) ) - - -#define IPropertyStoreCache_GetState(This,key,pstate) \ - ( (This)->lpVtbl -> GetState(This,key,pstate) ) - -#define IPropertyStoreCache_GetValueAndState(This,key,ppropvar,pstate) \ - ( (This)->lpVtbl -> GetValueAndState(This,key,ppropvar,pstate) ) - -#define IPropertyStoreCache_SetState(This,key,state) \ - ( (This)->lpVtbl -> SetState(This,key,state) ) - -#define IPropertyStoreCache_SetValueAndState(This,key,ppropvar,state) \ - ( (This)->lpVtbl -> SetValueAndState(This,key,ppropvar,state) ) - -#endif /* COBJMACROS */ - - -#endif /* C style interface */ - - - - -#endif /* __IPropertyStoreCache_INTERFACE_DEFINED__ */ - - -#ifndef __IPropertyEnumType_INTERFACE_DEFINED__ -#define __IPropertyEnumType_INTERFACE_DEFINED__ - -/* interface IPropertyEnumType */ -/* [unique][object][uuid] */ - -/* [v1_enum] */ -enum tagPROPENUMTYPE - { PET_DISCRETEVALUE = 0, - PET_RANGEDVALUE = 1, - PET_DEFAULTVALUE = 2, - PET_ENDRANGE = 3 - } ; -typedef enum tagPROPENUMTYPE PROPENUMTYPE; - - -EXTERN_C const IID IID_IPropertyEnumType; - -#if defined(__cplusplus) && !defined(CINTERFACE) - - MIDL_INTERFACE("11e1fbf9-2d56-4a6b-8db3-7cd193a471f2") - IPropertyEnumType : public IUnknown - { - public: - virtual HRESULT STDMETHODCALLTYPE GetEnumType( - /* [out] */ __RPC__out PROPENUMTYPE *penumtype) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetValue( - /* [out] */ __RPC__out PROPVARIANT *ppropvar) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetRangeMinValue( - /* [out] */ __RPC__out PROPVARIANT *ppropvarMin) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetRangeSetValue( - /* [out] */ __RPC__out PROPVARIANT *ppropvarSet) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetDisplayText( - /* [out] */ __RPC__deref_out_opt LPWSTR *ppszDisplay) = 0; - - }; - -#else /* C style interface */ - - typedef struct IPropertyEnumTypeVtbl - { - BEGIN_INTERFACE - - HRESULT ( STDMETHODCALLTYPE *QueryInterface )( - IPropertyEnumType * This, - /* [in] */ __RPC__in REFIID riid, - /* [iid_is][out] */ - __RPC__deref_out void **ppvObject); - - ULONG ( STDMETHODCALLTYPE *AddRef )( - IPropertyEnumType * This); - - ULONG ( STDMETHODCALLTYPE *Release )( - IPropertyEnumType * This); - - HRESULT ( STDMETHODCALLTYPE *GetEnumType )( - IPropertyEnumType * This, - /* [out] */ __RPC__out PROPENUMTYPE *penumtype); - - HRESULT ( STDMETHODCALLTYPE *GetValue )( - IPropertyEnumType * This, - /* [out] */ __RPC__out PROPVARIANT *ppropvar); - - HRESULT ( STDMETHODCALLTYPE *GetRangeMinValue )( - IPropertyEnumType * This, - /* [out] */ __RPC__out PROPVARIANT *ppropvarMin); - - HRESULT ( STDMETHODCALLTYPE *GetRangeSetValue )( - IPropertyEnumType * This, - /* [out] */ __RPC__out PROPVARIANT *ppropvarSet); - - HRESULT ( STDMETHODCALLTYPE *GetDisplayText )( - IPropertyEnumType * This, - /* [out] */ __RPC__deref_out_opt LPWSTR *ppszDisplay); - - END_INTERFACE - } IPropertyEnumTypeVtbl; - - interface IPropertyEnumType - { - CONST_VTBL struct IPropertyEnumTypeVtbl *lpVtbl; - }; - - - -#ifdef COBJMACROS - - -#define IPropertyEnumType_QueryInterface(This,riid,ppvObject) \ - ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) - -#define IPropertyEnumType_AddRef(This) \ - ( (This)->lpVtbl -> AddRef(This) ) - -#define IPropertyEnumType_Release(This) \ - ( (This)->lpVtbl -> Release(This) ) - - -#define IPropertyEnumType_GetEnumType(This,penumtype) \ - ( (This)->lpVtbl -> GetEnumType(This,penumtype) ) - -#define IPropertyEnumType_GetValue(This,ppropvar) \ - ( (This)->lpVtbl -> GetValue(This,ppropvar) ) - -#define IPropertyEnumType_GetRangeMinValue(This,ppropvarMin) \ - ( (This)->lpVtbl -> GetRangeMinValue(This,ppropvarMin) ) - -#define IPropertyEnumType_GetRangeSetValue(This,ppropvarSet) \ - ( (This)->lpVtbl -> GetRangeSetValue(This,ppropvarSet) ) - -#define IPropertyEnumType_GetDisplayText(This,ppszDisplay) \ - ( (This)->lpVtbl -> GetDisplayText(This,ppszDisplay) ) - -#endif /* COBJMACROS */ - - -#endif /* C style interface */ - - - - -#endif /* __IPropertyEnumType_INTERFACE_DEFINED__ */ - - -#ifndef __IPropertyEnumTypeList_INTERFACE_DEFINED__ -#define __IPropertyEnumTypeList_INTERFACE_DEFINED__ - -/* interface IPropertyEnumTypeList */ -/* [unique][object][uuid] */ - - -EXTERN_C const IID IID_IPropertyEnumTypeList; - -#if defined(__cplusplus) && !defined(CINTERFACE) - - MIDL_INTERFACE("a99400f4-3d84-4557-94ba-1242fb2cc9a6") - IPropertyEnumTypeList : public IUnknown - { - public: - virtual HRESULT STDMETHODCALLTYPE GetCount( - /* [out] */ __RPC__out UINT *pctypes) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetAt( - /* [in] */ UINT itype, - /* [in] */ __RPC__in REFIID riid, - /* [iid_is][out] */ __RPC__deref_out_opt void **ppv) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetConditionAt( - /* [in] */ UINT nIndex, - /* [in] */ __RPC__in REFIID riid, - /* [iid_is][out] */ __RPC__deref_out_opt void **ppv) = 0; - - virtual HRESULT STDMETHODCALLTYPE FindMatchingIndex( - /* [in] */ __RPC__in REFPROPVARIANT propvarCmp, - /* [out] */ __RPC__out UINT *pnIndex) = 0; - - }; - -#else /* C style interface */ - - typedef struct IPropertyEnumTypeListVtbl - { - BEGIN_INTERFACE - - HRESULT ( STDMETHODCALLTYPE *QueryInterface )( - IPropertyEnumTypeList * This, - /* [in] */ __RPC__in REFIID riid, - /* [iid_is][out] */ - __RPC__deref_out void **ppvObject); - - ULONG ( STDMETHODCALLTYPE *AddRef )( - IPropertyEnumTypeList * This); - - ULONG ( STDMETHODCALLTYPE *Release )( - IPropertyEnumTypeList * This); - - HRESULT ( STDMETHODCALLTYPE *GetCount )( - IPropertyEnumTypeList * This, - /* [out] */ __RPC__out UINT *pctypes); - - HRESULT ( STDMETHODCALLTYPE *GetAt )( - IPropertyEnumTypeList * This, - /* [in] */ UINT itype, - /* [in] */ __RPC__in REFIID riid, - /* [iid_is][out] */ __RPC__deref_out_opt void **ppv); - - HRESULT ( STDMETHODCALLTYPE *GetConditionAt )( - IPropertyEnumTypeList * This, - /* [in] */ UINT nIndex, - /* [in] */ __RPC__in REFIID riid, - /* [iid_is][out] */ __RPC__deref_out_opt void **ppv); - - HRESULT ( STDMETHODCALLTYPE *FindMatchingIndex )( - IPropertyEnumTypeList * This, - /* [in] */ __RPC__in REFPROPVARIANT propvarCmp, - /* [out] */ __RPC__out UINT *pnIndex); - - END_INTERFACE - } IPropertyEnumTypeListVtbl; - - interface IPropertyEnumTypeList - { - CONST_VTBL struct IPropertyEnumTypeListVtbl *lpVtbl; - }; - - - -#ifdef COBJMACROS - - -#define IPropertyEnumTypeList_QueryInterface(This,riid,ppvObject) \ - ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) - -#define IPropertyEnumTypeList_AddRef(This) \ - ( (This)->lpVtbl -> AddRef(This) ) - -#define IPropertyEnumTypeList_Release(This) \ - ( (This)->lpVtbl -> Release(This) ) - - -#define IPropertyEnumTypeList_GetCount(This,pctypes) \ - ( (This)->lpVtbl -> GetCount(This,pctypes) ) - -#define IPropertyEnumTypeList_GetAt(This,itype,riid,ppv) \ - ( (This)->lpVtbl -> GetAt(This,itype,riid,ppv) ) - -#define IPropertyEnumTypeList_GetConditionAt(This,nIndex,riid,ppv) \ - ( (This)->lpVtbl -> GetConditionAt(This,nIndex,riid,ppv) ) - -#define IPropertyEnumTypeList_FindMatchingIndex(This,propvarCmp,pnIndex) \ - ( (This)->lpVtbl -> FindMatchingIndex(This,propvarCmp,pnIndex) ) - -#endif /* COBJMACROS */ - - -#endif /* C style interface */ - - - - -#endif /* __IPropertyEnumTypeList_INTERFACE_DEFINED__ */ - - -#ifndef __IPropertyDescription_INTERFACE_DEFINED__ -#define __IPropertyDescription_INTERFACE_DEFINED__ - -/* interface IPropertyDescription */ -/* [unique][object][uuid] */ - -/* [v1_enum] */ -enum tagPROPDESC_TYPE_FLAGS - { PDTF_DEFAULT = 0, - PDTF_MULTIPLEVALUES = 0x1, - PDTF_ISINNATE = 0x2, - PDTF_ISGROUP = 0x4, - PDTF_CANGROUPBY = 0x8, - PDTF_CANSTACKBY = 0x10, - PDTF_ISTREEPROPERTY = 0x20, - PDTF_INCLUDEINFULLTEXTQUERY = 0x40, - PDTF_ISVIEWABLE = 0x80, - PDTF_ISQUERYABLE = 0x100, - PDTF_ISSYSTEMPROPERTY = 0x80000000, - PDTF_MASK_ALL = 0x800001ff - } ; -typedef int PROPDESC_TYPE_FLAGS; - -/* [v1_enum] */ -enum tagPROPDESC_VIEW_FLAGS - { PDVF_DEFAULT = 0, - PDVF_CENTERALIGN = 0x1, - PDVF_RIGHTALIGN = 0x2, - PDVF_BEGINNEWGROUP = 0x4, - PDVF_FILLAREA = 0x8, - PDVF_SORTDESCENDING = 0x10, - PDVF_SHOWONLYIFPRESENT = 0x20, - PDVF_SHOWBYDEFAULT = 0x40, - PDVF_SHOWINPRIMARYLIST = 0x80, - PDVF_SHOWINSECONDARYLIST = 0x100, - PDVF_HIDELABEL = 0x200, - PDVF_HIDDEN = 0x800, - PDVF_CANWRAP = 0x1000, - PDVF_MASK_ALL = 0x1bff - } ; -typedef int PROPDESC_VIEW_FLAGS; - -/* [v1_enum] */ -enum tagPROPDESC_DISPLAYTYPE - { PDDT_STRING = 0, - PDDT_NUMBER = 1, - PDDT_BOOLEAN = 2, - PDDT_DATETIME = 3, - PDDT_ENUMERATED = 4 - } ; -typedef enum tagPROPDESC_DISPLAYTYPE PROPDESC_DISPLAYTYPE; - -/* [v1_enum] */ -enum tagPROPDESC_GROUPING_RANGE - { PDGR_DISCRETE = 0, - PDGR_ALPHANUMERIC = 1, - PDGR_SIZE = 2, - PDGR_DYNAMIC = 3, - PDGR_DATE = 4, - PDGR_PERCENT = 5, - PDGR_ENUMERATED = 6 - } ; -typedef enum tagPROPDESC_GROUPING_RANGE PROPDESC_GROUPING_RANGE; - -/* [v1_enum] */ -enum tagPROPDESC_FORMAT_FLAGS - { PDFF_DEFAULT = 0, - PDFF_PREFIXNAME = 0x1, - PDFF_FILENAME = 0x2, - PDFF_ALWAYSKB = 0x4, - PDFF_RESERVED_RIGHTTOLEFT = 0x8, - PDFF_SHORTTIME = 0x10, - PDFF_LONGTIME = 0x20, - PDFF_HIDETIME = 0x40, - PDFF_SHORTDATE = 0x80, - PDFF_LONGDATE = 0x100, - PDFF_HIDEDATE = 0x200, - PDFF_RELATIVEDATE = 0x400, - PDFF_USEEDITINVITATION = 0x800, - PDFF_READONLY = 0x1000, - PDFF_NOAUTOREADINGORDER = 0x2000 - } ; -typedef int PROPDESC_FORMAT_FLAGS; - -/* [v1_enum] */ -enum tagPROPDESC_SORTDESCRIPTION - { PDSD_GENERAL = 0, - PDSD_A_Z = 1, - PDSD_LOWEST_HIGHEST = 2, - PDSD_SMALLEST_BIGGEST = 3, - PDSD_OLDEST_NEWEST = 4 - } ; -typedef enum tagPROPDESC_SORTDESCRIPTION PROPDESC_SORTDESCRIPTION; - -/* [v1_enum] */ -enum tagPROPDESC_RELATIVEDESCRIPTION_TYPE - { PDRDT_GENERAL = 0, - PDRDT_DATE = 1, - PDRDT_SIZE = 2, - PDRDT_COUNT = 3, - PDRDT_REVISION = 4, - PDRDT_LENGTH = 5, - PDRDT_DURATION = 6, - PDRDT_SPEED = 7, - PDRDT_RATE = 8, - PDRDT_RATING = 9, - PDRDT_PRIORITY = 10 - } ; -typedef enum tagPROPDESC_RELATIVEDESCRIPTION_TYPE PROPDESC_RELATIVEDESCRIPTION_TYPE; - -/* [v1_enum] */ -enum tagPROPDESC_AGGREGATION_TYPE - { PDAT_DEFAULT = 0, - PDAT_FIRST = 1, - PDAT_SUM = 2, - PDAT_AVERAGE = 3, - PDAT_DATERANGE = 4, - PDAT_UNION = 5, - PDAT_MAX = 6, - PDAT_MIN = 7 - } ; -typedef enum tagPROPDESC_AGGREGATION_TYPE PROPDESC_AGGREGATION_TYPE; - -/* [v1_enum] */ -enum tagPROPDESC_CONDITION_TYPE - { PDCOT_NONE = 0, - PDCOT_STRING = 1, - PDCOT_SIZE = 2, - PDCOT_DATETIME = 3, - PDCOT_BOOLEAN = 4, - PDCOT_NUMBER = 5 - } ; -typedef enum tagPROPDESC_CONDITION_TYPE PROPDESC_CONDITION_TYPE; - - -EXTERN_C const IID IID_IPropertyDescription; - -#if defined(__cplusplus) && !defined(CINTERFACE) - - MIDL_INTERFACE("6f79d558-3e96-4549-a1d1-7d75d2288814") - IPropertyDescription : public IUnknown - { - public: - virtual HRESULT STDMETHODCALLTYPE GetPropertyKey( - /* [out] */ __RPC__out PROPERTYKEY *pkey) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetCanonicalName( - /* [string][out] */ __RPC__deref_out_opt_string LPWSTR *ppszName) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetPropertyType( - /* [out] */ __RPC__out VARTYPE *pvartype) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetDisplayName( - /* [string][out] */ __RPC__deref_out_opt_string LPWSTR *ppszName) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetEditInvitation( - /* [string][out] */ __RPC__deref_out_opt_string LPWSTR *ppszInvite) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetTypeFlags( - /* [in] */ PROPDESC_TYPE_FLAGS mask, - /* [out] */ __RPC__out PROPDESC_TYPE_FLAGS *ppdtFlags) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetViewFlags( - /* [out] */ __RPC__out PROPDESC_VIEW_FLAGS *ppdvFlags) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetDefaultColumnWidth( - /* [out] */ __RPC__out UINT *pcxChars) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetDisplayType( - /* [out] */ __RPC__out PROPDESC_DISPLAYTYPE *pdisplaytype) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetColumnState( - /* [out] */ __RPC__out SHCOLSTATEF *pcsFlags) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetGroupingRange( - /* [out] */ __RPC__out PROPDESC_GROUPING_RANGE *pgr) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetRelativeDescriptionType( - /* [out] */ __RPC__out PROPDESC_RELATIVEDESCRIPTION_TYPE *prdt) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetRelativeDescription( - /* [in] */ __RPC__in REFPROPVARIANT propvar1, - /* [in] */ __RPC__in REFPROPVARIANT propvar2, - /* [string][out] */ __RPC__deref_out_opt_string LPWSTR *ppszDesc1, - /* [string][out] */ __RPC__deref_out_opt_string LPWSTR *ppszDesc2) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetSortDescription( - /* [out] */ __RPC__out PROPDESC_SORTDESCRIPTION *psd) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetSortDescriptionLabel( - /* [in] */ BOOL fDescending, - /* [string][out] */ __RPC__deref_out_opt_string LPWSTR *ppszDescription) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetAggregationType( - /* [out] */ __RPC__out PROPDESC_AGGREGATION_TYPE *paggtype) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetConditionType( - /* [out] */ __RPC__out PROPDESC_CONDITION_TYPE *pcontype, - /* [out] */ __RPC__out CONDITION_OPERATION *popDefault) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetEnumTypeList( - /* [in] */ __RPC__in REFIID riid, - /* [iid_is][out] */ __RPC__deref_out_opt void **ppv) = 0; - - virtual /* [local] */ HRESULT STDMETHODCALLTYPE CoerceToCanonicalValue( - /* [out][in] */ PROPVARIANT *ppropvar) = 0; - - virtual HRESULT STDMETHODCALLTYPE FormatForDisplay( - /* [in] */ __RPC__in REFPROPVARIANT propvar, - /* [in] */ PROPDESC_FORMAT_FLAGS pdfFlags, - /* [string][out] */ __RPC__deref_out_opt_string LPWSTR *ppszDisplay) = 0; - - virtual HRESULT STDMETHODCALLTYPE IsValueCanonical( - /* [in] */ __RPC__in REFPROPVARIANT propvar) = 0; - - }; - -#else /* C style interface */ - - typedef struct IPropertyDescriptionVtbl - { - BEGIN_INTERFACE - - HRESULT ( STDMETHODCALLTYPE *QueryInterface )( - IPropertyDescription * This, - /* [in] */ __RPC__in REFIID riid, - /* [iid_is][out] */ - __RPC__deref_out void **ppvObject); - - ULONG ( STDMETHODCALLTYPE *AddRef )( - IPropertyDescription * This); - - ULONG ( STDMETHODCALLTYPE *Release )( - IPropertyDescription * This); - - HRESULT ( STDMETHODCALLTYPE *GetPropertyKey )( - IPropertyDescription * This, - /* [out] */ __RPC__out PROPERTYKEY *pkey); - - HRESULT ( STDMETHODCALLTYPE *GetCanonicalName )( - IPropertyDescription * This, - /* [string][out] */ __RPC__deref_out_opt_string LPWSTR *ppszName); - - HRESULT ( STDMETHODCALLTYPE *GetPropertyType )( - IPropertyDescription * This, - /* [out] */ __RPC__out VARTYPE *pvartype); - - HRESULT ( STDMETHODCALLTYPE *GetDisplayName )( - IPropertyDescription * This, - /* [string][out] */ __RPC__deref_out_opt_string LPWSTR *ppszName); - - HRESULT ( STDMETHODCALLTYPE *GetEditInvitation )( - IPropertyDescription * This, - /* [string][out] */ __RPC__deref_out_opt_string LPWSTR *ppszInvite); - - HRESULT ( STDMETHODCALLTYPE *GetTypeFlags )( - IPropertyDescription * This, - /* [in] */ PROPDESC_TYPE_FLAGS mask, - /* [out] */ __RPC__out PROPDESC_TYPE_FLAGS *ppdtFlags); - - HRESULT ( STDMETHODCALLTYPE *GetViewFlags )( - IPropertyDescription * This, - /* [out] */ __RPC__out PROPDESC_VIEW_FLAGS *ppdvFlags); - - HRESULT ( STDMETHODCALLTYPE *GetDefaultColumnWidth )( - IPropertyDescription * This, - /* [out] */ __RPC__out UINT *pcxChars); - - HRESULT ( STDMETHODCALLTYPE *GetDisplayType )( - IPropertyDescription * This, - /* [out] */ __RPC__out PROPDESC_DISPLAYTYPE *pdisplaytype); - - HRESULT ( STDMETHODCALLTYPE *GetColumnState )( - IPropertyDescription * This, - /* [out] */ __RPC__out SHCOLSTATEF *pcsFlags); - - HRESULT ( STDMETHODCALLTYPE *GetGroupingRange )( - IPropertyDescription * This, - /* [out] */ __RPC__out PROPDESC_GROUPING_RANGE *pgr); - - HRESULT ( STDMETHODCALLTYPE *GetRelativeDescriptionType )( - IPropertyDescription * This, - /* [out] */ __RPC__out PROPDESC_RELATIVEDESCRIPTION_TYPE *prdt); - - HRESULT ( STDMETHODCALLTYPE *GetRelativeDescription )( - IPropertyDescription * This, - /* [in] */ __RPC__in REFPROPVARIANT propvar1, - /* [in] */ __RPC__in REFPROPVARIANT propvar2, - /* [string][out] */ __RPC__deref_out_opt_string LPWSTR *ppszDesc1, - /* [string][out] */ __RPC__deref_out_opt_string LPWSTR *ppszDesc2); - - HRESULT ( STDMETHODCALLTYPE *GetSortDescription )( - IPropertyDescription * This, - /* [out] */ __RPC__out PROPDESC_SORTDESCRIPTION *psd); - - HRESULT ( STDMETHODCALLTYPE *GetSortDescriptionLabel )( - IPropertyDescription * This, - /* [in] */ BOOL fDescending, - /* [string][out] */ __RPC__deref_out_opt_string LPWSTR *ppszDescription); - - HRESULT ( STDMETHODCALLTYPE *GetAggregationType )( - IPropertyDescription * This, - /* [out] */ __RPC__out PROPDESC_AGGREGATION_TYPE *paggtype); - - HRESULT ( STDMETHODCALLTYPE *GetConditionType )( - IPropertyDescription * This, - /* [out] */ __RPC__out PROPDESC_CONDITION_TYPE *pcontype, - /* [out] */ __RPC__out CONDITION_OPERATION *popDefault); - - HRESULT ( STDMETHODCALLTYPE *GetEnumTypeList )( - IPropertyDescription * This, - /* [in] */ __RPC__in REFIID riid, - /* [iid_is][out] */ __RPC__deref_out_opt void **ppv); - - /* [local] */ HRESULT ( STDMETHODCALLTYPE *CoerceToCanonicalValue )( - IPropertyDescription * This, - /* [out][in] */ PROPVARIANT *ppropvar); - - HRESULT ( STDMETHODCALLTYPE *FormatForDisplay )( - IPropertyDescription * This, - /* [in] */ __RPC__in REFPROPVARIANT propvar, - /* [in] */ PROPDESC_FORMAT_FLAGS pdfFlags, - /* [string][out] */ __RPC__deref_out_opt_string LPWSTR *ppszDisplay); - - HRESULT ( STDMETHODCALLTYPE *IsValueCanonical )( - IPropertyDescription * This, - /* [in] */ __RPC__in REFPROPVARIANT propvar); - - END_INTERFACE - } IPropertyDescriptionVtbl; - - interface IPropertyDescription - { - CONST_VTBL struct IPropertyDescriptionVtbl *lpVtbl; - }; - - - -#ifdef COBJMACROS - - -#define IPropertyDescription_QueryInterface(This,riid,ppvObject) \ - ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) - -#define IPropertyDescription_AddRef(This) \ - ( (This)->lpVtbl -> AddRef(This) ) - -#define IPropertyDescription_Release(This) \ - ( (This)->lpVtbl -> Release(This) ) - - -#define IPropertyDescription_GetPropertyKey(This,pkey) \ - ( (This)->lpVtbl -> GetPropertyKey(This,pkey) ) - -#define IPropertyDescription_GetCanonicalName(This,ppszName) \ - ( (This)->lpVtbl -> GetCanonicalName(This,ppszName) ) - -#define IPropertyDescription_GetPropertyType(This,pvartype) \ - ( (This)->lpVtbl -> GetPropertyType(This,pvartype) ) - -#define IPropertyDescription_GetDisplayName(This,ppszName) \ - ( (This)->lpVtbl -> GetDisplayName(This,ppszName) ) - -#define IPropertyDescription_GetEditInvitation(This,ppszInvite) \ - ( (This)->lpVtbl -> GetEditInvitation(This,ppszInvite) ) - -#define IPropertyDescription_GetTypeFlags(This,mask,ppdtFlags) \ - ( (This)->lpVtbl -> GetTypeFlags(This,mask,ppdtFlags) ) - -#define IPropertyDescription_GetViewFlags(This,ppdvFlags) \ - ( (This)->lpVtbl -> GetViewFlags(This,ppdvFlags) ) - -#define IPropertyDescription_GetDefaultColumnWidth(This,pcxChars) \ - ( (This)->lpVtbl -> GetDefaultColumnWidth(This,pcxChars) ) - -#define IPropertyDescription_GetDisplayType(This,pdisplaytype) \ - ( (This)->lpVtbl -> GetDisplayType(This,pdisplaytype) ) - -#define IPropertyDescription_GetColumnState(This,pcsFlags) \ - ( (This)->lpVtbl -> GetColumnState(This,pcsFlags) ) - -#define IPropertyDescription_GetGroupingRange(This,pgr) \ - ( (This)->lpVtbl -> GetGroupingRange(This,pgr) ) - -#define IPropertyDescription_GetRelativeDescriptionType(This,prdt) \ - ( (This)->lpVtbl -> GetRelativeDescriptionType(This,prdt) ) - -#define IPropertyDescription_GetRelativeDescription(This,propvar1,propvar2,ppszDesc1,ppszDesc2) \ - ( (This)->lpVtbl -> GetRelativeDescription(This,propvar1,propvar2,ppszDesc1,ppszDesc2) ) - -#define IPropertyDescription_GetSortDescription(This,psd) \ - ( (This)->lpVtbl -> GetSortDescription(This,psd) ) - -#define IPropertyDescription_GetSortDescriptionLabel(This,fDescending,ppszDescription) \ - ( (This)->lpVtbl -> GetSortDescriptionLabel(This,fDescending,ppszDescription) ) - -#define IPropertyDescription_GetAggregationType(This,paggtype) \ - ( (This)->lpVtbl -> GetAggregationType(This,paggtype) ) - -#define IPropertyDescription_GetConditionType(This,pcontype,popDefault) \ - ( (This)->lpVtbl -> GetConditionType(This,pcontype,popDefault) ) - -#define IPropertyDescription_GetEnumTypeList(This,riid,ppv) \ - ( (This)->lpVtbl -> GetEnumTypeList(This,riid,ppv) ) - -#define IPropertyDescription_CoerceToCanonicalValue(This,ppropvar) \ - ( (This)->lpVtbl -> CoerceToCanonicalValue(This,ppropvar) ) - -#define IPropertyDescription_FormatForDisplay(This,propvar,pdfFlags,ppszDisplay) \ - ( (This)->lpVtbl -> FormatForDisplay(This,propvar,pdfFlags,ppszDisplay) ) - -#define IPropertyDescription_IsValueCanonical(This,propvar) \ - ( (This)->lpVtbl -> IsValueCanonical(This,propvar) ) - -#endif /* COBJMACROS */ - - -#endif /* C style interface */ - - - -/* [call_as] */ HRESULT STDMETHODCALLTYPE IPropertyDescription_RemoteCoerceToCanonicalValue_Proxy( - IPropertyDescription * This, - /* [in] */ __RPC__in REFPROPVARIANT propvar, - /* [out] */ __RPC__out PROPVARIANT *ppropvar); - - -void __RPC_STUB IPropertyDescription_RemoteCoerceToCanonicalValue_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - - -#endif /* __IPropertyDescription_INTERFACE_DEFINED__ */ - - -#ifndef __IPropertyDescriptionAliasInfo_INTERFACE_DEFINED__ -#define __IPropertyDescriptionAliasInfo_INTERFACE_DEFINED__ - -/* interface IPropertyDescriptionAliasInfo */ -/* [unique][object][uuid] */ - - -EXTERN_C const IID IID_IPropertyDescriptionAliasInfo; - -#if defined(__cplusplus) && !defined(CINTERFACE) - - MIDL_INTERFACE("f67104fc-2af9-46fd-b32d-243c1404f3d1") - IPropertyDescriptionAliasInfo : public IPropertyDescription - { - public: - virtual HRESULT STDMETHODCALLTYPE GetSortByAlias( - /* [in] */ __RPC__in REFIID riid, - /* [iid_is][out] */ __RPC__deref_out_opt void **ppv) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetAdditionalSortByAliases( - /* [in] */ __RPC__in REFIID riid, - /* [iid_is][out] */ __RPC__deref_out_opt void **ppv) = 0; - - }; - -#else /* C style interface */ - - typedef struct IPropertyDescriptionAliasInfoVtbl - { - BEGIN_INTERFACE - - HRESULT ( STDMETHODCALLTYPE *QueryInterface )( - IPropertyDescriptionAliasInfo * This, - /* [in] */ __RPC__in REFIID riid, - /* [iid_is][out] */ - __RPC__deref_out void **ppvObject); - - ULONG ( STDMETHODCALLTYPE *AddRef )( - IPropertyDescriptionAliasInfo * This); - - ULONG ( STDMETHODCALLTYPE *Release )( - IPropertyDescriptionAliasInfo * This); - - HRESULT ( STDMETHODCALLTYPE *GetPropertyKey )( - IPropertyDescriptionAliasInfo * This, - /* [out] */ __RPC__out PROPERTYKEY *pkey); - - HRESULT ( STDMETHODCALLTYPE *GetCanonicalName )( - IPropertyDescriptionAliasInfo * This, - /* [string][out] */ __RPC__deref_out_opt_string LPWSTR *ppszName); - - HRESULT ( STDMETHODCALLTYPE *GetPropertyType )( - IPropertyDescriptionAliasInfo * This, - /* [out] */ __RPC__out VARTYPE *pvartype); - - HRESULT ( STDMETHODCALLTYPE *GetDisplayName )( - IPropertyDescriptionAliasInfo * This, - /* [string][out] */ __RPC__deref_out_opt_string LPWSTR *ppszName); - - HRESULT ( STDMETHODCALLTYPE *GetEditInvitation )( - IPropertyDescriptionAliasInfo * This, - /* [string][out] */ __RPC__deref_out_opt_string LPWSTR *ppszInvite); - - HRESULT ( STDMETHODCALLTYPE *GetTypeFlags )( - IPropertyDescriptionAliasInfo * This, - /* [in] */ PROPDESC_TYPE_FLAGS mask, - /* [out] */ __RPC__out PROPDESC_TYPE_FLAGS *ppdtFlags); - - HRESULT ( STDMETHODCALLTYPE *GetViewFlags )( - IPropertyDescriptionAliasInfo * This, - /* [out] */ __RPC__out PROPDESC_VIEW_FLAGS *ppdvFlags); - - HRESULT ( STDMETHODCALLTYPE *GetDefaultColumnWidth )( - IPropertyDescriptionAliasInfo * This, - /* [out] */ __RPC__out UINT *pcxChars); - - HRESULT ( STDMETHODCALLTYPE *GetDisplayType )( - IPropertyDescriptionAliasInfo * This, - /* [out] */ __RPC__out PROPDESC_DISPLAYTYPE *pdisplaytype); - - HRESULT ( STDMETHODCALLTYPE *GetColumnState )( - IPropertyDescriptionAliasInfo * This, - /* [out] */ __RPC__out SHCOLSTATEF *pcsFlags); - - HRESULT ( STDMETHODCALLTYPE *GetGroupingRange )( - IPropertyDescriptionAliasInfo * This, - /* [out] */ __RPC__out PROPDESC_GROUPING_RANGE *pgr); - - HRESULT ( STDMETHODCALLTYPE *GetRelativeDescriptionType )( - IPropertyDescriptionAliasInfo * This, - /* [out] */ __RPC__out PROPDESC_RELATIVEDESCRIPTION_TYPE *prdt); - - HRESULT ( STDMETHODCALLTYPE *GetRelativeDescription )( - IPropertyDescriptionAliasInfo * This, - /* [in] */ __RPC__in REFPROPVARIANT propvar1, - /* [in] */ __RPC__in REFPROPVARIANT propvar2, - /* [string][out] */ __RPC__deref_out_opt_string LPWSTR *ppszDesc1, - /* [string][out] */ __RPC__deref_out_opt_string LPWSTR *ppszDesc2); - - HRESULT ( STDMETHODCALLTYPE *GetSortDescription )( - IPropertyDescriptionAliasInfo * This, - /* [out] */ __RPC__out PROPDESC_SORTDESCRIPTION *psd); - - HRESULT ( STDMETHODCALLTYPE *GetSortDescriptionLabel )( - IPropertyDescriptionAliasInfo * This, - /* [in] */ BOOL fDescending, - /* [string][out] */ __RPC__deref_out_opt_string LPWSTR *ppszDescription); - - HRESULT ( STDMETHODCALLTYPE *GetAggregationType )( - IPropertyDescriptionAliasInfo * This, - /* [out] */ __RPC__out PROPDESC_AGGREGATION_TYPE *paggtype); - - HRESULT ( STDMETHODCALLTYPE *GetConditionType )( - IPropertyDescriptionAliasInfo * This, - /* [out] */ __RPC__out PROPDESC_CONDITION_TYPE *pcontype, - /* [out] */ __RPC__out CONDITION_OPERATION *popDefault); - - HRESULT ( STDMETHODCALLTYPE *GetEnumTypeList )( - IPropertyDescriptionAliasInfo * This, - /* [in] */ __RPC__in REFIID riid, - /* [iid_is][out] */ __RPC__deref_out_opt void **ppv); - - /* [local] */ HRESULT ( STDMETHODCALLTYPE *CoerceToCanonicalValue )( - IPropertyDescriptionAliasInfo * This, - /* [out][in] */ PROPVARIANT *ppropvar); - - HRESULT ( STDMETHODCALLTYPE *FormatForDisplay )( - IPropertyDescriptionAliasInfo * This, - /* [in] */ __RPC__in REFPROPVARIANT propvar, - /* [in] */ PROPDESC_FORMAT_FLAGS pdfFlags, - /* [string][out] */ __RPC__deref_out_opt_string LPWSTR *ppszDisplay); - - HRESULT ( STDMETHODCALLTYPE *IsValueCanonical )( - IPropertyDescriptionAliasInfo * This, - /* [in] */ __RPC__in REFPROPVARIANT propvar); - - HRESULT ( STDMETHODCALLTYPE *GetSortByAlias )( - IPropertyDescriptionAliasInfo * This, - /* [in] */ __RPC__in REFIID riid, - /* [iid_is][out] */ __RPC__deref_out_opt void **ppv); - - HRESULT ( STDMETHODCALLTYPE *GetAdditionalSortByAliases )( - IPropertyDescriptionAliasInfo * This, - /* [in] */ __RPC__in REFIID riid, - /* [iid_is][out] */ __RPC__deref_out_opt void **ppv); - - END_INTERFACE - } IPropertyDescriptionAliasInfoVtbl; - - interface IPropertyDescriptionAliasInfo - { - CONST_VTBL struct IPropertyDescriptionAliasInfoVtbl *lpVtbl; - }; - - - -#ifdef COBJMACROS - - -#define IPropertyDescriptionAliasInfo_QueryInterface(This,riid,ppvObject) \ - ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) - -#define IPropertyDescriptionAliasInfo_AddRef(This) \ - ( (This)->lpVtbl -> AddRef(This) ) - -#define IPropertyDescriptionAliasInfo_Release(This) \ - ( (This)->lpVtbl -> Release(This) ) - - -#define IPropertyDescriptionAliasInfo_GetPropertyKey(This,pkey) \ - ( (This)->lpVtbl -> GetPropertyKey(This,pkey) ) - -#define IPropertyDescriptionAliasInfo_GetCanonicalName(This,ppszName) \ - ( (This)->lpVtbl -> GetCanonicalName(This,ppszName) ) - -#define IPropertyDescriptionAliasInfo_GetPropertyType(This,pvartype) \ - ( (This)->lpVtbl -> GetPropertyType(This,pvartype) ) - -#define IPropertyDescriptionAliasInfo_GetDisplayName(This,ppszName) \ - ( (This)->lpVtbl -> GetDisplayName(This,ppszName) ) - -#define IPropertyDescriptionAliasInfo_GetEditInvitation(This,ppszInvite) \ - ( (This)->lpVtbl -> GetEditInvitation(This,ppszInvite) ) - -#define IPropertyDescriptionAliasInfo_GetTypeFlags(This,mask,ppdtFlags) \ - ( (This)->lpVtbl -> GetTypeFlags(This,mask,ppdtFlags) ) - -#define IPropertyDescriptionAliasInfo_GetViewFlags(This,ppdvFlags) \ - ( (This)->lpVtbl -> GetViewFlags(This,ppdvFlags) ) - -#define IPropertyDescriptionAliasInfo_GetDefaultColumnWidth(This,pcxChars) \ - ( (This)->lpVtbl -> GetDefaultColumnWidth(This,pcxChars) ) - -#define IPropertyDescriptionAliasInfo_GetDisplayType(This,pdisplaytype) \ - ( (This)->lpVtbl -> GetDisplayType(This,pdisplaytype) ) - -#define IPropertyDescriptionAliasInfo_GetColumnState(This,pcsFlags) \ - ( (This)->lpVtbl -> GetColumnState(This,pcsFlags) ) - -#define IPropertyDescriptionAliasInfo_GetGroupingRange(This,pgr) \ - ( (This)->lpVtbl -> GetGroupingRange(This,pgr) ) - -#define IPropertyDescriptionAliasInfo_GetRelativeDescriptionType(This,prdt) \ - ( (This)->lpVtbl -> GetRelativeDescriptionType(This,prdt) ) - -#define IPropertyDescriptionAliasInfo_GetRelativeDescription(This,propvar1,propvar2,ppszDesc1,ppszDesc2) \ - ( (This)->lpVtbl -> GetRelativeDescription(This,propvar1,propvar2,ppszDesc1,ppszDesc2) ) - -#define IPropertyDescriptionAliasInfo_GetSortDescription(This,psd) \ - ( (This)->lpVtbl -> GetSortDescription(This,psd) ) - -#define IPropertyDescriptionAliasInfo_GetSortDescriptionLabel(This,fDescending,ppszDescription) \ - ( (This)->lpVtbl -> GetSortDescriptionLabel(This,fDescending,ppszDescription) ) - -#define IPropertyDescriptionAliasInfo_GetAggregationType(This,paggtype) \ - ( (This)->lpVtbl -> GetAggregationType(This,paggtype) ) - -#define IPropertyDescriptionAliasInfo_GetConditionType(This,pcontype,popDefault) \ - ( (This)->lpVtbl -> GetConditionType(This,pcontype,popDefault) ) - -#define IPropertyDescriptionAliasInfo_GetEnumTypeList(This,riid,ppv) \ - ( (This)->lpVtbl -> GetEnumTypeList(This,riid,ppv) ) - -#define IPropertyDescriptionAliasInfo_CoerceToCanonicalValue(This,ppropvar) \ - ( (This)->lpVtbl -> CoerceToCanonicalValue(This,ppropvar) ) - -#define IPropertyDescriptionAliasInfo_FormatForDisplay(This,propvar,pdfFlags,ppszDisplay) \ - ( (This)->lpVtbl -> FormatForDisplay(This,propvar,pdfFlags,ppszDisplay) ) - -#define IPropertyDescriptionAliasInfo_IsValueCanonical(This,propvar) \ - ( (This)->lpVtbl -> IsValueCanonical(This,propvar) ) - - -#define IPropertyDescriptionAliasInfo_GetSortByAlias(This,riid,ppv) \ - ( (This)->lpVtbl -> GetSortByAlias(This,riid,ppv) ) - -#define IPropertyDescriptionAliasInfo_GetAdditionalSortByAliases(This,riid,ppv) \ - ( (This)->lpVtbl -> GetAdditionalSortByAliases(This,riid,ppv) ) - -#endif /* COBJMACROS */ - - -#endif /* C style interface */ - - - - -#endif /* __IPropertyDescriptionAliasInfo_INTERFACE_DEFINED__ */ - - -#ifndef __IPropertyDescriptionSearchInfo_INTERFACE_DEFINED__ -#define __IPropertyDescriptionSearchInfo_INTERFACE_DEFINED__ - -/* interface IPropertyDescriptionSearchInfo */ -/* [unique][object][uuid] */ - -/* [v1_enum] */ -enum tagPROPDESC_SEARCHINFO_FLAGS - { PDSIF_DEFAULT = 0, - PDSIF_ININVERTEDINDEX = 0x1, - PDSIF_ISCOLUMN = 0x2, - PDSIF_ISCOLUMNSPARSE = 0x4 - } ; -typedef int PROPDESC_SEARCHINFO_FLAGS; - -typedef /* [v1_enum] */ -enum tagPROPDESC_COLUMNINDEX_TYPE - { PDCIT_NONE = 0, - PDCIT_ONDISK = 1, - PDCIT_INMEMORY = 2 - } PROPDESC_COLUMNINDEX_TYPE; - - -EXTERN_C const IID IID_IPropertyDescriptionSearchInfo; - -#if defined(__cplusplus) && !defined(CINTERFACE) - - MIDL_INTERFACE("078f91bd-29a2-440f-924e-46a291524520") - IPropertyDescriptionSearchInfo : public IPropertyDescription - { - public: - virtual HRESULT STDMETHODCALLTYPE GetSearchInfoFlags( - /* [out] */ __RPC__out PROPDESC_SEARCHINFO_FLAGS *ppdsiFlags) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetColumnIndexType( - /* [out] */ __RPC__out PROPDESC_COLUMNINDEX_TYPE *ppdciType) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetProjectionString( - /* [out] */ __RPC__deref_out_opt LPWSTR *ppszProjection) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetMaxSize( - /* [out] */ __RPC__out UINT *pcbMaxSize) = 0; - - }; - -#else /* C style interface */ - - typedef struct IPropertyDescriptionSearchInfoVtbl - { - BEGIN_INTERFACE - - HRESULT ( STDMETHODCALLTYPE *QueryInterface )( - IPropertyDescriptionSearchInfo * This, - /* [in] */ __RPC__in REFIID riid, - /* [iid_is][out] */ - __RPC__deref_out void **ppvObject); - - ULONG ( STDMETHODCALLTYPE *AddRef )( - IPropertyDescriptionSearchInfo * This); - - ULONG ( STDMETHODCALLTYPE *Release )( - IPropertyDescriptionSearchInfo * This); - - HRESULT ( STDMETHODCALLTYPE *GetPropertyKey )( - IPropertyDescriptionSearchInfo * This, - /* [out] */ __RPC__out PROPERTYKEY *pkey); - - HRESULT ( STDMETHODCALLTYPE *GetCanonicalName )( - IPropertyDescriptionSearchInfo * This, - /* [string][out] */ __RPC__deref_out_opt_string LPWSTR *ppszName); - - HRESULT ( STDMETHODCALLTYPE *GetPropertyType )( - IPropertyDescriptionSearchInfo * This, - /* [out] */ __RPC__out VARTYPE *pvartype); - - HRESULT ( STDMETHODCALLTYPE *GetDisplayName )( - IPropertyDescriptionSearchInfo * This, - /* [string][out] */ __RPC__deref_out_opt_string LPWSTR *ppszName); - - HRESULT ( STDMETHODCALLTYPE *GetEditInvitation )( - IPropertyDescriptionSearchInfo * This, - /* [string][out] */ __RPC__deref_out_opt_string LPWSTR *ppszInvite); - - HRESULT ( STDMETHODCALLTYPE *GetTypeFlags )( - IPropertyDescriptionSearchInfo * This, - /* [in] */ PROPDESC_TYPE_FLAGS mask, - /* [out] */ __RPC__out PROPDESC_TYPE_FLAGS *ppdtFlags); - - HRESULT ( STDMETHODCALLTYPE *GetViewFlags )( - IPropertyDescriptionSearchInfo * This, - /* [out] */ __RPC__out PROPDESC_VIEW_FLAGS *ppdvFlags); - - HRESULT ( STDMETHODCALLTYPE *GetDefaultColumnWidth )( - IPropertyDescriptionSearchInfo * This, - /* [out] */ __RPC__out UINT *pcxChars); - - HRESULT ( STDMETHODCALLTYPE *GetDisplayType )( - IPropertyDescriptionSearchInfo * This, - /* [out] */ __RPC__out PROPDESC_DISPLAYTYPE *pdisplaytype); - - HRESULT ( STDMETHODCALLTYPE *GetColumnState )( - IPropertyDescriptionSearchInfo * This, - /* [out] */ __RPC__out SHCOLSTATEF *pcsFlags); - - HRESULT ( STDMETHODCALLTYPE *GetGroupingRange )( - IPropertyDescriptionSearchInfo * This, - /* [out] */ __RPC__out PROPDESC_GROUPING_RANGE *pgr); - - HRESULT ( STDMETHODCALLTYPE *GetRelativeDescriptionType )( - IPropertyDescriptionSearchInfo * This, - /* [out] */ __RPC__out PROPDESC_RELATIVEDESCRIPTION_TYPE *prdt); - - HRESULT ( STDMETHODCALLTYPE *GetRelativeDescription )( - IPropertyDescriptionSearchInfo * This, - /* [in] */ __RPC__in REFPROPVARIANT propvar1, - /* [in] */ __RPC__in REFPROPVARIANT propvar2, - /* [string][out] */ __RPC__deref_out_opt_string LPWSTR *ppszDesc1, - /* [string][out] */ __RPC__deref_out_opt_string LPWSTR *ppszDesc2); - - HRESULT ( STDMETHODCALLTYPE *GetSortDescription )( - IPropertyDescriptionSearchInfo * This, - /* [out] */ __RPC__out PROPDESC_SORTDESCRIPTION *psd); - - HRESULT ( STDMETHODCALLTYPE *GetSortDescriptionLabel )( - IPropertyDescriptionSearchInfo * This, - /* [in] */ BOOL fDescending, - /* [string][out] */ __RPC__deref_out_opt_string LPWSTR *ppszDescription); - - HRESULT ( STDMETHODCALLTYPE *GetAggregationType )( - IPropertyDescriptionSearchInfo * This, - /* [out] */ __RPC__out PROPDESC_AGGREGATION_TYPE *paggtype); - - HRESULT ( STDMETHODCALLTYPE *GetConditionType )( - IPropertyDescriptionSearchInfo * This, - /* [out] */ __RPC__out PROPDESC_CONDITION_TYPE *pcontype, - /* [out] */ __RPC__out CONDITION_OPERATION *popDefault); - - HRESULT ( STDMETHODCALLTYPE *GetEnumTypeList )( - IPropertyDescriptionSearchInfo * This, - /* [in] */ __RPC__in REFIID riid, - /* [iid_is][out] */ __RPC__deref_out_opt void **ppv); - - /* [local] */ HRESULT ( STDMETHODCALLTYPE *CoerceToCanonicalValue )( - IPropertyDescriptionSearchInfo * This, - /* [out][in] */ PROPVARIANT *ppropvar); - - HRESULT ( STDMETHODCALLTYPE *FormatForDisplay )( - IPropertyDescriptionSearchInfo * This, - /* [in] */ __RPC__in REFPROPVARIANT propvar, - /* [in] */ PROPDESC_FORMAT_FLAGS pdfFlags, - /* [string][out] */ __RPC__deref_out_opt_string LPWSTR *ppszDisplay); - - HRESULT ( STDMETHODCALLTYPE *IsValueCanonical )( - IPropertyDescriptionSearchInfo * This, - /* [in] */ __RPC__in REFPROPVARIANT propvar); - - HRESULT ( STDMETHODCALLTYPE *GetSearchInfoFlags )( - IPropertyDescriptionSearchInfo * This, - /* [out] */ __RPC__out PROPDESC_SEARCHINFO_FLAGS *ppdsiFlags); - - HRESULT ( STDMETHODCALLTYPE *GetColumnIndexType )( - IPropertyDescriptionSearchInfo * This, - /* [out] */ __RPC__out PROPDESC_COLUMNINDEX_TYPE *ppdciType); - - HRESULT ( STDMETHODCALLTYPE *GetProjectionString )( - IPropertyDescriptionSearchInfo * This, - /* [out] */ __RPC__deref_out_opt LPWSTR *ppszProjection); - - HRESULT ( STDMETHODCALLTYPE *GetMaxSize )( - IPropertyDescriptionSearchInfo * This, - /* [out] */ __RPC__out UINT *pcbMaxSize); - - END_INTERFACE - } IPropertyDescriptionSearchInfoVtbl; - - interface IPropertyDescriptionSearchInfo - { - CONST_VTBL struct IPropertyDescriptionSearchInfoVtbl *lpVtbl; - }; - - - -#ifdef COBJMACROS - - -#define IPropertyDescriptionSearchInfo_QueryInterface(This,riid,ppvObject) \ - ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) - -#define IPropertyDescriptionSearchInfo_AddRef(This) \ - ( (This)->lpVtbl -> AddRef(This) ) - -#define IPropertyDescriptionSearchInfo_Release(This) \ - ( (This)->lpVtbl -> Release(This) ) - - -#define IPropertyDescriptionSearchInfo_GetPropertyKey(This,pkey) \ - ( (This)->lpVtbl -> GetPropertyKey(This,pkey) ) - -#define IPropertyDescriptionSearchInfo_GetCanonicalName(This,ppszName) \ - ( (This)->lpVtbl -> GetCanonicalName(This,ppszName) ) - -#define IPropertyDescriptionSearchInfo_GetPropertyType(This,pvartype) \ - ( (This)->lpVtbl -> GetPropertyType(This,pvartype) ) - -#define IPropertyDescriptionSearchInfo_GetDisplayName(This,ppszName) \ - ( (This)->lpVtbl -> GetDisplayName(This,ppszName) ) - -#define IPropertyDescriptionSearchInfo_GetEditInvitation(This,ppszInvite) \ - ( (This)->lpVtbl -> GetEditInvitation(This,ppszInvite) ) - -#define IPropertyDescriptionSearchInfo_GetTypeFlags(This,mask,ppdtFlags) \ - ( (This)->lpVtbl -> GetTypeFlags(This,mask,ppdtFlags) ) - -#define IPropertyDescriptionSearchInfo_GetViewFlags(This,ppdvFlags) \ - ( (This)->lpVtbl -> GetViewFlags(This,ppdvFlags) ) - -#define IPropertyDescriptionSearchInfo_GetDefaultColumnWidth(This,pcxChars) \ - ( (This)->lpVtbl -> GetDefaultColumnWidth(This,pcxChars) ) - -#define IPropertyDescriptionSearchInfo_GetDisplayType(This,pdisplaytype) \ - ( (This)->lpVtbl -> GetDisplayType(This,pdisplaytype) ) - -#define IPropertyDescriptionSearchInfo_GetColumnState(This,pcsFlags) \ - ( (This)->lpVtbl -> GetColumnState(This,pcsFlags) ) - -#define IPropertyDescriptionSearchInfo_GetGroupingRange(This,pgr) \ - ( (This)->lpVtbl -> GetGroupingRange(This,pgr) ) - -#define IPropertyDescriptionSearchInfo_GetRelativeDescriptionType(This,prdt) \ - ( (This)->lpVtbl -> GetRelativeDescriptionType(This,prdt) ) - -#define IPropertyDescriptionSearchInfo_GetRelativeDescription(This,propvar1,propvar2,ppszDesc1,ppszDesc2) \ - ( (This)->lpVtbl -> GetRelativeDescription(This,propvar1,propvar2,ppszDesc1,ppszDesc2) ) - -#define IPropertyDescriptionSearchInfo_GetSortDescription(This,psd) \ - ( (This)->lpVtbl -> GetSortDescription(This,psd) ) - -#define IPropertyDescriptionSearchInfo_GetSortDescriptionLabel(This,fDescending,ppszDescription) \ - ( (This)->lpVtbl -> GetSortDescriptionLabel(This,fDescending,ppszDescription) ) - -#define IPropertyDescriptionSearchInfo_GetAggregationType(This,paggtype) \ - ( (This)->lpVtbl -> GetAggregationType(This,paggtype) ) - -#define IPropertyDescriptionSearchInfo_GetConditionType(This,pcontype,popDefault) \ - ( (This)->lpVtbl -> GetConditionType(This,pcontype,popDefault) ) - -#define IPropertyDescriptionSearchInfo_GetEnumTypeList(This,riid,ppv) \ - ( (This)->lpVtbl -> GetEnumTypeList(This,riid,ppv) ) - -#define IPropertyDescriptionSearchInfo_CoerceToCanonicalValue(This,ppropvar) \ - ( (This)->lpVtbl -> CoerceToCanonicalValue(This,ppropvar) ) - -#define IPropertyDescriptionSearchInfo_FormatForDisplay(This,propvar,pdfFlags,ppszDisplay) \ - ( (This)->lpVtbl -> FormatForDisplay(This,propvar,pdfFlags,ppszDisplay) ) - -#define IPropertyDescriptionSearchInfo_IsValueCanonical(This,propvar) \ - ( (This)->lpVtbl -> IsValueCanonical(This,propvar) ) - - -#define IPropertyDescriptionSearchInfo_GetSearchInfoFlags(This,ppdsiFlags) \ - ( (This)->lpVtbl -> GetSearchInfoFlags(This,ppdsiFlags) ) - -#define IPropertyDescriptionSearchInfo_GetColumnIndexType(This,ppdciType) \ - ( (This)->lpVtbl -> GetColumnIndexType(This,ppdciType) ) - -#define IPropertyDescriptionSearchInfo_GetProjectionString(This,ppszProjection) \ - ( (This)->lpVtbl -> GetProjectionString(This,ppszProjection) ) - -#define IPropertyDescriptionSearchInfo_GetMaxSize(This,pcbMaxSize) \ - ( (This)->lpVtbl -> GetMaxSize(This,pcbMaxSize) ) - -#endif /* COBJMACROS */ - - -#endif /* C style interface */ - - - - -#endif /* __IPropertyDescriptionSearchInfo_INTERFACE_DEFINED__ */ - - -/* interface __MIDL_itf_propsys_0000_0014 */ -/* [local] */ - -/* [v1_enum] */ -enum tagPROPDESC_ENUMFILTER - { PDEF_ALL = 0, - PDEF_SYSTEM = 1, - PDEF_NONSYSTEM = 2, - PDEF_VIEWABLE = 3, - PDEF_QUERYABLE = 4, - PDEF_INFULLTEXTQUERY = 5, - PDEF_COLUMN = 6 - } ; -typedef enum tagPROPDESC_ENUMFILTER PROPDESC_ENUMFILTER; - - - -extern RPC_IF_HANDLE __MIDL_itf_propsys_0000_0014_v0_0_c_ifspec; -extern RPC_IF_HANDLE __MIDL_itf_propsys_0000_0014_v0_0_s_ifspec; - -#ifndef __IPropertySystem_INTERFACE_DEFINED__ -#define __IPropertySystem_INTERFACE_DEFINED__ - -/* interface IPropertySystem */ -/* [unique][object][uuid] */ - - -EXTERN_C const IID IID_IPropertySystem; - -#if defined(__cplusplus) && !defined(CINTERFACE) - - MIDL_INTERFACE("ca724e8a-c3e6-442b-88a4-6fb0db8035a3") - IPropertySystem : public IUnknown - { - public: - virtual HRESULT STDMETHODCALLTYPE GetPropertyDescription( - /* [in] */ __RPC__in REFPROPERTYKEY propkey, - /* [in] */ __RPC__in REFIID riid, - /* [iid_is][out] */ __RPC__deref_out_opt void **ppv) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetPropertyDescriptionByName( - /* [string][in] */ __RPC__in LPCWSTR pszCanonicalName, - /* [in] */ __RPC__in REFIID riid, - /* [iid_is][out] */ __RPC__deref_out_opt void **ppv) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetPropertyDescriptionListFromString( - /* [string][in] */ __RPC__in LPCWSTR pszPropList, - /* [in] */ __RPC__in REFIID riid, - /* [iid_is][out] */ __RPC__deref_out_opt void **ppv) = 0; - - virtual HRESULT STDMETHODCALLTYPE EnumeratePropertyDescriptions( - /* [in] */ PROPDESC_ENUMFILTER filterOn, - /* [in] */ __RPC__in REFIID riid, - /* [iid_is][out] */ __RPC__deref_out_opt void **ppv) = 0; - - virtual HRESULT STDMETHODCALLTYPE FormatForDisplay( - /* [in] */ __RPC__in REFPROPERTYKEY key, - /* [in] */ __RPC__in REFPROPVARIANT propvar, - /* [in] */ PROPDESC_FORMAT_FLAGS pdff, - /* [size_is][string][out] */ __RPC__out_ecount_full_string(cchText) LPWSTR pszText, - /* [in] */ DWORD cchText) = 0; - - virtual HRESULT STDMETHODCALLTYPE FormatForDisplayAlloc( - /* [in] */ __RPC__in REFPROPERTYKEY key, - /* [in] */ __RPC__in REFPROPVARIANT propvar, - /* [in] */ PROPDESC_FORMAT_FLAGS pdff, - /* [string][out] */ __RPC__deref_out_opt_string LPWSTR *ppszDisplay) = 0; - - virtual HRESULT STDMETHODCALLTYPE RegisterPropertySchema( - /* [string][in] */ __RPC__in LPCWSTR pszPath) = 0; - - virtual HRESULT STDMETHODCALLTYPE UnregisterPropertySchema( - /* [string][in] */ __RPC__in LPCWSTR pszPath) = 0; - - virtual HRESULT STDMETHODCALLTYPE RefreshPropertySchema( void) = 0; - - }; - -#else /* C style interface */ - - typedef struct IPropertySystemVtbl - { - BEGIN_INTERFACE - - HRESULT ( STDMETHODCALLTYPE *QueryInterface )( - IPropertySystem * This, - /* [in] */ __RPC__in REFIID riid, - /* [iid_is][out] */ - __RPC__deref_out void **ppvObject); - - ULONG ( STDMETHODCALLTYPE *AddRef )( - IPropertySystem * This); - - ULONG ( STDMETHODCALLTYPE *Release )( - IPropertySystem * This); - - HRESULT ( STDMETHODCALLTYPE *GetPropertyDescription )( - IPropertySystem * This, - /* [in] */ __RPC__in REFPROPERTYKEY propkey, - /* [in] */ __RPC__in REFIID riid, - /* [iid_is][out] */ __RPC__deref_out_opt void **ppv); - - HRESULT ( STDMETHODCALLTYPE *GetPropertyDescriptionByName )( - IPropertySystem * This, - /* [string][in] */ __RPC__in LPCWSTR pszCanonicalName, - /* [in] */ __RPC__in REFIID riid, - /* [iid_is][out] */ __RPC__deref_out_opt void **ppv); - - HRESULT ( STDMETHODCALLTYPE *GetPropertyDescriptionListFromString )( - IPropertySystem * This, - /* [string][in] */ __RPC__in LPCWSTR pszPropList, - /* [in] */ __RPC__in REFIID riid, - /* [iid_is][out] */ __RPC__deref_out_opt void **ppv); - - HRESULT ( STDMETHODCALLTYPE *EnumeratePropertyDescriptions )( - IPropertySystem * This, - /* [in] */ PROPDESC_ENUMFILTER filterOn, - /* [in] */ __RPC__in REFIID riid, - /* [iid_is][out] */ __RPC__deref_out_opt void **ppv); - - HRESULT ( STDMETHODCALLTYPE *FormatForDisplay )( - IPropertySystem * This, - /* [in] */ __RPC__in REFPROPERTYKEY key, - /* [in] */ __RPC__in REFPROPVARIANT propvar, - /* [in] */ PROPDESC_FORMAT_FLAGS pdff, - /* [size_is][string][out] */ __RPC__out_ecount_full_string(cchText) LPWSTR pszText, - /* [in] */ DWORD cchText); - - HRESULT ( STDMETHODCALLTYPE *FormatForDisplayAlloc )( - IPropertySystem * This, - /* [in] */ __RPC__in REFPROPERTYKEY key, - /* [in] */ __RPC__in REFPROPVARIANT propvar, - /* [in] */ PROPDESC_FORMAT_FLAGS pdff, - /* [string][out] */ __RPC__deref_out_opt_string LPWSTR *ppszDisplay); - - HRESULT ( STDMETHODCALLTYPE *RegisterPropertySchema )( - IPropertySystem * This, - /* [string][in] */ __RPC__in LPCWSTR pszPath); - - HRESULT ( STDMETHODCALLTYPE *UnregisterPropertySchema )( - IPropertySystem * This, - /* [string][in] */ __RPC__in LPCWSTR pszPath); - - HRESULT ( STDMETHODCALLTYPE *RefreshPropertySchema )( - IPropertySystem * This); - - END_INTERFACE - } IPropertySystemVtbl; - - interface IPropertySystem - { - CONST_VTBL struct IPropertySystemVtbl *lpVtbl; - }; - - - -#ifdef COBJMACROS - - -#define IPropertySystem_QueryInterface(This,riid,ppvObject) \ - ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) - -#define IPropertySystem_AddRef(This) \ - ( (This)->lpVtbl -> AddRef(This) ) - -#define IPropertySystem_Release(This) \ - ( (This)->lpVtbl -> Release(This) ) - - -#define IPropertySystem_GetPropertyDescription(This,propkey,riid,ppv) \ - ( (This)->lpVtbl -> GetPropertyDescription(This,propkey,riid,ppv) ) - -#define IPropertySystem_GetPropertyDescriptionByName(This,pszCanonicalName,riid,ppv) \ - ( (This)->lpVtbl -> GetPropertyDescriptionByName(This,pszCanonicalName,riid,ppv) ) - -#define IPropertySystem_GetPropertyDescriptionListFromString(This,pszPropList,riid,ppv) \ - ( (This)->lpVtbl -> GetPropertyDescriptionListFromString(This,pszPropList,riid,ppv) ) - -#define IPropertySystem_EnumeratePropertyDescriptions(This,filterOn,riid,ppv) \ - ( (This)->lpVtbl -> EnumeratePropertyDescriptions(This,filterOn,riid,ppv) ) - -#define IPropertySystem_FormatForDisplay(This,key,propvar,pdff,pszText,cchText) \ - ( (This)->lpVtbl -> FormatForDisplay(This,key,propvar,pdff,pszText,cchText) ) - -#define IPropertySystem_FormatForDisplayAlloc(This,key,propvar,pdff,ppszDisplay) \ - ( (This)->lpVtbl -> FormatForDisplayAlloc(This,key,propvar,pdff,ppszDisplay) ) - -#define IPropertySystem_RegisterPropertySchema(This,pszPath) \ - ( (This)->lpVtbl -> RegisterPropertySchema(This,pszPath) ) - -#define IPropertySystem_UnregisterPropertySchema(This,pszPath) \ - ( (This)->lpVtbl -> UnregisterPropertySchema(This,pszPath) ) - -#define IPropertySystem_RefreshPropertySchema(This) \ - ( (This)->lpVtbl -> RefreshPropertySchema(This) ) - -#endif /* COBJMACROS */ - - -#endif /* C style interface */ - - - - -#endif /* __IPropertySystem_INTERFACE_DEFINED__ */ - - -#ifndef __IPropertyDescriptionList_INTERFACE_DEFINED__ -#define __IPropertyDescriptionList_INTERFACE_DEFINED__ - -/* interface IPropertyDescriptionList */ -/* [unique][object][uuid] */ - - -EXTERN_C const IID IID_IPropertyDescriptionList; - -#if defined(__cplusplus) && !defined(CINTERFACE) - - MIDL_INTERFACE("1f9fc1d0-c39b-4b26-817f-011967d3440e") - IPropertyDescriptionList : public IUnknown - { - public: - virtual HRESULT STDMETHODCALLTYPE GetCount( - /* [out] */ __RPC__out UINT *pcElem) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetAt( - /* [in] */ UINT iElem, - /* [in] */ __RPC__in REFIID riid, - /* [iid_is][out] */ __RPC__deref_out_opt void **ppv) = 0; - - }; - -#else /* C style interface */ - - typedef struct IPropertyDescriptionListVtbl - { - BEGIN_INTERFACE - - HRESULT ( STDMETHODCALLTYPE *QueryInterface )( - IPropertyDescriptionList * This, - /* [in] */ __RPC__in REFIID riid, - /* [iid_is][out] */ - __RPC__deref_out void **ppvObject); - - ULONG ( STDMETHODCALLTYPE *AddRef )( - IPropertyDescriptionList * This); - - ULONG ( STDMETHODCALLTYPE *Release )( - IPropertyDescriptionList * This); - - HRESULT ( STDMETHODCALLTYPE *GetCount )( - IPropertyDescriptionList * This, - /* [out] */ __RPC__out UINT *pcElem); - - HRESULT ( STDMETHODCALLTYPE *GetAt )( - IPropertyDescriptionList * This, - /* [in] */ UINT iElem, - /* [in] */ __RPC__in REFIID riid, - /* [iid_is][out] */ __RPC__deref_out_opt void **ppv); - - END_INTERFACE - } IPropertyDescriptionListVtbl; - - interface IPropertyDescriptionList - { - CONST_VTBL struct IPropertyDescriptionListVtbl *lpVtbl; - }; - - - -#ifdef COBJMACROS - - -#define IPropertyDescriptionList_QueryInterface(This,riid,ppvObject) \ - ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) - -#define IPropertyDescriptionList_AddRef(This) \ - ( (This)->lpVtbl -> AddRef(This) ) - -#define IPropertyDescriptionList_Release(This) \ - ( (This)->lpVtbl -> Release(This) ) - - -#define IPropertyDescriptionList_GetCount(This,pcElem) \ - ( (This)->lpVtbl -> GetCount(This,pcElem) ) - -#define IPropertyDescriptionList_GetAt(This,iElem,riid,ppv) \ - ( (This)->lpVtbl -> GetAt(This,iElem,riid,ppv) ) - -#endif /* COBJMACROS */ - - -#endif /* C style interface */ - - - - -#endif /* __IPropertyDescriptionList_INTERFACE_DEFINED__ */ - - -#ifndef __IPropertyStoreFactory_INTERFACE_DEFINED__ -#define __IPropertyStoreFactory_INTERFACE_DEFINED__ - -/* interface IPropertyStoreFactory */ -/* [unique][object][uuid] */ - - -EXTERN_C const IID IID_IPropertyStoreFactory; - -#if defined(__cplusplus) && !defined(CINTERFACE) - - MIDL_INTERFACE("bc110b6d-57e8-4148-a9c6-91015ab2f3a5") - IPropertyStoreFactory : public IUnknown - { - public: - virtual HRESULT STDMETHODCALLTYPE GetPropertyStore( - /* [in] */ GETPROPERTYSTOREFLAGS flags, - /* [unique][in] */ __RPC__in_opt IUnknown *pUnkFactory, - /* [in] */ __RPC__in REFIID riid, - /* [iid_is][out] */ __RPC__deref_out_opt void **ppv) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetPropertyStoreForKeys( - /* [unique][in] */ __RPC__in_opt const PROPERTYKEY *rgKeys, - /* [in] */ UINT cKeys, - /* [in] */ GETPROPERTYSTOREFLAGS flags, - /* [in] */ __RPC__in REFIID riid, - /* [iid_is][out] */ __RPC__deref_out_opt void **ppv) = 0; - - }; - -#else /* C style interface */ - - typedef struct IPropertyStoreFactoryVtbl - { - BEGIN_INTERFACE - - HRESULT ( STDMETHODCALLTYPE *QueryInterface )( - IPropertyStoreFactory * This, - /* [in] */ __RPC__in REFIID riid, - /* [iid_is][out] */ - __RPC__deref_out void **ppvObject); - - ULONG ( STDMETHODCALLTYPE *AddRef )( - IPropertyStoreFactory * This); - - ULONG ( STDMETHODCALLTYPE *Release )( - IPropertyStoreFactory * This); - - HRESULT ( STDMETHODCALLTYPE *GetPropertyStore )( - IPropertyStoreFactory * This, - /* [in] */ GETPROPERTYSTOREFLAGS flags, - /* [unique][in] */ __RPC__in_opt IUnknown *pUnkFactory, - /* [in] */ __RPC__in REFIID riid, - /* [iid_is][out] */ __RPC__deref_out_opt void **ppv); - - HRESULT ( STDMETHODCALLTYPE *GetPropertyStoreForKeys )( - IPropertyStoreFactory * This, - /* [unique][in] */ __RPC__in_opt const PROPERTYKEY *rgKeys, - /* [in] */ UINT cKeys, - /* [in] */ GETPROPERTYSTOREFLAGS flags, - /* [in] */ __RPC__in REFIID riid, - /* [iid_is][out] */ __RPC__deref_out_opt void **ppv); - - END_INTERFACE - } IPropertyStoreFactoryVtbl; - - interface IPropertyStoreFactory - { - CONST_VTBL struct IPropertyStoreFactoryVtbl *lpVtbl; - }; - - - -#ifdef COBJMACROS - - -#define IPropertyStoreFactory_QueryInterface(This,riid,ppvObject) \ - ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) - -#define IPropertyStoreFactory_AddRef(This) \ - ( (This)->lpVtbl -> AddRef(This) ) - -#define IPropertyStoreFactory_Release(This) \ - ( (This)->lpVtbl -> Release(This) ) - - -#define IPropertyStoreFactory_GetPropertyStore(This,flags,pUnkFactory,riid,ppv) \ - ( (This)->lpVtbl -> GetPropertyStore(This,flags,pUnkFactory,riid,ppv) ) - -#define IPropertyStoreFactory_GetPropertyStoreForKeys(This,rgKeys,cKeys,flags,riid,ppv) \ - ( (This)->lpVtbl -> GetPropertyStoreForKeys(This,rgKeys,cKeys,flags,riid,ppv) ) - -#endif /* COBJMACROS */ - - -#endif /* C style interface */ - - - - -#endif /* __IPropertyStoreFactory_INTERFACE_DEFINED__ */ - - -#ifndef __IDelayedPropertyStoreFactory_INTERFACE_DEFINED__ -#define __IDelayedPropertyStoreFactory_INTERFACE_DEFINED__ - -/* interface IDelayedPropertyStoreFactory */ -/* [unique][object][uuid] */ - - -EXTERN_C const IID IID_IDelayedPropertyStoreFactory; - -#if defined(__cplusplus) && !defined(CINTERFACE) - - MIDL_INTERFACE("40d4577f-e237-4bdb-bd69-58f089431b6a") - IDelayedPropertyStoreFactory : public IPropertyStoreFactory - { - public: - virtual HRESULT STDMETHODCALLTYPE GetDelayedPropertyStore( - /* [in] */ GETPROPERTYSTOREFLAGS flags, - /* [in] */ DWORD dwStoreId, - /* [in] */ __RPC__in REFIID riid, - /* [iid_is][out] */ __RPC__deref_out_opt void **ppv) = 0; - - }; - -#else /* C style interface */ - - typedef struct IDelayedPropertyStoreFactoryVtbl - { - BEGIN_INTERFACE - - HRESULT ( STDMETHODCALLTYPE *QueryInterface )( - IDelayedPropertyStoreFactory * This, - /* [in] */ __RPC__in REFIID riid, - /* [iid_is][out] */ - __RPC__deref_out void **ppvObject); - - ULONG ( STDMETHODCALLTYPE *AddRef )( - IDelayedPropertyStoreFactory * This); - - ULONG ( STDMETHODCALLTYPE *Release )( - IDelayedPropertyStoreFactory * This); - - HRESULT ( STDMETHODCALLTYPE *GetPropertyStore )( - IDelayedPropertyStoreFactory * This, - /* [in] */ GETPROPERTYSTOREFLAGS flags, - /* [unique][in] */ __RPC__in_opt IUnknown *pUnkFactory, - /* [in] */ __RPC__in REFIID riid, - /* [iid_is][out] */ __RPC__deref_out_opt void **ppv); - - HRESULT ( STDMETHODCALLTYPE *GetPropertyStoreForKeys )( - IDelayedPropertyStoreFactory * This, - /* [unique][in] */ __RPC__in_opt const PROPERTYKEY *rgKeys, - /* [in] */ UINT cKeys, - /* [in] */ GETPROPERTYSTOREFLAGS flags, - /* [in] */ __RPC__in REFIID riid, - /* [iid_is][out] */ __RPC__deref_out_opt void **ppv); - - HRESULT ( STDMETHODCALLTYPE *GetDelayedPropertyStore )( - IDelayedPropertyStoreFactory * This, - /* [in] */ GETPROPERTYSTOREFLAGS flags, - /* [in] */ DWORD dwStoreId, - /* [in] */ __RPC__in REFIID riid, - /* [iid_is][out] */ __RPC__deref_out_opt void **ppv); - - END_INTERFACE - } IDelayedPropertyStoreFactoryVtbl; - - interface IDelayedPropertyStoreFactory - { - CONST_VTBL struct IDelayedPropertyStoreFactoryVtbl *lpVtbl; - }; - - - -#ifdef COBJMACROS - - -#define IDelayedPropertyStoreFactory_QueryInterface(This,riid,ppvObject) \ - ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) - -#define IDelayedPropertyStoreFactory_AddRef(This) \ - ( (This)->lpVtbl -> AddRef(This) ) - -#define IDelayedPropertyStoreFactory_Release(This) \ - ( (This)->lpVtbl -> Release(This) ) - - -#define IDelayedPropertyStoreFactory_GetPropertyStore(This,flags,pUnkFactory,riid,ppv) \ - ( (This)->lpVtbl -> GetPropertyStore(This,flags,pUnkFactory,riid,ppv) ) - -#define IDelayedPropertyStoreFactory_GetPropertyStoreForKeys(This,rgKeys,cKeys,flags,riid,ppv) \ - ( (This)->lpVtbl -> GetPropertyStoreForKeys(This,rgKeys,cKeys,flags,riid,ppv) ) - - -#define IDelayedPropertyStoreFactory_GetDelayedPropertyStore(This,flags,dwStoreId,riid,ppv) \ - ( (This)->lpVtbl -> GetDelayedPropertyStore(This,flags,dwStoreId,riid,ppv) ) - -#endif /* COBJMACROS */ - - -#endif /* C style interface */ - - - - -#endif /* __IDelayedPropertyStoreFactory_INTERFACE_DEFINED__ */ - - -/* interface __MIDL_itf_propsys_0000_0018 */ -/* [local] */ - -/* [v1_enum] */ -enum tagPERSIST_SPROPSTORE_FLAGS - { FPSPS_READONLY = 0x1 - } ; -typedef int PERSIST_SPROPSTORE_FLAGS; - -typedef struct tagSERIALIZEDPROPSTORAGE SERIALIZEDPROPSTORAGE; - -typedef SERIALIZEDPROPSTORAGE __unaligned *PUSERIALIZEDPROPSTORAGE; - -typedef const SERIALIZEDPROPSTORAGE __unaligned *PCUSERIALIZEDPROPSTORAGE; - - - -extern RPC_IF_HANDLE __MIDL_itf_propsys_0000_0018_v0_0_c_ifspec; -extern RPC_IF_HANDLE __MIDL_itf_propsys_0000_0018_v0_0_s_ifspec; - -#ifndef __IPersistSerializedPropStorage_INTERFACE_DEFINED__ -#define __IPersistSerializedPropStorage_INTERFACE_DEFINED__ - -/* interface IPersistSerializedPropStorage */ -/* [object][local][unique][uuid] */ - - -EXTERN_C const IID IID_IPersistSerializedPropStorage; - -#if defined(__cplusplus) && !defined(CINTERFACE) - - MIDL_INTERFACE("e318ad57-0aa0-450f-aca5-6fab7103d917") - IPersistSerializedPropStorage : public IUnknown - { - public: - virtual HRESULT STDMETHODCALLTYPE SetFlags( - /* [in] */ PERSIST_SPROPSTORE_FLAGS flags) = 0; - - virtual HRESULT STDMETHODCALLTYPE SetPropertyStorage( - /* [in] */ - __in_bcount(cb) PCUSERIALIZEDPROPSTORAGE psps, - /* [in] */ - __in DWORD cb) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetPropertyStorage( - /* [out] */ - __deref_out_bcount(*pcb) SERIALIZEDPROPSTORAGE **ppsps, - /* [out] */ - __out DWORD *pcb) = 0; - - }; - -#else /* C style interface */ - - typedef struct IPersistSerializedPropStorageVtbl - { - BEGIN_INTERFACE - - HRESULT ( STDMETHODCALLTYPE *QueryInterface )( - IPersistSerializedPropStorage * This, - /* [in] */ REFIID riid, - /* [iid_is][out] */ - __RPC__deref_out void **ppvObject); - - ULONG ( STDMETHODCALLTYPE *AddRef )( - IPersistSerializedPropStorage * This); - - ULONG ( STDMETHODCALLTYPE *Release )( - IPersistSerializedPropStorage * This); - - HRESULT ( STDMETHODCALLTYPE *SetFlags )( - IPersistSerializedPropStorage * This, - /* [in] */ PERSIST_SPROPSTORE_FLAGS flags); - - HRESULT ( STDMETHODCALLTYPE *SetPropertyStorage )( - IPersistSerializedPropStorage * This, - /* [in] */ - __in_bcount(cb) PCUSERIALIZEDPROPSTORAGE psps, - /* [in] */ - __in DWORD cb); - - HRESULT ( STDMETHODCALLTYPE *GetPropertyStorage )( - IPersistSerializedPropStorage * This, - /* [out] */ - __deref_out_bcount(*pcb) SERIALIZEDPROPSTORAGE **ppsps, - /* [out] */ - __out DWORD *pcb); - - END_INTERFACE - } IPersistSerializedPropStorageVtbl; - - interface IPersistSerializedPropStorage - { - CONST_VTBL struct IPersistSerializedPropStorageVtbl *lpVtbl; - }; - - - -#ifdef COBJMACROS - - -#define IPersistSerializedPropStorage_QueryInterface(This,riid,ppvObject) \ - ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) - -#define IPersistSerializedPropStorage_AddRef(This) \ - ( (This)->lpVtbl -> AddRef(This) ) - -#define IPersistSerializedPropStorage_Release(This) \ - ( (This)->lpVtbl -> Release(This) ) - - -#define IPersistSerializedPropStorage_SetFlags(This,flags) \ - ( (This)->lpVtbl -> SetFlags(This,flags) ) - -#define IPersistSerializedPropStorage_SetPropertyStorage(This,psps,cb) \ - ( (This)->lpVtbl -> SetPropertyStorage(This,psps,cb) ) - -#define IPersistSerializedPropStorage_GetPropertyStorage(This,ppsps,pcb) \ - ( (This)->lpVtbl -> GetPropertyStorage(This,ppsps,pcb) ) - -#endif /* COBJMACROS */ - - -#endif /* C style interface */ - - - - -#endif /* __IPersistSerializedPropStorage_INTERFACE_DEFINED__ */ - - -#ifndef __IPropertySystemChangeNotify_INTERFACE_DEFINED__ -#define __IPropertySystemChangeNotify_INTERFACE_DEFINED__ - -/* interface IPropertySystemChangeNotify */ -/* [unique][object][uuid] */ - - -EXTERN_C const IID IID_IPropertySystemChangeNotify; - -#if defined(__cplusplus) && !defined(CINTERFACE) - - MIDL_INTERFACE("fa955fd9-38be-4879-a6ce-824cf52d609f") - IPropertySystemChangeNotify : public IUnknown - { - public: - virtual HRESULT STDMETHODCALLTYPE SchemaRefreshed( void) = 0; - - }; - -#else /* C style interface */ - - typedef struct IPropertySystemChangeNotifyVtbl - { - BEGIN_INTERFACE - - HRESULT ( STDMETHODCALLTYPE *QueryInterface )( - IPropertySystemChangeNotify * This, - /* [in] */ __RPC__in REFIID riid, - /* [iid_is][out] */ - __RPC__deref_out void **ppvObject); - - ULONG ( STDMETHODCALLTYPE *AddRef )( - IPropertySystemChangeNotify * This); - - ULONG ( STDMETHODCALLTYPE *Release )( - IPropertySystemChangeNotify * This); - - HRESULT ( STDMETHODCALLTYPE *SchemaRefreshed )( - IPropertySystemChangeNotify * This); - - END_INTERFACE - } IPropertySystemChangeNotifyVtbl; - - interface IPropertySystemChangeNotify - { - CONST_VTBL struct IPropertySystemChangeNotifyVtbl *lpVtbl; - }; - - - -#ifdef COBJMACROS - - -#define IPropertySystemChangeNotify_QueryInterface(This,riid,ppvObject) \ - ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) - -#define IPropertySystemChangeNotify_AddRef(This) \ - ( (This)->lpVtbl -> AddRef(This) ) - -#define IPropertySystemChangeNotify_Release(This) \ - ( (This)->lpVtbl -> Release(This) ) - - -#define IPropertySystemChangeNotify_SchemaRefreshed(This) \ - ( (This)->lpVtbl -> SchemaRefreshed(This) ) - -#endif /* COBJMACROS */ - - -#endif /* C style interface */ - - - - -#endif /* __IPropertySystemChangeNotify_INTERFACE_DEFINED__ */ - - -#ifndef __ICreateObject_INTERFACE_DEFINED__ -#define __ICreateObject_INTERFACE_DEFINED__ - -/* interface ICreateObject */ -/* [object][unique][uuid] */ - - -EXTERN_C const IID IID_ICreateObject; - -#if defined(__cplusplus) && !defined(CINTERFACE) - - MIDL_INTERFACE("75121952-e0d0-43e5-9380-1d80483acf72") - ICreateObject : public IUnknown - { - public: - virtual HRESULT STDMETHODCALLTYPE CreateObject( - /* [in] */ __RPC__in REFCLSID clsid, - /* [unique][in] */ __RPC__in_opt IUnknown *pUnkOuter, - /* [in] */ __RPC__in REFIID riid, - /* [iid_is][out] */ __RPC__deref_out_opt void **ppv) = 0; - - }; - -#else /* C style interface */ - - typedef struct ICreateObjectVtbl - { - BEGIN_INTERFACE - - HRESULT ( STDMETHODCALLTYPE *QueryInterface )( - ICreateObject * This, - /* [in] */ __RPC__in REFIID riid, - /* [iid_is][out] */ - __RPC__deref_out void **ppvObject); - - ULONG ( STDMETHODCALLTYPE *AddRef )( - ICreateObject * This); - - ULONG ( STDMETHODCALLTYPE *Release )( - ICreateObject * This); - - HRESULT ( STDMETHODCALLTYPE *CreateObject )( - ICreateObject * This, - /* [in] */ __RPC__in REFCLSID clsid, - /* [unique][in] */ __RPC__in_opt IUnknown *pUnkOuter, - /* [in] */ __RPC__in REFIID riid, - /* [iid_is][out] */ __RPC__deref_out_opt void **ppv); - - END_INTERFACE - } ICreateObjectVtbl; - - interface ICreateObject - { - CONST_VTBL struct ICreateObjectVtbl *lpVtbl; - }; - - - -#ifdef COBJMACROS - - -#define ICreateObject_QueryInterface(This,riid,ppvObject) \ - ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) - -#define ICreateObject_AddRef(This) \ - ( (This)->lpVtbl -> AddRef(This) ) - -#define ICreateObject_Release(This) \ - ( (This)->lpVtbl -> Release(This) ) - - -#define ICreateObject_CreateObject(This,clsid,pUnkOuter,riid,ppv) \ - ( (This)->lpVtbl -> CreateObject(This,clsid,pUnkOuter,riid,ppv) ) - -#endif /* COBJMACROS */ - - -#endif /* C style interface */ - - - - -#endif /* __ICreateObject_INTERFACE_DEFINED__ */ - - -/* interface __MIDL_itf_propsys_0000_0021 */ -/* [local] */ - -// Format a property value for display purposes -PSSTDAPI PSFormatForDisplay( - __in REFPROPERTYKEY propkey, - __in REFPROPVARIANT propvar, - __in PROPDESC_FORMAT_FLAGS pdfFlags, - __out_ecount(cchText) LPWSTR pwszText, - __in DWORD cchText); - -PSSTDAPI PSFormatForDisplayAlloc( - __in REFPROPERTYKEY key, - __in REFPROPVARIANT propvar, - __in PROPDESC_FORMAT_FLAGS pdff, - __deref_out PWSTR *ppszDisplay); - -PSSTDAPI PSFormatPropertyValue( - __in IPropertyStore *pps, - __in IPropertyDescription *ppd, - __in PROPDESC_FORMAT_FLAGS pdff, - __deref_out LPWSTR *ppszDisplay); - - -#define PKEY_PIDSTR_MAX 10 // will take care of any long integer value -#define GUIDSTRING_MAX (1 + 8 + 1 + 4 + 1 + 4 + 1 + 4 + 1 + 12 + 1 + 1) // "{12345678-1234-1234-1234-123456789012}" -#define PKEYSTR_MAX (GUIDSTRING_MAX + 1 + PKEY_PIDSTR_MAX) - -// Convert a PROPERTYKEY to and from a PWSTR -PSSTDAPI PSStringFromPropertyKey( - __in REFPROPERTYKEY pkey, - __out_ecount(cch) LPWSTR psz, - __in UINT cch); - -PSSTDAPI PSPropertyKeyFromString( - __in LPCWSTR pszString, - __out PROPERTYKEY *pkey); - - -// Creates an in-memory property store -// Returns an IPropertyStore, IPersistSerializedPropStorage, and related interfaces interface -PSSTDAPI PSCreateMemoryPropertyStore( - __in REFIID riid, - __deref_out void **ppv); - - -// Create a read-only, delay-bind multiplexing property store -// Returns an IPropertyStore interface or related interfaces -PSSTDAPI PSCreateDelayedMultiplexPropertyStore( - __in GETPROPERTYSTOREFLAGS flags, - __in IDelayedPropertyStoreFactory *pdpsf, - __in_ecount(cStores) const DWORD *rgStoreIds, - __in DWORD cStores, - __in REFIID riid, - __deref_out void **ppv); - - -// Create a read-only property store from one or more sources (which each must support either IPropertyStore or IPropertySetStorage) -// Returns an IPropertyStore interface or related interfaces -PSSTDAPI PSCreateMultiplexPropertyStore( - __in_ecount(cStores) IUnknown **prgpunkStores, - __in DWORD cStores, - __in REFIID riid, - __deref_out void **ppv); - - -// Create a container for IPropertyChanges -// Returns an IPropertyChangeArray interface -PSSTDAPI PSCreatePropertyChangeArray( - __in_ecount_opt(cChanges) const PROPERTYKEY *rgpropkey, - __in_ecount_opt(cChanges) const PKA_FLAGS *rgflags, - __in_ecount_opt(cChanges) const PROPVARIANT *rgpropvar, - __in UINT cChanges, - __in REFIID riid, - __deref_out void **ppv); - - -// Create a simple property change -// Returns an IPropertyChange interface -PSSTDAPI PSCreateSimplePropertyChange( - __in PKA_FLAGS flags, - __in REFPROPERTYKEY key, - __in REFPROPVARIANT propvar, - __in REFIID riid, - __deref_out void **ppv); - - -// Get a property description -// Returns an IPropertyDescription interface -PSSTDAPI PSGetPropertyDescription( - __in REFPROPERTYKEY propkey, - __in REFIID riid, - __deref_out void **ppv); - -PSSTDAPI PSGetPropertyDescriptionByName( - __in LPCWSTR pszCanonicalName, - __in REFIID riid, - __deref_out void **ppv); - - -// Lookup a per-machine registered file property handler -PSSTDAPI PSLookupPropertyHandlerCLSID( - __in PCWSTR pszFilePath, - __out CLSID *pclsid); -// Get a property handler, on Vista or downlevel to XP -// punkItem is a shell item created with an SHCreateItemXXX API -// Returns an IPropertyStore -PSSTDAPI PSGetItemPropertyHandler( - __in IUnknown *punkItem, - __in BOOL fReadWrite, - __in REFIID riid, - __deref_out void **ppv); - - -// Get a property handler, on Vista or downlevel to XP -// punkItem is a shell item created with an SHCreateItemXXX API -// punkCreateObject supports ICreateObject -// Returns an IPropertyStore -PSSTDAPI PSGetItemPropertyHandlerWithCreateObject( - __in IUnknown *punkItem, - __in BOOL fReadWrite, - __in IUnknown *punkCreateObject, - __in REFIID riid, - __deref_out void **ppv); - - -// Get or set a property value from a store -PSSTDAPI PSGetPropertyValue( - __in IPropertyStore *pps, - __in IPropertyDescription *ppd, - __out PROPVARIANT *ppropvar); - -PSSTDAPI PSSetPropertyValue( - __in IPropertyStore *pps, - __in IPropertyDescription *ppd, - __in REFPROPVARIANT propvar); - - -// Interact with the set of property descriptions -PSSTDAPI PSRegisterPropertySchema( - __in PCWSTR pszPath); - -PSSTDAPI PSUnregisterPropertySchema( - __in PCWSTR pszPath); - -PSSTDAPI PSRefreshPropertySchema(); - -// Returns either: IPropertyDescriptionList or IEnumUnknown interfaces -PSSTDAPI PSEnumeratePropertyDescriptions( - __in PROPDESC_ENUMFILTER filterOn, - __in REFIID riid, - __deref_out void **ppv); - - -// Convert between a PROPERTYKEY and its canonical name -PSSTDAPI PSGetPropertyKeyFromName( - __in PCWSTR pszName, - __out PROPERTYKEY *ppropkey); - -PSSTDAPI PSGetNameFromPropertyKey( - __in REFPROPERTYKEY propkey, - __deref_out PWSTR *ppszCanonicalName); - - -// Coerce and canonicalize a property value -PSSTDAPI PSCoerceToCanonicalValue( - __in REFPROPERTYKEY key, - __inout PROPVARIANT *ppropvar); - - -// Convert a 'prop:' string into a list of property descriptions -// Returns an IPropertyDescriptionList interface -PSSTDAPI PSGetPropertyDescriptionListFromString( - __in LPCWSTR pszPropList, - __in REFIID riid, - __deref_out void **ppv); - - -// Wrap an IPropertySetStorage interface in an IPropertyStore interface -// Returns an IPropertyStore or related interface -PSSTDAPI PSCreatePropertyStoreFromPropertySetStorage( - __in IPropertySetStorage *ppss, - DWORD grfMode, - REFIID riid, - __deref_out void **ppv); - - -// punkSource must support IPropertyStore or IPropertySetStorage -// On success, the returned ppv is guaranteed to support IPropertyStore. -// If punkSource already supports IPropertyStore, no wrapper is created. -PSSTDAPI PSCreatePropertyStoreFromObject( - __in IUnknown *punk, - __in DWORD grfMode, - __in REFIID riid, - __deref_out void **ppv); - - -// punkSource must support IPropertyStore -// riid may be IPropertyStore, IPropertySetStorage, IPropertyStoreCapabilities, or IObjectProvider -PSSTDAPI PSCreateAdapterFromPropertyStore( - __in IPropertyStore *pps, - __in REFIID riid, - __deref_out void **ppv); - - -// Talk to the property system using an interface -// Returns an IPropertySystem interface -PSSTDAPI PSGetPropertySystem( - __in REFIID riid, - __deref_out void **ppv); - - -// Obtain a value from serialized property storage -PSSTDAPI PSGetPropertyFromPropertyStorage( - __in_bcount(cb) PCUSERIALIZEDPROPSTORAGE psps, - __in DWORD cb, - __in REFPROPERTYKEY rpkey, - __out PROPVARIANT *ppropvar); - - -// Obtain a named value from serialized property storage -PSSTDAPI PSGetNamedPropertyFromPropertyStorage( - __in_bcount(cb) PCUSERIALIZEDPROPSTORAGE psps, - __in DWORD cb, - __in LPCWSTR pszName, - __out PROPVARIANT *ppropvar); - - - - -extern RPC_IF_HANDLE __MIDL_itf_propsys_0000_0021_v0_0_c_ifspec; -extern RPC_IF_HANDLE __MIDL_itf_propsys_0000_0021_v0_0_s_ifspec; - - -#ifndef __PropSysObjects_LIBRARY_DEFINED__ -#define __PropSysObjects_LIBRARY_DEFINED__ - -/* library PropSysObjects */ -/* [version][lcid][uuid] */ - - -EXTERN_C const IID LIBID_PropSysObjects; - -EXTERN_C const CLSID CLSID_InMemoryPropertyStore; - -#ifdef __cplusplus - -class DECLSPEC_UUID("9a02e012-6303-4e1e-b9a1-630f802592c5") -InMemoryPropertyStore; -#endif - -EXTERN_C const CLSID CLSID_PropertySystem; - -#ifdef __cplusplus - -class DECLSPEC_UUID("b8967f85-58ae-4f46-9fb2-5d7904798f4b") -PropertySystem; -#endif -#endif /* __PropSysObjects_LIBRARY_DEFINED__ */ - -/* Additional Prototypes for ALL interfaces */ - -unsigned long __RPC_USER BSTR_UserSize( unsigned long *, unsigned long , BSTR * ); -unsigned char * __RPC_USER BSTR_UserMarshal( unsigned long *, unsigned char *, BSTR * ); -unsigned char * __RPC_USER BSTR_UserUnmarshal(unsigned long *, unsigned char *, BSTR * ); -void __RPC_USER BSTR_UserFree( unsigned long *, BSTR * ); - -unsigned long __RPC_USER LPSAFEARRAY_UserSize( unsigned long *, unsigned long , LPSAFEARRAY * ); -unsigned char * __RPC_USER LPSAFEARRAY_UserMarshal( unsigned long *, unsigned char *, LPSAFEARRAY * ); -unsigned char * __RPC_USER LPSAFEARRAY_UserUnmarshal(unsigned long *, unsigned char *, LPSAFEARRAY * ); -void __RPC_USER LPSAFEARRAY_UserFree( unsigned long *, LPSAFEARRAY * ); - -unsigned long __RPC_USER BSTR_UserSize64( unsigned long *, unsigned long , BSTR * ); -unsigned char * __RPC_USER BSTR_UserMarshal64( unsigned long *, unsigned char *, BSTR * ); -unsigned char * __RPC_USER BSTR_UserUnmarshal64(unsigned long *, unsigned char *, BSTR * ); -void __RPC_USER BSTR_UserFree64( unsigned long *, BSTR * ); - -unsigned long __RPC_USER LPSAFEARRAY_UserSize64( unsigned long *, unsigned long , LPSAFEARRAY * ); -unsigned char * __RPC_USER LPSAFEARRAY_UserMarshal64( unsigned long *, unsigned char *, LPSAFEARRAY * ); -unsigned char * __RPC_USER LPSAFEARRAY_UserUnmarshal64(unsigned long *, unsigned char *, LPSAFEARRAY * ); -void __RPC_USER LPSAFEARRAY_UserFree64( unsigned long *, LPSAFEARRAY * ); - -/* [local] */ HRESULT STDMETHODCALLTYPE IInitializeWithStream_Initialize_Proxy( - IInitializeWithStream * This, - /* [in] */ IStream *pstream, - /* [in] */ DWORD grfMode); - - -/* [call_as] */ HRESULT STDMETHODCALLTYPE IInitializeWithStream_Initialize_Stub( - IInitializeWithStream * This, - /* [in] */ __RPC__in_opt IStream *pstream, - /* [in] */ DWORD grfMode); - -/* [local] */ HRESULT STDMETHODCALLTYPE IPropertyDescription_CoerceToCanonicalValue_Proxy( - IPropertyDescription * This, - /* [out][in] */ PROPVARIANT *ppropvar); - - -/* [call_as] */ HRESULT STDMETHODCALLTYPE IPropertyDescription_CoerceToCanonicalValue_Stub( - IPropertyDescription * This, - /* [in] */ __RPC__in REFPROPVARIANT propvar, - /* [out] */ __RPC__out PROPVARIANT *ppropvar); - - - -/* end of Additional Prototypes */ - -#ifdef __cplusplus -} -#endif - -#endif - - - diff --git a/portaudio/src/hostapi/wasapi/mingw-include/rpcsal.h b/portaudio/src/hostapi/wasapi/mingw-include/rpcsal.h deleted file mode 100644 index ba9836a..0000000 --- a/portaudio/src/hostapi/wasapi/mingw-include/rpcsal.h +++ /dev/null @@ -1,113 +0,0 @@ -#pragma once - -#if __GNUC__ >=3 -#pragma GCC system_header -#endif - -#define RPC_range(min,max) - -#define __RPC__in -#define __RPC__in_string -#define __RPC__in_opt_string -#define __RPC__deref_opt_in_opt -#define __RPC__opt_in_opt_string -#define __RPC__in_ecount(size) -#define __RPC__in_ecount_full(size) -#define __RPC__in_ecount_full_string(size) -#define __RPC__in_ecount_part(size, length) -#define __RPC__in_ecount_full_opt(size) -#define __RPC__in_ecount_full_opt_string(size) -#define __RPC__inout_ecount_full_opt_string(size) -#define __RPC__in_ecount_part_opt(size, length) - -#define __RPC__deref_in -#define __RPC__deref_in_string -#define __RPC__deref_opt_in -#define __RPC__deref_in_opt -#define __RPC__deref_in_ecount(size) -#define __RPC__deref_in_ecount_part(size, length) -#define __RPC__deref_in_ecount_full(size) -#define __RPC__deref_in_ecount_full_opt(size) -#define __RPC__deref_in_ecount_full_string(size) -#define __RPC__deref_in_ecount_full_opt_string(size) -#define __RPC__deref_in_ecount_opt(size) -#define __RPC__deref_in_ecount_opt_string(size) -#define __RPC__deref_in_ecount_part_opt(size, length) - -// [out] -#define __RPC__out -#define __RPC__out_ecount(size) -#define __RPC__out_ecount_part(size, length) -#define __RPC__out_ecount_full(size) -#define __RPC__out_ecount_full_string(size) - -// [in,out] -#define __RPC__inout -#define __RPC__inout_string -#define __RPC__opt_inout -#define __RPC__inout_ecount(size) -#define __RPC__inout_ecount_part(size, length) -#define __RPC__inout_ecount_full(size) -#define __RPC__inout_ecount_full_string(size) - -// [in,unique] -#define __RPC__in_opt -#define __RPC__in_ecount_opt(size) - - -// [in,out,unique] -#define __RPC__inout_opt -#define __RPC__inout_ecount_opt(size) -#define __RPC__inout_ecount_part_opt(size, length) -#define __RPC__inout_ecount_full_opt(size) -#define __RPC__inout_ecount_full_string(size) - -// [out] ** -#define __RPC__deref_out -#define __RPC__deref_out_string -#define __RPC__deref_out_opt -#define __RPC__deref_out_opt_string -#define __RPC__deref_out_ecount(size) -#define __RPC__deref_out_ecount_part(size, length) -#define __RPC__deref_out_ecount_full(size) -#define __RPC__deref_out_ecount_full_string(size) - - -// [in,out] **, second pointer decoration. -#define __RPC__deref_inout -#define __RPC__deref_inout_string -#define __RPC__deref_inout_opt -#define __RPC__deref_inout_opt_string -#define __RPC__deref_inout_ecount_full(size) -#define __RPC__deref_inout_ecount_full_string(size) -#define __RPC__deref_inout_ecount_opt(size) -#define __RPC__deref_inout_ecount_part_opt(size, length) -#define __RPC__deref_inout_ecount_full_opt(size) -#define __RPC__deref_inout_ecount_full_opt_string(size) - -// #define __RPC_out_opt out_opt is not allowed in rpc - -// [in,out,unique] -#define __RPC__deref_opt_inout -#define __RPC__deref_opt_inout_string -#define __RPC__deref_opt_inout_ecount(size) -#define __RPC__deref_opt_inout_ecount_part(size, length) -#define __RPC__deref_opt_inout_ecount_full(size) -#define __RPC__deref_opt_inout_ecount_full_string(size) - -#define __RPC__deref_out_ecount_opt(size) -#define __RPC__deref_out_ecount_part_opt(size, length) -#define __RPC__deref_out_ecount_full_opt(size) -#define __RPC__deref_out_ecount_full_opt_string(size) - -#define __RPC__deref_opt_inout_opt -#define __RPC__deref_opt_inout_opt_string -#define __RPC__deref_opt_inout_ecount_opt(size) -#define __RPC__deref_opt_inout_ecount_part_opt(size, length) -#define __RPC__deref_opt_inout_ecount_full_opt(size) -#define __RPC__deref_opt_inout_ecount_full_opt_string(size) - -#define __RPC_full_pointer -#define __RPC_unique_pointer -#define __RPC_ref_pointer -#define __RPC_string diff --git a/portaudio/src/hostapi/wasapi/mingw-include/sal.h b/portaudio/src/hostapi/wasapi/mingw-include/sal.h deleted file mode 100644 index 3f99ab9..0000000 --- a/portaudio/src/hostapi/wasapi/mingw-include/sal.h +++ /dev/null @@ -1,252 +0,0 @@ -#pragma once - -#if __GNUC__ >=3 -#pragma GCC system_header -#endif - -/*#define __null*/ // << Conflicts with GCC internal type __null -#define __notnull -#define __maybenull -#define __readonly -#define __notreadonly -#define __maybereadonly -#define __valid -#define __notvalid -#define __maybevalid -#define __readableTo(extent) -#define __elem_readableTo(size) -#define __byte_readableTo(size) -#define __writableTo(size) -#define __elem_writableTo(size) -#define __byte_writableTo(size) -#define __deref -#define __pre -#define __post -#define __precond(expr) -#define __postcond(expr) -#define __exceptthat -#define __execeptthat -#define __inner_success(expr) -#define __inner_checkReturn -#define __inner_typefix(ctype) -#define __inner_override -#define __inner_callback -#define __inner_blocksOn(resource) -#define __inner_fallthrough_dec -#define __inner_fallthrough -#define __refparam -#define __inner_control_entrypoint(category) -#define __inner_data_entrypoint(category) - -#define __ecount(size) -#define __bcount(size) -#define __in -#define __in_ecount(size) -#define __in_bcount(size) -#define __in_z -#define __in_ecount_z(size) -#define __in_bcount_z(size) -#define __in_nz -#define __in_ecount_nz(size) -#define __in_bcount_nz(size) -#define __out -#define __out_ecount(size) -#define __out_bcount(size) -#define __out_ecount_part(size,length) -#define __out_bcount_part(size,length) -#define __out_ecount_full(size) -#define __out_bcount_full(size) -#define __out_z -#define __out_z_opt -#define __out_ecount_z(size) -#define __out_bcount_z(size) -#define __out_ecount_part_z(size,length) -#define __out_bcount_part_z(size,length) -#define __out_ecount_full_z(size) -#define __out_bcount_full_z(size) -#define __out_nz -#define __out_nz_opt -#define __out_ecount_nz(size) -#define __out_bcount_nz(size) -#define __inout -#define __inout_ecount(size) -#define __inout_bcount(size) -#define __inout_ecount_part(size,length) -#define __inout_bcount_part(size,length) -#define __inout_ecount_full(size) -#define __inout_bcount_full(size) -#define __inout_z -#define __inout_ecount_z(size) -#define __inout_bcount_z(size) -#define __inout_nz -#define __inout_ecount_nz(size) -#define __inout_bcount_nz(size) -#define __ecount_opt(size) -#define __bcount_opt(size) -#define __in_opt -#define __in_ecount_opt(size) -#define __in_bcount_opt(size) -#define __in_z_opt -#define __in_ecount_z_opt(size) -#define __in_bcount_z_opt(size) -#define __in_nz_opt -#define __in_ecount_nz_opt(size) -#define __in_bcount_nz_opt(size) -#define __out_opt -#define __out_ecount_opt(size) -#define __out_bcount_opt(size) -#define __out_ecount_part_opt(size,length) -#define __out_bcount_part_opt(size,length) -#define __out_ecount_full_opt(size) -#define __out_bcount_full_opt(size) -#define __out_ecount_z_opt(size) -#define __out_bcount_z_opt(size) -#define __out_ecount_part_z_opt(size,length) -#define __out_bcount_part_z_opt(size,length) -#define __out_ecount_full_z_opt(size) -#define __out_bcount_full_z_opt(size) -#define __out_ecount_nz_opt(size) -#define __out_bcount_nz_opt(size) -#define __inout_opt -#define __inout_ecount_opt(size) -#define __inout_bcount_opt(size) -#define __inout_ecount_part_opt(size,length) -#define __inout_bcount_part_opt(size,length) -#define __inout_ecount_full_opt(size) -#define __inout_bcount_full_opt(size) -#define __inout_z_opt -#define __inout_ecount_z_opt(size) -#define __inout_ecount_z_opt(size) -#define __inout_bcount_z_opt(size) -#define __inout_nz_opt -#define __inout_ecount_nz_opt(size) -#define __inout_bcount_nz_opt(size) -#define __deref_ecount(size) -#define __deref_bcount(size) -#define __deref_out -#define __deref_out_ecount(size) -#define __deref_out_bcount(size) -#define __deref_out_ecount_part(size,length) -#define __deref_out_bcount_part(size,length) -#define __deref_out_ecount_full(size) -#define __deref_out_bcount_full(size) -#define __deref_out_z -#define __deref_out_ecount_z(size) -#define __deref_out_bcount_z(size) -#define __deref_out_nz -#define __deref_out_ecount_nz(size) -#define __deref_out_bcount_nz(size) -#define __deref_inout -#define __deref_inout_z -#define __deref_inout_ecount(size) -#define __deref_inout_bcount(size) -#define __deref_inout_ecount_part(size,length) -#define __deref_inout_bcount_part(size,length) -#define __deref_inout_ecount_full(size) -#define __deref_inout_bcount_full(size) -#define __deref_inout_z -#define __deref_inout_ecount_z(size) -#define __deref_inout_bcount_z(size) -#define __deref_inout_nz -#define __deref_inout_ecount_nz(size) -#define __deref_inout_bcount_nz(size) -#define __deref_ecount_opt(size) -#define __deref_bcount_opt(size) -#define __deref_out_opt -#define __deref_out_ecount_opt(size) -#define __deref_out_bcount_opt(size) -#define __deref_out_ecount_part_opt(size,length) -#define __deref_out_bcount_part_opt(size,length) -#define __deref_out_ecount_full_opt(size) -#define __deref_out_bcount_full_opt(size) -#define __deref_out_z_opt -#define __deref_out_ecount_z_opt(size) -#define __deref_out_bcount_z_opt(size) -#define __deref_out_nz_opt -#define __deref_out_ecount_nz_opt(size) -#define __deref_out_bcount_nz_opt(size) -#define __deref_inout_opt -#define __deref_inout_ecount_opt(size) -#define __deref_inout_bcount_opt(size) -#define __deref_inout_ecount_part_opt(size,length) -#define __deref_inout_bcount_part_opt(size,length) -#define __deref_inout_ecount_full_opt(size) -#define __deref_inout_bcount_full_opt(size) -#define __deref_inout_z_opt -#define __deref_inout_ecount_z_opt(size) -#define __deref_inout_bcount_z_opt(size) -#define __deref_inout_nz_opt -#define __deref_inout_ecount_nz_opt(size) -#define __deref_inout_bcount_nz_opt(size) -#define __deref_opt_ecount(size) -#define __deref_opt_bcount(size) -#define __deref_opt_out -#define __deref_opt_out_z -#define __deref_opt_out_ecount(size) -#define __deref_opt_out_bcount(size) -#define __deref_opt_out_ecount_part(size,length) -#define __deref_opt_out_bcount_part(size,length) -#define __deref_opt_out_ecount_full(size) -#define __deref_opt_out_bcount_full(size) -#define __deref_opt_inout -#define __deref_opt_inout_ecount(size) -#define __deref_opt_inout_bcount(size) -#define __deref_opt_inout_ecount_part(size,length) -#define __deref_opt_inout_bcount_part(size,length) -#define __deref_opt_inout_ecount_full(size) -#define __deref_opt_inout_bcount_full(size) -#define __deref_opt_inout_z -#define __deref_opt_inout_ecount_z(size) -#define __deref_opt_inout_bcount_z(size) -#define __deref_opt_inout_nz -#define __deref_opt_inout_ecount_nz(size) -#define __deref_opt_inout_bcount_nz(size) -#define __deref_opt_ecount_opt(size) -#define __deref_opt_bcount_opt(size) -#define __deref_opt_out_opt -#define __deref_opt_out_ecount_opt(size) -#define __deref_opt_out_bcount_opt(size) -#define __deref_opt_out_ecount_part_opt(size,length) -#define __deref_opt_out_bcount_part_opt(size,length) -#define __deref_opt_out_ecount_full_opt(size) -#define __deref_opt_out_bcount_full_opt(size) -#define __deref_opt_out_z_opt -#define __deref_opt_out_ecount_z_opt(size) -#define __deref_opt_out_bcount_z_opt(size) -#define __deref_opt_out_nz_opt -#define __deref_opt_out_ecount_nz_opt(size) -#define __deref_opt_out_bcount_nz_opt(size) -#define __deref_opt_inout_opt -#define __deref_opt_inout_ecount_opt(size) -#define __deref_opt_inout_bcount_opt(size) -#define __deref_opt_inout_ecount_part_opt(size,length) -#define __deref_opt_inout_bcount_part_opt(size,length) -#define __deref_opt_inout_ecount_full_opt(size) -#define __deref_opt_inout_bcount_full_opt(size) -#define __deref_opt_inout_z_opt -#define __deref_opt_inout_ecount_z_opt(size) -#define __deref_opt_inout_bcount_z_opt(size) -#define __deref_opt_inout_nz_opt -#define __deref_opt_inout_ecount_nz_opt(size) -#define __deref_opt_inout_bcount_nz_opt(size) - -#define __success(expr) -#define __nullterminated -#define __nullnullterminated -#define __reserved -#define __checkReturn -#define __typefix(ctype) -#define __override -#define __callback -#define __format_string -#define __blocksOn(resource) -#define __control_entrypoint(category) -#define __data_entrypoint(category) - -#ifndef __fallthrough - #define __fallthrough __inner_fallthrough -#endif - -#ifndef __analysis_assume - #define __analysis_assume(expr) -#endif diff --git a/portaudio/src/hostapi/wasapi/mingw-include/sdkddkver.h b/portaudio/src/hostapi/wasapi/mingw-include/sdkddkver.h deleted file mode 100644 index 44b5fb2..0000000 --- a/portaudio/src/hostapi/wasapi/mingw-include/sdkddkver.h +++ /dev/null @@ -1,220 +0,0 @@ -/** - * sdkddkver.h: Version definitions for SDK and DDK. Originally - * from ReactOS PSDK/DDK, this file is in the public domain: - * - * This file has no copyright assigned and is placed in the Public Domain. - * This file is part of the mingw-w64 runtime package. - * No warranty is given; refer to the file DISCLAIMER.PD within this package. - */ - -#ifndef _INC_SDKDDKVER -#define _INC_SDKDDKVER - -/* _WIN32_WINNT */ -#define _WIN32_WINNT_NT4 0x0400 -#define _WIN32_WINNT_WIN2K 0x0500 -#define _WIN32_WINNT_WINXP 0x0501 -#define _WIN32_WINNT_WS03 0x0502 -#define _WIN32_WINNT_WIN6 0x0600 -#define _WIN32_WINNT_VISTA 0x0600 -#define _WIN32_WINNT_WS08 0x0600 -#define _WIN32_WINNT_LONGHORN 0x0600 -#define _WIN32_WINNT_WIN7 0x0601 -#define _WIN32_WINNT_WIN8 0x0602 -#define _WIN32_WINNT_WINBLUE 0x0603 -#define _WIN32_WINNT_WINTHRESHOLD 0x0A00 -#define _WIN32_WINNT_WIN10 0x0A00 - -/* _WIN32_IE */ -#define _WIN32_IE_IE20 0x0200 -#define _WIN32_IE_IE30 0x0300 -#define _WIN32_IE_IE302 0x0302 -#define _WIN32_IE_IE40 0x0400 -#define _WIN32_IE_IE401 0x0401 -#define _WIN32_IE_IE50 0x0500 -#define _WIN32_IE_IE501 0x0501 -#define _WIN32_IE_IE55 0x0550 -#define _WIN32_IE_IE60 0x0600 -#define _WIN32_IE_IE60SP1 0x0601 -#define _WIN32_IE_IE60SP2 0x0603 -#define _WIN32_IE_IE70 0x0700 -#define _WIN32_IE_IE80 0x0800 -#define _WIN32_IE_IE90 0x0900 -#define _WIN32_IE_IE100 0x0a00 -#define _WIN32_IE_IE110 0x0A00 - -/* Mappings Between IE Version and Windows Version */ -#define _WIN32_IE_NT4 _WIN32_IE_IE20 -#define _WIN32_IE_NT4SP1 _WIN32_IE_IE20 -#define _WIN32_IE_NT4SP2 _WIN32_IE_IE20 -#define _WIN32_IE_NT4SP3 _WIN32_IE_IE302 -#define _WIN32_IE_NT4SP4 _WIN32_IE_IE401 -#define _WIN32_IE_NT4SP5 _WIN32_IE_IE401 -#define _WIN32_IE_NT4SP6 _WIN32_IE_IE50 -#define _WIN32_IE_WIN98 _WIN32_IE_IE401 -#define _WIN32_IE_WIN98SE _WIN32_IE_IE50 -#define _WIN32_IE_WINME _WIN32_IE_IE55 -#define _WIN32_IE_WIN2K _WIN32_IE_IE501 -#define _WIN32_IE_WIN2KSP1 _WIN32_IE_IE501 -#define _WIN32_IE_WIN2KSP2 _WIN32_IE_IE501 -#define _WIN32_IE_WIN2KSP3 _WIN32_IE_IE501 -#define _WIN32_IE_WIN2KSP4 _WIN32_IE_IE501 -#define _WIN32_IE_XP _WIN32_IE_IE60 -#define _WIN32_IE_XPSP1 _WIN32_IE_IE60SP1 -#define _WIN32_IE_XPSP2 _WIN32_IE_IE60SP2 -#define _WIN32_IE_WS03 0x0602 -#define _WIN32_IE_WS03SP1 _WIN32_IE_IE60SP2 -#define _WIN32_IE_WIN6 _WIN32_IE_IE70 -#define _WIN32_IE_LONGHORN _WIN32_IE_IE70 -#define _WIN32_IE_WIN7 _WIN32_IE_IE80 -#define _WIN32_IE_WIN8 _WIN32_IE_IE100 -#define _WIN32_IE_WINBLUE _WIN32_IE_IE100 -#define _WIN32_IE_WINTHRESHOLD _WIN32_IE_IE110 -#define _WIN32_IE_WIN10 _WIN32_IE_IE110 - -/* NTDDI_VERSION */ -#ifndef NTDDI_WIN2K -#define NTDDI_WIN2K 0x05000000 -#endif -#ifndef NTDDI_WIN2KSP1 -#define NTDDI_WIN2KSP1 0x05000100 -#endif -#ifndef NTDDI_WIN2KSP2 -#define NTDDI_WIN2KSP2 0x05000200 -#endif -#ifndef NTDDI_WIN2KSP3 -#define NTDDI_WIN2KSP3 0x05000300 -#endif -#ifndef NTDDI_WIN2KSP4 -#define NTDDI_WIN2KSP4 0x05000400 -#endif - -#ifndef NTDDI_WINXP -#define NTDDI_WINXP 0x05010000 -#endif -#ifndef NTDDI_WINXPSP1 -#define NTDDI_WINXPSP1 0x05010100 -#endif -#ifndef NTDDI_WINXPSP2 -#define NTDDI_WINXPSP2 0x05010200 -#endif -#ifndef NTDDI_WINXPSP3 -#define NTDDI_WINXPSP3 0x05010300 -#endif -#ifndef NTDDI_WINXPSP4 -#define NTDDI_WINXPSP4 0x05010400 -#endif - -#define NTDDI_WS03 0x05020000 -#define NTDDI_WS03SP1 0x05020100 -#define NTDDI_WS03SP2 0x05020200 -#define NTDDI_WS03SP3 0x05020300 -#define NTDDI_WS03SP4 0x05020400 - -#define NTDDI_WIN6 0x06000000 -#define NTDDI_WIN6SP1 0x06000100 -#define NTDDI_WIN6SP2 0x06000200 -#define NTDDI_WIN6SP3 0x06000300 -#define NTDDI_WIN6SP4 0x06000400 - -#define NTDDI_VISTA NTDDI_WIN6 -#define NTDDI_VISTASP1 NTDDI_WIN6SP1 -#define NTDDI_VISTASP2 NTDDI_WIN6SP2 -#define NTDDI_VISTASP3 NTDDI_WIN6SP3 -#define NTDDI_VISTASP4 NTDDI_WIN6SP4 -#define NTDDI_LONGHORN NTDDI_VISTA - -#define NTDDI_WS08 NTDDI_WIN6SP1 -#define NTDDI_WS08SP2 NTDDI_WIN6SP2 -#define NTDDI_WS08SP3 NTDDI_WIN6SP3 -#define NTDDI_WS08SP4 NTDDI_WIN6SP4 - -#define NTDDI_WIN7 0x06010000 -#define NTDDI_WIN8 0x06020000 -#define NTDDI_WINBLUE 0x06030000 -#define NTDDI_WINTHRESHOLD 0x0A000000 -#define NTDDI_WIN10 0x0A000000 -#define NTDDI_WIN10_TH2 0x0A000001 -#define NTDDI_WIN10_RS1 0x0A000002 -#define NTDDI_WIN10_RS2 0x0A000003 -#define NTDDI_WIN10_RS3 0x0A000004 -#define NTDDI_WIN10_RS4 0x0A000005 -#define NTDDI_WIN10_RS5 0x0A000006 -#define NTDDI_WIN10_19H1 0x0A000007 -#define NTDDI_WIN10_VB 0x0A000008 -#define NTDDI_WIN10_MN 0x0A000009 -#define NTDDI_WIN10_FE 0x0A00000A - -#define WDK_NTDDI_VERSION NTDDI_WIN10_FE - -/* Version Fields in NTDDI_VERSION */ -#define OSVERSION_MASK 0xFFFF0000U -#define SPVERSION_MASK 0x0000FF00 -#define SUBVERSION_MASK 0x000000FF - -/* Macros to Extract Version Fields From NTDDI_VERSION */ -#define OSVER(Version) ((Version) & OSVERSION_MASK) -#define SPVER(Version) (((Version) & SPVERSION_MASK) >> 8) -#define SUBVER(Version) (((Version) & SUBVERSION_MASK)) - -/* Macros to get the NTDDI for a given WIN32 */ -#define NTDDI_VERSION_FROM_WIN32_WINNT2(Version) Version##0000 -#define NTDDI_VERSION_FROM_WIN32_WINNT(Version) NTDDI_VERSION_FROM_WIN32_WINNT2(Version) - -/* Select Default WIN32_WINNT Value */ -#if !defined(_WIN32_WINNT) && !defined(_CHICAGO_) -#define _WIN32_WINNT _WIN32_WINNT_WS03 -#endif - -/* Choose NTDDI Version */ -#ifndef NTDDI_VERSION -#ifdef _WIN32_WINNT -#define NTDDI_VERSION NTDDI_VERSION_FROM_WIN32_WINNT(_WIN32_WINNT) -#else -#define NTDDI_VERSION NTDDI_WS03 -#endif -#endif - -/* Choose WINVER Value */ -#ifndef WINVER -#ifdef _WIN32_WINNT -#define WINVER _WIN32_WINNT -#else -#define WINVER 0x0502 -#endif -#endif - -/* Choose IE Version */ -#ifndef _WIN32_IE -#ifdef _WIN32_WINNT -#if (_WIN32_WINNT <= _WIN32_WINNT_NT4) -#define _WIN32_IE _WIN32_IE_IE50 -#elif (_WIN32_WINNT <= _WIN32_WINNT_WIN2K) -#define _WIN32_IE _WIN32_IE_IE501 -#elif (_WIN32_WINNT <= _WIN32_WINNT_WINXP) -#define _WIN32_IE _WIN32_IE_IE60 -#elif (_WIN32_WINNT <= _WIN32_WINNT_WS03) -#define _WIN32_IE _WIN32_IE_WS03 -#elif (_WIN32_WINNT <= _WIN32_WINNT_VISTA) -#define _WIN32_IE _WIN32_IE_LONGHORN -#elif (_WIN32_WINNT <= _WIN32_WINNT_WIN7) -#define _WIN32_IE _WIN32_IE_WIN7 -#elif (_WIN32_WINNT <= _WIN32_WINNT_WIN8) -#define _WIN32_IE _WIN32_IE_WIN8 -#else -#define _WIN32_IE 0x0a00 -#endif -#else -#define _WIN32_IE 0x0700 -#endif -#endif - -/* Make Sure NTDDI_VERSION and _WIN32_WINNT Match */ -#if ((OSVER(NTDDI_VERSION) == NTDDI_WIN2K) && (_WIN32_WINNT != _WIN32_WINNT_WIN2K)) || \ - ((OSVER(NTDDI_VERSION) == NTDDI_WINXP) && (_WIN32_WINNT != _WIN32_WINNT_WINXP)) || \ - ((OSVER(NTDDI_VERSION) == NTDDI_WS03) && (_WIN32_WINNT != _WIN32_WINNT_WS03)) || \ - ((OSVER(NTDDI_VERSION) == NTDDI_WINXP) && (_WIN32_WINNT != _WIN32_WINNT_WINXP)) -#error NTDDI_VERSION and _WIN32_WINNT mismatch! -#endif - -#endif /* _INC_SDKDDKVER */ diff --git a/portaudio/src/hostapi/wasapi/mingw-include/structuredquery.h b/portaudio/src/hostapi/wasapi/mingw-include/structuredquery.h deleted file mode 100644 index bca20a9..0000000 --- a/portaudio/src/hostapi/wasapi/mingw-include/structuredquery.h +++ /dev/null @@ -1,2478 +0,0 @@ - - -/* this ALWAYS GENERATED file contains the definitions for the interfaces */ - - - /* File created by MIDL compiler version 7.00.0499 */ -/* Compiler settings for structuredquery.idl: - Oicf, W1, Zp8, env=Win32 (32b run) - protocol : dce , ms_ext, c_ext, robust - error checks: allocation ref bounds_check enum stub_data - VC __declspec() decoration level: - __declspec(uuid()), __declspec(selectany), __declspec(novtable) - DECLSPEC_UUID(), MIDL_INTERFACE() -*/ -//@@MIDL_FILE_HEADING( ) - -#pragma warning( disable: 4049 ) /* more than 64k source lines */ - - -/* verify that the <rpcndr.h> version is high enough to compile this file*/ -#ifndef __REQUIRED_RPCNDR_H_VERSION__ -#define __REQUIRED_RPCNDR_H_VERSION__ 475 -#endif - -/* verify that the <rpcsal.h> version is high enough to compile this file*/ -#ifndef __REQUIRED_RPCSAL_H_VERSION__ -#define __REQUIRED_RPCSAL_H_VERSION__ 100 -#endif - -#include "rpc.h" -#include "rpcndr.h" - -#ifndef __RPCNDR_H_VERSION__ -#error this stub requires an updated version of <rpcndr.h> -#endif // __RPCNDR_H_VERSION__ - -#ifndef COM_NO_WINDOWS_H -#include "windows.h" -#include "ole2.h" -#endif /*COM_NO_WINDOWS_H*/ - -#ifndef __structuredquery_h__ -#define __structuredquery_h__ - -#if defined(_MSC_VER) && (_MSC_VER >= 1020) -#pragma once -#endif - -/* Forward Declarations */ - -#ifndef __IQueryParser_FWD_DEFINED__ -#define __IQueryParser_FWD_DEFINED__ -typedef interface IQueryParser IQueryParser; -#endif /* __IQueryParser_FWD_DEFINED__ */ - - -#ifndef __IConditionFactory_FWD_DEFINED__ -#define __IConditionFactory_FWD_DEFINED__ -typedef interface IConditionFactory IConditionFactory; -#endif /* __IConditionFactory_FWD_DEFINED__ */ - - -#ifndef __IQuerySolution_FWD_DEFINED__ -#define __IQuerySolution_FWD_DEFINED__ -typedef interface IQuerySolution IQuerySolution; -#endif /* __IQuerySolution_FWD_DEFINED__ */ - - -#ifndef __ICondition_FWD_DEFINED__ -#define __ICondition_FWD_DEFINED__ -typedef interface ICondition ICondition; -#endif /* __ICondition_FWD_DEFINED__ */ - - -#ifndef __IConditionGenerator_FWD_DEFINED__ -#define __IConditionGenerator_FWD_DEFINED__ -typedef interface IConditionGenerator IConditionGenerator; -#endif /* __IConditionGenerator_FWD_DEFINED__ */ - - -#ifndef __IRichChunk_FWD_DEFINED__ -#define __IRichChunk_FWD_DEFINED__ -typedef interface IRichChunk IRichChunk; -#endif /* __IRichChunk_FWD_DEFINED__ */ - - -#ifndef __IInterval_FWD_DEFINED__ -#define __IInterval_FWD_DEFINED__ -typedef interface IInterval IInterval; -#endif /* __IInterval_FWD_DEFINED__ */ - - -#ifndef __IMetaData_FWD_DEFINED__ -#define __IMetaData_FWD_DEFINED__ -typedef interface IMetaData IMetaData; -#endif /* __IMetaData_FWD_DEFINED__ */ - - -#ifndef __IEntity_FWD_DEFINED__ -#define __IEntity_FWD_DEFINED__ -typedef interface IEntity IEntity; -#endif /* __IEntity_FWD_DEFINED__ */ - - -#ifndef __IRelationship_FWD_DEFINED__ -#define __IRelationship_FWD_DEFINED__ -typedef interface IRelationship IRelationship; -#endif /* __IRelationship_FWD_DEFINED__ */ - - -#ifndef __INamedEntity_FWD_DEFINED__ -#define __INamedEntity_FWD_DEFINED__ -typedef interface INamedEntity INamedEntity; -#endif /* __INamedEntity_FWD_DEFINED__ */ - - -#ifndef __ISchemaProvider_FWD_DEFINED__ -#define __ISchemaProvider_FWD_DEFINED__ -typedef interface ISchemaProvider ISchemaProvider; -#endif /* __ISchemaProvider_FWD_DEFINED__ */ - - -#ifndef __ITokenCollection_FWD_DEFINED__ -#define __ITokenCollection_FWD_DEFINED__ -typedef interface ITokenCollection ITokenCollection; -#endif /* __ITokenCollection_FWD_DEFINED__ */ - - -#ifndef __INamedEntityCollector_FWD_DEFINED__ -#define __INamedEntityCollector_FWD_DEFINED__ -typedef interface INamedEntityCollector INamedEntityCollector; -#endif /* __INamedEntityCollector_FWD_DEFINED__ */ - - -#ifndef __ISchemaLocalizerSupport_FWD_DEFINED__ -#define __ISchemaLocalizerSupport_FWD_DEFINED__ -typedef interface ISchemaLocalizerSupport ISchemaLocalizerSupport; -#endif /* __ISchemaLocalizerSupport_FWD_DEFINED__ */ - - -#ifndef __IQueryParserManager_FWD_DEFINED__ -#define __IQueryParserManager_FWD_DEFINED__ -typedef interface IQueryParserManager IQueryParserManager; -#endif /* __IQueryParserManager_FWD_DEFINED__ */ - - -#ifndef __QueryParser_FWD_DEFINED__ -#define __QueryParser_FWD_DEFINED__ - -#ifdef __cplusplus -typedef class QueryParser QueryParser; -#else -typedef struct QueryParser QueryParser; -#endif /* __cplusplus */ - -#endif /* __QueryParser_FWD_DEFINED__ */ - - -#ifndef __NegationCondition_FWD_DEFINED__ -#define __NegationCondition_FWD_DEFINED__ - -#ifdef __cplusplus -typedef class NegationCondition NegationCondition; -#else -typedef struct NegationCondition NegationCondition; -#endif /* __cplusplus */ - -#endif /* __NegationCondition_FWD_DEFINED__ */ - - -#ifndef __CompoundCondition_FWD_DEFINED__ -#define __CompoundCondition_FWD_DEFINED__ - -#ifdef __cplusplus -typedef class CompoundCondition CompoundCondition; -#else -typedef struct CompoundCondition CompoundCondition; -#endif /* __cplusplus */ - -#endif /* __CompoundCondition_FWD_DEFINED__ */ - - -#ifndef __LeafCondition_FWD_DEFINED__ -#define __LeafCondition_FWD_DEFINED__ - -#ifdef __cplusplus -typedef class LeafCondition LeafCondition; -#else -typedef struct LeafCondition LeafCondition; -#endif /* __cplusplus */ - -#endif /* __LeafCondition_FWD_DEFINED__ */ - - -#ifndef __ConditionFactory_FWD_DEFINED__ -#define __ConditionFactory_FWD_DEFINED__ - -#ifdef __cplusplus -typedef class ConditionFactory ConditionFactory; -#else -typedef struct ConditionFactory ConditionFactory; -#endif /* __cplusplus */ - -#endif /* __ConditionFactory_FWD_DEFINED__ */ - - -#ifndef __Interval_FWD_DEFINED__ -#define __Interval_FWD_DEFINED__ - -#ifdef __cplusplus -typedef class Interval Interval; -#else -typedef struct Interval Interval; -#endif /* __cplusplus */ - -#endif /* __Interval_FWD_DEFINED__ */ - - -#ifndef __QueryParserManager_FWD_DEFINED__ -#define __QueryParserManager_FWD_DEFINED__ - -#ifdef __cplusplus -typedef class QueryParserManager QueryParserManager; -#else -typedef struct QueryParserManager QueryParserManager; -#endif /* __cplusplus */ - -#endif /* __QueryParserManager_FWD_DEFINED__ */ - - -/* header files for imported files */ -#include "oaidl.h" -#include "ocidl.h" -#include "propidl.h" - -#ifdef __cplusplus -extern "C"{ -#endif - - -/* interface __MIDL_itf_structuredquery_0000_0000 */ -/* [local] */ - - - - - - - - - - - -typedef /* [v1_enum] */ -enum tagCONDITION_TYPE - { CT_AND_CONDITION = 0, - CT_OR_CONDITION = ( CT_AND_CONDITION + 1 ) , - CT_NOT_CONDITION = ( CT_OR_CONDITION + 1 ) , - CT_LEAF_CONDITION = ( CT_NOT_CONDITION + 1 ) - } CONDITION_TYPE; - -typedef /* [v1_enum] */ -enum tagCONDITION_OPERATION - { COP_IMPLICIT = 0, - COP_EQUAL = ( COP_IMPLICIT + 1 ) , - COP_NOTEQUAL = ( COP_EQUAL + 1 ) , - COP_LESSTHAN = ( COP_NOTEQUAL + 1 ) , - COP_GREATERTHAN = ( COP_LESSTHAN + 1 ) , - COP_LESSTHANOREQUAL = ( COP_GREATERTHAN + 1 ) , - COP_GREATERTHANOREQUAL = ( COP_LESSTHANOREQUAL + 1 ) , - COP_VALUE_STARTSWITH = ( COP_GREATERTHANOREQUAL + 1 ) , - COP_VALUE_ENDSWITH = ( COP_VALUE_STARTSWITH + 1 ) , - COP_VALUE_CONTAINS = ( COP_VALUE_ENDSWITH + 1 ) , - COP_VALUE_NOTCONTAINS = ( COP_VALUE_CONTAINS + 1 ) , - COP_DOSWILDCARDS = ( COP_VALUE_NOTCONTAINS + 1 ) , - COP_WORD_EQUAL = ( COP_DOSWILDCARDS + 1 ) , - COP_WORD_STARTSWITH = ( COP_WORD_EQUAL + 1 ) , - COP_APPLICATION_SPECIFIC = ( COP_WORD_STARTSWITH + 1 ) - } CONDITION_OPERATION; - -typedef /* [v1_enum] */ -enum tagSTRUCTURED_QUERY_SINGLE_OPTION - { SQSO_SCHEMA = 0, - SQSO_LOCALE_WORD_BREAKING = ( SQSO_SCHEMA + 1 ) , - SQSO_WORD_BREAKER = ( SQSO_LOCALE_WORD_BREAKING + 1 ) , - SQSO_NATURAL_SYNTAX = ( SQSO_WORD_BREAKER + 1 ) , - SQSO_AUTOMATIC_WILDCARD = ( SQSO_NATURAL_SYNTAX + 1 ) , - SQSO_TRACE_LEVEL = ( SQSO_AUTOMATIC_WILDCARD + 1 ) , - SQSO_LANGUAGE_KEYWORDS = ( SQSO_TRACE_LEVEL + 1 ) - } STRUCTURED_QUERY_SINGLE_OPTION; - -typedef /* [v1_enum] */ -enum tagSTRUCTURED_QUERY_MULTIOPTION - { SQMO_VIRTUAL_PROPERTY = 0, - SQMO_DEFAULT_PROPERTY = ( SQMO_VIRTUAL_PROPERTY + 1 ) , - SQMO_GENERATOR_FOR_TYPE = ( SQMO_DEFAULT_PROPERTY + 1 ) - } STRUCTURED_QUERY_MULTIOPTION; - -typedef /* [v1_enum] */ -enum tagSTRUCTURED_QUERY_PARSE_ERROR - { SQPE_NONE = 0, - SQPE_EXTRA_OPENING_PARENTHESIS = ( SQPE_NONE + 1 ) , - SQPE_EXTRA_CLOSING_PARENTHESIS = ( SQPE_EXTRA_OPENING_PARENTHESIS + 1 ) , - SQPE_IGNORED_MODIFIER = ( SQPE_EXTRA_CLOSING_PARENTHESIS + 1 ) , - SQPE_IGNORED_CONNECTOR = ( SQPE_IGNORED_MODIFIER + 1 ) , - SQPE_IGNORED_KEYWORD = ( SQPE_IGNORED_CONNECTOR + 1 ) , - SQPE_UNHANDLED = ( SQPE_IGNORED_KEYWORD + 1 ) - } STRUCTURED_QUERY_PARSE_ERROR; - -/* [v1_enum] */ -enum tagSTRUCTURED_QUERY_RESOLVE_OPTION - { SQRO_DONT_RESOLVE_DATETIME = 0x1, - SQRO_ALWAYS_ONE_INTERVAL = 0x2, - SQRO_DONT_SIMPLIFY_CONDITION_TREES = 0x4, - SQRO_DONT_MAP_RELATIONS = 0x8, - SQRO_DONT_RESOLVE_RANGES = 0x10, - SQRO_DONT_REMOVE_UNRESTRICTED_KEYWORDS = 0x20, - SQRO_DONT_SPLIT_WORDS = 0x40, - SQRO_IGNORE_PHRASE_ORDER = 0x80 - } ; -typedef int STRUCTURED_QUERY_RESOLVE_OPTION; - -typedef /* [v1_enum] */ -enum tagINTERVAL_LIMIT_KIND - { ILK_EXPLICIT_INCLUDED = 0, - ILK_EXPLICIT_EXCLUDED = ( ILK_EXPLICIT_INCLUDED + 1 ) , - ILK_NEGATIVE_INFINITY = ( ILK_EXPLICIT_EXCLUDED + 1 ) , - ILK_POSITIVE_INFINITY = ( ILK_NEGATIVE_INFINITY + 1 ) - } INTERVAL_LIMIT_KIND; - -typedef /* [v1_enum] */ -enum tagQUERY_PARSER_MANAGER_OPTION - { QPMO_SCHEMA_BINARY_NAME = 0, - QPMO_PRELOCALIZED_SCHEMA_BINARY_PATH = ( QPMO_SCHEMA_BINARY_NAME + 1 ) , - QPMO_UNLOCALIZED_SCHEMA_BINARY_PATH = ( QPMO_PRELOCALIZED_SCHEMA_BINARY_PATH + 1 ) , - QPMO_LOCALIZED_SCHEMA_BINARY_PATH = ( QPMO_UNLOCALIZED_SCHEMA_BINARY_PATH + 1 ) , - QPMO_APPEND_LCID_TO_LOCALIZED_PATH = ( QPMO_LOCALIZED_SCHEMA_BINARY_PATH + 1 ) , - QPMO_LOCALIZER_SUPPORT = ( QPMO_APPEND_LCID_TO_LOCALIZED_PATH + 1 ) - } QUERY_PARSER_MANAGER_OPTION; - - - -extern RPC_IF_HANDLE __MIDL_itf_structuredquery_0000_0000_v0_0_c_ifspec; -extern RPC_IF_HANDLE __MIDL_itf_structuredquery_0000_0000_v0_0_s_ifspec; - -#ifndef __IQueryParser_INTERFACE_DEFINED__ -#define __IQueryParser_INTERFACE_DEFINED__ - -/* interface IQueryParser */ -/* [unique][uuid][object] */ - - -EXTERN_C const IID IID_IQueryParser; - -#if defined(__cplusplus) && !defined(CINTERFACE) - - MIDL_INTERFACE("2EBDEE67-3505-43f8-9946-EA44ABC8E5B0") - IQueryParser : public IUnknown - { - public: - virtual HRESULT STDMETHODCALLTYPE Parse( - /* [in] */ __RPC__in LPCWSTR pszInputString, - /* [in] */ __RPC__in_opt IEnumUnknown *pCustomProperties, - /* [retval][out] */ __RPC__deref_out_opt IQuerySolution **ppSolution) = 0; - - virtual HRESULT STDMETHODCALLTYPE SetOption( - /* [in] */ STRUCTURED_QUERY_SINGLE_OPTION option, - /* [in] */ __RPC__in const PROPVARIANT *pOptionValue) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetOption( - /* [in] */ STRUCTURED_QUERY_SINGLE_OPTION option, - /* [retval][out] */ __RPC__out PROPVARIANT *pOptionValue) = 0; - - virtual HRESULT STDMETHODCALLTYPE SetMultiOption( - /* [in] */ STRUCTURED_QUERY_MULTIOPTION option, - /* [in] */ __RPC__in LPCWSTR pszOptionKey, - /* [in] */ __RPC__in const PROPVARIANT *pOptionValue) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetSchemaProvider( - /* [retval][out] */ __RPC__deref_out_opt ISchemaProvider **ppSchemaProvider) = 0; - - virtual HRESULT STDMETHODCALLTYPE RestateToString( - /* [in] */ __RPC__in_opt ICondition *pCondition, - /* [in] */ BOOL fUseEnglish, - /* [out] */ __RPC__deref_out_opt LPWSTR *ppszQueryString) = 0; - - virtual HRESULT STDMETHODCALLTYPE ParsePropertyValue( - /* [in] */ __RPC__in LPCWSTR pszPropertyName, - /* [in] */ __RPC__in LPCWSTR pszInputString, - /* [retval][out] */ __RPC__deref_out_opt IQuerySolution **ppSolution) = 0; - - virtual HRESULT STDMETHODCALLTYPE RestatePropertyValueToString( - /* [in] */ __RPC__in_opt ICondition *pCondition, - /* [in] */ BOOL fUseEnglish, - /* [out] */ __RPC__deref_out_opt LPWSTR *ppszPropertyName, - /* [out] */ __RPC__deref_out_opt LPWSTR *ppszQueryString) = 0; - - }; - -#else /* C style interface */ - - typedef struct IQueryParserVtbl - { - BEGIN_INTERFACE - - HRESULT ( STDMETHODCALLTYPE *QueryInterface )( - IQueryParser * This, - /* [in] */ __RPC__in REFIID riid, - /* [iid_is][out] */ - __RPC__deref_out void **ppvObject); - - ULONG ( STDMETHODCALLTYPE *AddRef )( - IQueryParser * This); - - ULONG ( STDMETHODCALLTYPE *Release )( - IQueryParser * This); - - HRESULT ( STDMETHODCALLTYPE *Parse )( - IQueryParser * This, - /* [in] */ __RPC__in LPCWSTR pszInputString, - /* [in] */ __RPC__in_opt IEnumUnknown *pCustomProperties, - /* [retval][out] */ __RPC__deref_out_opt IQuerySolution **ppSolution); - - HRESULT ( STDMETHODCALLTYPE *SetOption )( - IQueryParser * This, - /* [in] */ STRUCTURED_QUERY_SINGLE_OPTION option, - /* [in] */ __RPC__in const PROPVARIANT *pOptionValue); - - HRESULT ( STDMETHODCALLTYPE *GetOption )( - IQueryParser * This, - /* [in] */ STRUCTURED_QUERY_SINGLE_OPTION option, - /* [retval][out] */ __RPC__out PROPVARIANT *pOptionValue); - - HRESULT ( STDMETHODCALLTYPE *SetMultiOption )( - IQueryParser * This, - /* [in] */ STRUCTURED_QUERY_MULTIOPTION option, - /* [in] */ __RPC__in LPCWSTR pszOptionKey, - /* [in] */ __RPC__in const PROPVARIANT *pOptionValue); - - HRESULT ( STDMETHODCALLTYPE *GetSchemaProvider )( - IQueryParser * This, - /* [retval][out] */ __RPC__deref_out_opt ISchemaProvider **ppSchemaProvider); - - HRESULT ( STDMETHODCALLTYPE *RestateToString )( - IQueryParser * This, - /* [in] */ __RPC__in_opt ICondition *pCondition, - /* [in] */ BOOL fUseEnglish, - /* [out] */ __RPC__deref_out_opt LPWSTR *ppszQueryString); - - HRESULT ( STDMETHODCALLTYPE *ParsePropertyValue )( - IQueryParser * This, - /* [in] */ __RPC__in LPCWSTR pszPropertyName, - /* [in] */ __RPC__in LPCWSTR pszInputString, - /* [retval][out] */ __RPC__deref_out_opt IQuerySolution **ppSolution); - - HRESULT ( STDMETHODCALLTYPE *RestatePropertyValueToString )( - IQueryParser * This, - /* [in] */ __RPC__in_opt ICondition *pCondition, - /* [in] */ BOOL fUseEnglish, - /* [out] */ __RPC__deref_out_opt LPWSTR *ppszPropertyName, - /* [out] */ __RPC__deref_out_opt LPWSTR *ppszQueryString); - - END_INTERFACE - } IQueryParserVtbl; - - interface IQueryParser - { - CONST_VTBL struct IQueryParserVtbl *lpVtbl; - }; - - - -#ifdef COBJMACROS - - -#define IQueryParser_QueryInterface(This,riid,ppvObject) \ - ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) - -#define IQueryParser_AddRef(This) \ - ( (This)->lpVtbl -> AddRef(This) ) - -#define IQueryParser_Release(This) \ - ( (This)->lpVtbl -> Release(This) ) - - -#define IQueryParser_Parse(This,pszInputString,pCustomProperties,ppSolution) \ - ( (This)->lpVtbl -> Parse(This,pszInputString,pCustomProperties,ppSolution) ) - -#define IQueryParser_SetOption(This,option,pOptionValue) \ - ( (This)->lpVtbl -> SetOption(This,option,pOptionValue) ) - -#define IQueryParser_GetOption(This,option,pOptionValue) \ - ( (This)->lpVtbl -> GetOption(This,option,pOptionValue) ) - -#define IQueryParser_SetMultiOption(This,option,pszOptionKey,pOptionValue) \ - ( (This)->lpVtbl -> SetMultiOption(This,option,pszOptionKey,pOptionValue) ) - -#define IQueryParser_GetSchemaProvider(This,ppSchemaProvider) \ - ( (This)->lpVtbl -> GetSchemaProvider(This,ppSchemaProvider) ) - -#define IQueryParser_RestateToString(This,pCondition,fUseEnglish,ppszQueryString) \ - ( (This)->lpVtbl -> RestateToString(This,pCondition,fUseEnglish,ppszQueryString) ) - -#define IQueryParser_ParsePropertyValue(This,pszPropertyName,pszInputString,ppSolution) \ - ( (This)->lpVtbl -> ParsePropertyValue(This,pszPropertyName,pszInputString,ppSolution) ) - -#define IQueryParser_RestatePropertyValueToString(This,pCondition,fUseEnglish,ppszPropertyName,ppszQueryString) \ - ( (This)->lpVtbl -> RestatePropertyValueToString(This,pCondition,fUseEnglish,ppszPropertyName,ppszQueryString) ) - -#endif /* COBJMACROS */ - - -#endif /* C style interface */ - - - - -#endif /* __IQueryParser_INTERFACE_DEFINED__ */ - - -#ifndef __IConditionFactory_INTERFACE_DEFINED__ -#define __IConditionFactory_INTERFACE_DEFINED__ - -/* interface IConditionFactory */ -/* [unique][uuid][object] */ - - -EXTERN_C const IID IID_IConditionFactory; - -#if defined(__cplusplus) && !defined(CINTERFACE) - - MIDL_INTERFACE("A5EFE073-B16F-474f-9F3E-9F8B497A3E08") - IConditionFactory : public IUnknown - { - public: - virtual HRESULT STDMETHODCALLTYPE MakeNot( - /* [in] */ __RPC__in_opt ICondition *pSubCondition, - /* [in] */ BOOL simplify, - /* [retval][out] */ __RPC__deref_out_opt ICondition **ppResultQuery) = 0; - - virtual HRESULT STDMETHODCALLTYPE MakeAndOr( - /* [in] */ CONDITION_TYPE nodeType, - /* [in] */ __RPC__in_opt IEnumUnknown *pSubConditions, - /* [in] */ BOOL simplify, - /* [retval][out] */ __RPC__deref_out_opt ICondition **ppResultQuery) = 0; - - virtual HRESULT STDMETHODCALLTYPE MakeLeaf( - /* [unique][in] */ __RPC__in_opt LPCWSTR pszPropertyName, - /* [in] */ CONDITION_OPERATION op, - /* [unique][in] */ __RPC__in_opt LPCWSTR pszValueType, - /* [in] */ __RPC__in const PROPVARIANT *pValue, - /* [in] */ __RPC__in_opt IRichChunk *pPropertyNameTerm, - /* [in] */ __RPC__in_opt IRichChunk *pOperationTerm, - /* [in] */ __RPC__in_opt IRichChunk *pValueTerm, - /* [in] */ BOOL expand, - /* [retval][out] */ __RPC__deref_out_opt ICondition **ppResultQuery) = 0; - - virtual /* [local] */ HRESULT STDMETHODCALLTYPE Resolve( - /* [in] */ - __in ICondition *pConditionTree, - /* [in] */ - __in STRUCTURED_QUERY_RESOLVE_OPTION sqro, - /* [ref][in] */ - __in_opt const SYSTEMTIME *pstReferenceTime, - /* [retval][out] */ - __out ICondition **ppResolvedConditionTree) = 0; - - }; - -#else /* C style interface */ - - typedef struct IConditionFactoryVtbl - { - BEGIN_INTERFACE - - HRESULT ( STDMETHODCALLTYPE *QueryInterface )( - IConditionFactory * This, - /* [in] */ __RPC__in REFIID riid, - /* [iid_is][out] */ - __RPC__deref_out void **ppvObject); - - ULONG ( STDMETHODCALLTYPE *AddRef )( - IConditionFactory * This); - - ULONG ( STDMETHODCALLTYPE *Release )( - IConditionFactory * This); - - HRESULT ( STDMETHODCALLTYPE *MakeNot )( - IConditionFactory * This, - /* [in] */ __RPC__in_opt ICondition *pSubCondition, - /* [in] */ BOOL simplify, - /* [retval][out] */ __RPC__deref_out_opt ICondition **ppResultQuery); - - HRESULT ( STDMETHODCALLTYPE *MakeAndOr )( - IConditionFactory * This, - /* [in] */ CONDITION_TYPE nodeType, - /* [in] */ __RPC__in_opt IEnumUnknown *pSubConditions, - /* [in] */ BOOL simplify, - /* [retval][out] */ __RPC__deref_out_opt ICondition **ppResultQuery); - - HRESULT ( STDMETHODCALLTYPE *MakeLeaf )( - IConditionFactory * This, - /* [unique][in] */ __RPC__in_opt LPCWSTR pszPropertyName, - /* [in] */ CONDITION_OPERATION op, - /* [unique][in] */ __RPC__in_opt LPCWSTR pszValueType, - /* [in] */ __RPC__in const PROPVARIANT *pValue, - /* [in] */ __RPC__in_opt IRichChunk *pPropertyNameTerm, - /* [in] */ __RPC__in_opt IRichChunk *pOperationTerm, - /* [in] */ __RPC__in_opt IRichChunk *pValueTerm, - /* [in] */ BOOL expand, - /* [retval][out] */ __RPC__deref_out_opt ICondition **ppResultQuery); - - /* [local] */ HRESULT ( STDMETHODCALLTYPE *Resolve )( - IConditionFactory * This, - /* [in] */ - __in ICondition *pConditionTree, - /* [in] */ - __in STRUCTURED_QUERY_RESOLVE_OPTION sqro, - /* [ref][in] */ - __in_opt const SYSTEMTIME *pstReferenceTime, - /* [retval][out] */ - __out ICondition **ppResolvedConditionTree); - - END_INTERFACE - } IConditionFactoryVtbl; - - interface IConditionFactory - { - CONST_VTBL struct IConditionFactoryVtbl *lpVtbl; - }; - - - -#ifdef COBJMACROS - - -#define IConditionFactory_QueryInterface(This,riid,ppvObject) \ - ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) - -#define IConditionFactory_AddRef(This) \ - ( (This)->lpVtbl -> AddRef(This) ) - -#define IConditionFactory_Release(This) \ - ( (This)->lpVtbl -> Release(This) ) - - -#define IConditionFactory_MakeNot(This,pSubCondition,simplify,ppResultQuery) \ - ( (This)->lpVtbl -> MakeNot(This,pSubCondition,simplify,ppResultQuery) ) - -#define IConditionFactory_MakeAndOr(This,nodeType,pSubConditions,simplify,ppResultQuery) \ - ( (This)->lpVtbl -> MakeAndOr(This,nodeType,pSubConditions,simplify,ppResultQuery) ) - -#define IConditionFactory_MakeLeaf(This,pszPropertyName,op,pszValueType,pValue,pPropertyNameTerm,pOperationTerm,pValueTerm,expand,ppResultQuery) \ - ( (This)->lpVtbl -> MakeLeaf(This,pszPropertyName,op,pszValueType,pValue,pPropertyNameTerm,pOperationTerm,pValueTerm,expand,ppResultQuery) ) - -#define IConditionFactory_Resolve(This,pConditionTree,sqro,pstReferenceTime,ppResolvedConditionTree) \ - ( (This)->lpVtbl -> Resolve(This,pConditionTree,sqro,pstReferenceTime,ppResolvedConditionTree) ) - -#endif /* COBJMACROS */ - - -#endif /* C style interface */ - - - - -#endif /* __IConditionFactory_INTERFACE_DEFINED__ */ - - -#ifndef __IQuerySolution_INTERFACE_DEFINED__ -#define __IQuerySolution_INTERFACE_DEFINED__ - -/* interface IQuerySolution */ -/* [unique][uuid][object] */ - - -EXTERN_C const IID IID_IQuerySolution; - -#if defined(__cplusplus) && !defined(CINTERFACE) - - MIDL_INTERFACE("D6EBC66B-8921-4193-AFDD-A1789FB7FF57") - IQuerySolution : public IConditionFactory - { - public: - virtual /* [local] */ HRESULT STDMETHODCALLTYPE GetQuery( - /* [out] */ - __out_opt ICondition **ppQueryNode, - /* [out] */ - __out_opt IEntity **ppMainType) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetErrors( - /* [in] */ __RPC__in REFIID riid, - /* [iid_is][retval][out] */ __RPC__deref_out_opt void **ppParseErrors) = 0; - - virtual /* [local] */ HRESULT STDMETHODCALLTYPE GetLexicalData( - /* [out] */ - __deref_opt_out LPWSTR *ppszInputString, - /* [out] */ - __out_opt ITokenCollection **ppTokens, - /* [out] */ - __out_opt LCID *pLocale, - /* [out] */ - __out_opt IUnknown **ppWordBreaker) = 0; - - }; - -#else /* C style interface */ - - typedef struct IQuerySolutionVtbl - { - BEGIN_INTERFACE - - HRESULT ( STDMETHODCALLTYPE *QueryInterface )( - IQuerySolution * This, - /* [in] */ __RPC__in REFIID riid, - /* [iid_is][out] */ - __RPC__deref_out void **ppvObject); - - ULONG ( STDMETHODCALLTYPE *AddRef )( - IQuerySolution * This); - - ULONG ( STDMETHODCALLTYPE *Release )( - IQuerySolution * This); - - HRESULT ( STDMETHODCALLTYPE *MakeNot )( - IQuerySolution * This, - /* [in] */ __RPC__in_opt ICondition *pSubCondition, - /* [in] */ BOOL simplify, - /* [retval][out] */ __RPC__deref_out_opt ICondition **ppResultQuery); - - HRESULT ( STDMETHODCALLTYPE *MakeAndOr )( - IQuerySolution * This, - /* [in] */ CONDITION_TYPE nodeType, - /* [in] */ __RPC__in_opt IEnumUnknown *pSubConditions, - /* [in] */ BOOL simplify, - /* [retval][out] */ __RPC__deref_out_opt ICondition **ppResultQuery); - - HRESULT ( STDMETHODCALLTYPE *MakeLeaf )( - IQuerySolution * This, - /* [unique][in] */ __RPC__in_opt LPCWSTR pszPropertyName, - /* [in] */ CONDITION_OPERATION op, - /* [unique][in] */ __RPC__in_opt LPCWSTR pszValueType, - /* [in] */ __RPC__in const PROPVARIANT *pValue, - /* [in] */ __RPC__in_opt IRichChunk *pPropertyNameTerm, - /* [in] */ __RPC__in_opt IRichChunk *pOperationTerm, - /* [in] */ __RPC__in_opt IRichChunk *pValueTerm, - /* [in] */ BOOL expand, - /* [retval][out] */ __RPC__deref_out_opt ICondition **ppResultQuery); - - /* [local] */ HRESULT ( STDMETHODCALLTYPE *Resolve )( - IQuerySolution * This, - /* [in] */ - __in ICondition *pConditionTree, - /* [in] */ - __in STRUCTURED_QUERY_RESOLVE_OPTION sqro, - /* [ref][in] */ - __in_opt const SYSTEMTIME *pstReferenceTime, - /* [retval][out] */ - __out ICondition **ppResolvedConditionTree); - - /* [local] */ HRESULT ( STDMETHODCALLTYPE *GetQuery )( - IQuerySolution * This, - /* [out] */ - __out_opt ICondition **ppQueryNode, - /* [out] */ - __out_opt IEntity **ppMainType); - - HRESULT ( STDMETHODCALLTYPE *GetErrors )( - IQuerySolution * This, - /* [in] */ __RPC__in REFIID riid, - /* [iid_is][retval][out] */ __RPC__deref_out_opt void **ppParseErrors); - - /* [local] */ HRESULT ( STDMETHODCALLTYPE *GetLexicalData )( - IQuerySolution * This, - /* [out] */ - __deref_opt_out LPWSTR *ppszInputString, - /* [out] */ - __out_opt ITokenCollection **ppTokens, - /* [out] */ - __out_opt LCID *pLocale, - /* [out] */ - __out_opt IUnknown **ppWordBreaker); - - END_INTERFACE - } IQuerySolutionVtbl; - - interface IQuerySolution - { - CONST_VTBL struct IQuerySolutionVtbl *lpVtbl; - }; - - - -#ifdef COBJMACROS - - -#define IQuerySolution_QueryInterface(This,riid,ppvObject) \ - ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) - -#define IQuerySolution_AddRef(This) \ - ( (This)->lpVtbl -> AddRef(This) ) - -#define IQuerySolution_Release(This) \ - ( (This)->lpVtbl -> Release(This) ) - - -#define IQuerySolution_MakeNot(This,pSubCondition,simplify,ppResultQuery) \ - ( (This)->lpVtbl -> MakeNot(This,pSubCondition,simplify,ppResultQuery) ) - -#define IQuerySolution_MakeAndOr(This,nodeType,pSubConditions,simplify,ppResultQuery) \ - ( (This)->lpVtbl -> MakeAndOr(This,nodeType,pSubConditions,simplify,ppResultQuery) ) - -#define IQuerySolution_MakeLeaf(This,pszPropertyName,op,pszValueType,pValue,pPropertyNameTerm,pOperationTerm,pValueTerm,expand,ppResultQuery) \ - ( (This)->lpVtbl -> MakeLeaf(This,pszPropertyName,op,pszValueType,pValue,pPropertyNameTerm,pOperationTerm,pValueTerm,expand,ppResultQuery) ) - -#define IQuerySolution_Resolve(This,pConditionTree,sqro,pstReferenceTime,ppResolvedConditionTree) \ - ( (This)->lpVtbl -> Resolve(This,pConditionTree,sqro,pstReferenceTime,ppResolvedConditionTree) ) - - -#define IQuerySolution_GetQuery(This,ppQueryNode,ppMainType) \ - ( (This)->lpVtbl -> GetQuery(This,ppQueryNode,ppMainType) ) - -#define IQuerySolution_GetErrors(This,riid,ppParseErrors) \ - ( (This)->lpVtbl -> GetErrors(This,riid,ppParseErrors) ) - -#define IQuerySolution_GetLexicalData(This,ppszInputString,ppTokens,pLocale,ppWordBreaker) \ - ( (This)->lpVtbl -> GetLexicalData(This,ppszInputString,ppTokens,pLocale,ppWordBreaker) ) - -#endif /* COBJMACROS */ - - -#endif /* C style interface */ - - - - -#endif /* __IQuerySolution_INTERFACE_DEFINED__ */ - - -#ifndef __ICondition_INTERFACE_DEFINED__ -#define __ICondition_INTERFACE_DEFINED__ - -/* interface ICondition */ -/* [unique][uuid][object] */ - - -EXTERN_C const IID IID_ICondition; - -#if defined(__cplusplus) && !defined(CINTERFACE) - - MIDL_INTERFACE("0FC988D4-C935-4b97-A973-46282EA175C8") - ICondition : public IPersistStream - { - public: - virtual HRESULT STDMETHODCALLTYPE GetConditionType( - /* [retval][out] */ __RPC__out CONDITION_TYPE *pNodeType) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetSubConditions( - /* [in] */ __RPC__in REFIID riid, - /* [iid_is][retval][out] */ __RPC__deref_out_opt void **ppv) = 0; - - virtual /* [local] */ HRESULT STDMETHODCALLTYPE GetComparisonInfo( - /* [out] */ - __deref_opt_out LPWSTR *ppszPropertyName, - /* [out] */ - __out_opt CONDITION_OPERATION *pOperation, - /* [out] */ - __out_opt PROPVARIANT *pValue) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetValueType( - /* [retval][out] */ __RPC__deref_out_opt LPWSTR *ppszValueTypeName) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetValueNormalization( - /* [retval][out] */ __RPC__deref_out_opt LPWSTR *ppszNormalization) = 0; - - virtual /* [local] */ HRESULT STDMETHODCALLTYPE GetInputTerms( - /* [out] */ - __out_opt IRichChunk **ppPropertyTerm, - /* [out] */ - __out_opt IRichChunk **ppOperationTerm, - /* [out] */ - __out_opt IRichChunk **ppValueTerm) = 0; - - virtual HRESULT STDMETHODCALLTYPE Clone( - /* [retval][out] */ __RPC__deref_out_opt ICondition **ppc) = 0; - - }; - -#else /* C style interface */ - - typedef struct IConditionVtbl - { - BEGIN_INTERFACE - - HRESULT ( STDMETHODCALLTYPE *QueryInterface )( - ICondition * This, - /* [in] */ __RPC__in REFIID riid, - /* [iid_is][out] */ - __RPC__deref_out void **ppvObject); - - ULONG ( STDMETHODCALLTYPE *AddRef )( - ICondition * This); - - ULONG ( STDMETHODCALLTYPE *Release )( - ICondition * This); - - HRESULT ( STDMETHODCALLTYPE *GetClassID )( - ICondition * This, - /* [out] */ __RPC__out CLSID *pClassID); - - HRESULT ( STDMETHODCALLTYPE *IsDirty )( - ICondition * This); - - HRESULT ( STDMETHODCALLTYPE *Load )( - ICondition * This, - /* [unique][in] */ __RPC__in_opt IStream *pStm); - - HRESULT ( STDMETHODCALLTYPE *Save )( - ICondition * This, - /* [unique][in] */ __RPC__in_opt IStream *pStm, - /* [in] */ BOOL fClearDirty); - - HRESULT ( STDMETHODCALLTYPE *GetSizeMax )( - ICondition * This, - /* [out] */ __RPC__out ULARGE_INTEGER *pcbSize); - - HRESULT ( STDMETHODCALLTYPE *GetConditionType )( - ICondition * This, - /* [retval][out] */ __RPC__out CONDITION_TYPE *pNodeType); - - HRESULT ( STDMETHODCALLTYPE *GetSubConditions )( - ICondition * This, - /* [in] */ __RPC__in REFIID riid, - /* [iid_is][retval][out] */ __RPC__deref_out_opt void **ppv); - - /* [local] */ HRESULT ( STDMETHODCALLTYPE *GetComparisonInfo )( - ICondition * This, - /* [out] */ - __deref_opt_out LPWSTR *ppszPropertyName, - /* [out] */ - __out_opt CONDITION_OPERATION *pOperation, - /* [out] */ - __out_opt PROPVARIANT *pValue); - - HRESULT ( STDMETHODCALLTYPE *GetValueType )( - ICondition * This, - /* [retval][out] */ __RPC__deref_out_opt LPWSTR *ppszValueTypeName); - - HRESULT ( STDMETHODCALLTYPE *GetValueNormalization )( - ICondition * This, - /* [retval][out] */ __RPC__deref_out_opt LPWSTR *ppszNormalization); - - /* [local] */ HRESULT ( STDMETHODCALLTYPE *GetInputTerms )( - ICondition * This, - /* [out] */ - __out_opt IRichChunk **ppPropertyTerm, - /* [out] */ - __out_opt IRichChunk **ppOperationTerm, - /* [out] */ - __out_opt IRichChunk **ppValueTerm); - - HRESULT ( STDMETHODCALLTYPE *Clone )( - ICondition * This, - /* [retval][out] */ __RPC__deref_out_opt ICondition **ppc); - - END_INTERFACE - } IConditionVtbl; - - interface ICondition - { - CONST_VTBL struct IConditionVtbl *lpVtbl; - }; - - - -#ifdef COBJMACROS - - -#define ICondition_QueryInterface(This,riid,ppvObject) \ - ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) - -#define ICondition_AddRef(This) \ - ( (This)->lpVtbl -> AddRef(This) ) - -#define ICondition_Release(This) \ - ( (This)->lpVtbl -> Release(This) ) - - -#define ICondition_GetClassID(This,pClassID) \ - ( (This)->lpVtbl -> GetClassID(This,pClassID) ) - - -#define ICondition_IsDirty(This) \ - ( (This)->lpVtbl -> IsDirty(This) ) - -#define ICondition_Load(This,pStm) \ - ( (This)->lpVtbl -> Load(This,pStm) ) - -#define ICondition_Save(This,pStm,fClearDirty) \ - ( (This)->lpVtbl -> Save(This,pStm,fClearDirty) ) - -#define ICondition_GetSizeMax(This,pcbSize) \ - ( (This)->lpVtbl -> GetSizeMax(This,pcbSize) ) - - -#define ICondition_GetConditionType(This,pNodeType) \ - ( (This)->lpVtbl -> GetConditionType(This,pNodeType) ) - -#define ICondition_GetSubConditions(This,riid,ppv) \ - ( (This)->lpVtbl -> GetSubConditions(This,riid,ppv) ) - -#define ICondition_GetComparisonInfo(This,ppszPropertyName,pOperation,pValue) \ - ( (This)->lpVtbl -> GetComparisonInfo(This,ppszPropertyName,pOperation,pValue) ) - -#define ICondition_GetValueType(This,ppszValueTypeName) \ - ( (This)->lpVtbl -> GetValueType(This,ppszValueTypeName) ) - -#define ICondition_GetValueNormalization(This,ppszNormalization) \ - ( (This)->lpVtbl -> GetValueNormalization(This,ppszNormalization) ) - -#define ICondition_GetInputTerms(This,ppPropertyTerm,ppOperationTerm,ppValueTerm) \ - ( (This)->lpVtbl -> GetInputTerms(This,ppPropertyTerm,ppOperationTerm,ppValueTerm) ) - -#define ICondition_Clone(This,ppc) \ - ( (This)->lpVtbl -> Clone(This,ppc) ) - -#endif /* COBJMACROS */ - - -#endif /* C style interface */ - - - - -#endif /* __ICondition_INTERFACE_DEFINED__ */ - - -#ifndef __IConditionGenerator_INTERFACE_DEFINED__ -#define __IConditionGenerator_INTERFACE_DEFINED__ - -/* interface IConditionGenerator */ -/* [unique][uuid][object] */ - - -EXTERN_C const IID IID_IConditionGenerator; - -#if defined(__cplusplus) && !defined(CINTERFACE) - - MIDL_INTERFACE("92D2CC58-4386-45a3-B98C-7E0CE64A4117") - IConditionGenerator : public IUnknown - { - public: - virtual HRESULT STDMETHODCALLTYPE Initialize( - /* [in] */ __RPC__in_opt ISchemaProvider *pSchemaProvider) = 0; - - virtual HRESULT STDMETHODCALLTYPE RecognizeNamedEntities( - /* [in] */ __RPC__in LPCWSTR pszInputString, - /* [in] */ LCID lcid, - /* [in] */ __RPC__in_opt ITokenCollection *pTokenCollection, - /* [out][in] */ __RPC__inout_opt INamedEntityCollector *pNamedEntities) = 0; - - virtual HRESULT STDMETHODCALLTYPE GenerateForLeaf( - /* [in] */ __RPC__in_opt IConditionFactory *pConditionFactory, - /* [unique][in] */ __RPC__in_opt LPCWSTR pszPropertyName, - /* [in] */ CONDITION_OPERATION op, - /* [unique][in] */ __RPC__in_opt LPCWSTR pszValueType, - /* [in] */ __RPC__in LPCWSTR pszValue, - /* [unique][in] */ __RPC__in_opt LPCWSTR pszValue2, - /* [in] */ __RPC__in_opt IRichChunk *pPropertyNameTerm, - /* [in] */ __RPC__in_opt IRichChunk *pOperationTerm, - /* [in] */ __RPC__in_opt IRichChunk *pValueTerm, - /* [in] */ BOOL automaticWildcard, - /* [out] */ __RPC__out BOOL *pNoStringQuery, - /* [retval][out] */ __RPC__deref_out_opt ICondition **ppQueryExpression) = 0; - - virtual /* [local] */ HRESULT STDMETHODCALLTYPE DefaultPhrase( - /* [unique][in] */ LPCWSTR pszValueType, - /* [in] */ const PROPVARIANT *ppropvar, - /* [in] */ BOOL fUseEnglish, - /* [retval][out] */ - __deref_opt_out LPWSTR *ppszPhrase) = 0; - - }; - -#else /* C style interface */ - - typedef struct IConditionGeneratorVtbl - { - BEGIN_INTERFACE - - HRESULT ( STDMETHODCALLTYPE *QueryInterface )( - IConditionGenerator * This, - /* [in] */ __RPC__in REFIID riid, - /* [iid_is][out] */ - __RPC__deref_out void **ppvObject); - - ULONG ( STDMETHODCALLTYPE *AddRef )( - IConditionGenerator * This); - - ULONG ( STDMETHODCALLTYPE *Release )( - IConditionGenerator * This); - - HRESULT ( STDMETHODCALLTYPE *Initialize )( - IConditionGenerator * This, - /* [in] */ __RPC__in_opt ISchemaProvider *pSchemaProvider); - - HRESULT ( STDMETHODCALLTYPE *RecognizeNamedEntities )( - IConditionGenerator * This, - /* [in] */ __RPC__in LPCWSTR pszInputString, - /* [in] */ LCID lcid, - /* [in] */ __RPC__in_opt ITokenCollection *pTokenCollection, - /* [out][in] */ __RPC__inout_opt INamedEntityCollector *pNamedEntities); - - HRESULT ( STDMETHODCALLTYPE *GenerateForLeaf )( - IConditionGenerator * This, - /* [in] */ __RPC__in_opt IConditionFactory *pConditionFactory, - /* [unique][in] */ __RPC__in_opt LPCWSTR pszPropertyName, - /* [in] */ CONDITION_OPERATION op, - /* [unique][in] */ __RPC__in_opt LPCWSTR pszValueType, - /* [in] */ __RPC__in LPCWSTR pszValue, - /* [unique][in] */ __RPC__in_opt LPCWSTR pszValue2, - /* [in] */ __RPC__in_opt IRichChunk *pPropertyNameTerm, - /* [in] */ __RPC__in_opt IRichChunk *pOperationTerm, - /* [in] */ __RPC__in_opt IRichChunk *pValueTerm, - /* [in] */ BOOL automaticWildcard, - /* [out] */ __RPC__out BOOL *pNoStringQuery, - /* [retval][out] */ __RPC__deref_out_opt ICondition **ppQueryExpression); - - /* [local] */ HRESULT ( STDMETHODCALLTYPE *DefaultPhrase )( - IConditionGenerator * This, - /* [unique][in] */ LPCWSTR pszValueType, - /* [in] */ const PROPVARIANT *ppropvar, - /* [in] */ BOOL fUseEnglish, - /* [retval][out] */ - __deref_opt_out LPWSTR *ppszPhrase); - - END_INTERFACE - } IConditionGeneratorVtbl; - - interface IConditionGenerator - { - CONST_VTBL struct IConditionGeneratorVtbl *lpVtbl; - }; - - - -#ifdef COBJMACROS - - -#define IConditionGenerator_QueryInterface(This,riid,ppvObject) \ - ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) - -#define IConditionGenerator_AddRef(This) \ - ( (This)->lpVtbl -> AddRef(This) ) - -#define IConditionGenerator_Release(This) \ - ( (This)->lpVtbl -> Release(This) ) - - -#define IConditionGenerator_Initialize(This,pSchemaProvider) \ - ( (This)->lpVtbl -> Initialize(This,pSchemaProvider) ) - -#define IConditionGenerator_RecognizeNamedEntities(This,pszInputString,lcid,pTokenCollection,pNamedEntities) \ - ( (This)->lpVtbl -> RecognizeNamedEntities(This,pszInputString,lcid,pTokenCollection,pNamedEntities) ) - -#define IConditionGenerator_GenerateForLeaf(This,pConditionFactory,pszPropertyName,op,pszValueType,pszValue,pszValue2,pPropertyNameTerm,pOperationTerm,pValueTerm,automaticWildcard,pNoStringQuery,ppQueryExpression) \ - ( (This)->lpVtbl -> GenerateForLeaf(This,pConditionFactory,pszPropertyName,op,pszValueType,pszValue,pszValue2,pPropertyNameTerm,pOperationTerm,pValueTerm,automaticWildcard,pNoStringQuery,ppQueryExpression) ) - -#define IConditionGenerator_DefaultPhrase(This,pszValueType,ppropvar,fUseEnglish,ppszPhrase) \ - ( (This)->lpVtbl -> DefaultPhrase(This,pszValueType,ppropvar,fUseEnglish,ppszPhrase) ) - -#endif /* COBJMACROS */ - - -#endif /* C style interface */ - - - - -#endif /* __IConditionGenerator_INTERFACE_DEFINED__ */ - - -#ifndef __IRichChunk_INTERFACE_DEFINED__ -#define __IRichChunk_INTERFACE_DEFINED__ - -/* interface IRichChunk */ -/* [unique][uuid][object] */ - - -EXTERN_C const IID IID_IRichChunk; - -#if defined(__cplusplus) && !defined(CINTERFACE) - - MIDL_INTERFACE("4FDEF69C-DBC9-454e-9910-B34F3C64B510") - IRichChunk : public IUnknown - { - public: - virtual /* [local] */ HRESULT STDMETHODCALLTYPE GetData( - /* [out] */ - __out_opt ULONG *pFirstPos, - /* [out] */ - __out_opt ULONG *pLength, - /* [out] */ - __deref_opt_out LPWSTR *ppsz, - /* [out] */ - __out_opt PROPVARIANT *pValue) = 0; - - }; - -#else /* C style interface */ - - typedef struct IRichChunkVtbl - { - BEGIN_INTERFACE - - HRESULT ( STDMETHODCALLTYPE *QueryInterface )( - IRichChunk * This, - /* [in] */ __RPC__in REFIID riid, - /* [iid_is][out] */ - __RPC__deref_out void **ppvObject); - - ULONG ( STDMETHODCALLTYPE *AddRef )( - IRichChunk * This); - - ULONG ( STDMETHODCALLTYPE *Release )( - IRichChunk * This); - - /* [local] */ HRESULT ( STDMETHODCALLTYPE *GetData )( - IRichChunk * This, - /* [out] */ - __out_opt ULONG *pFirstPos, - /* [out] */ - __out_opt ULONG *pLength, - /* [out] */ - __deref_opt_out LPWSTR *ppsz, - /* [out] */ - __out_opt PROPVARIANT *pValue); - - END_INTERFACE - } IRichChunkVtbl; - - interface IRichChunk - { - CONST_VTBL struct IRichChunkVtbl *lpVtbl; - }; - - - -#ifdef COBJMACROS - - -#define IRichChunk_QueryInterface(This,riid,ppvObject) \ - ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) - -#define IRichChunk_AddRef(This) \ - ( (This)->lpVtbl -> AddRef(This) ) - -#define IRichChunk_Release(This) \ - ( (This)->lpVtbl -> Release(This) ) - - -#define IRichChunk_GetData(This,pFirstPos,pLength,ppsz,pValue) \ - ( (This)->lpVtbl -> GetData(This,pFirstPos,pLength,ppsz,pValue) ) - -#endif /* COBJMACROS */ - - -#endif /* C style interface */ - - - - -#endif /* __IRichChunk_INTERFACE_DEFINED__ */ - - -#ifndef __IInterval_INTERFACE_DEFINED__ -#define __IInterval_INTERFACE_DEFINED__ - -/* interface IInterval */ -/* [unique][uuid][object] */ - - -EXTERN_C const IID IID_IInterval; - -#if defined(__cplusplus) && !defined(CINTERFACE) - - MIDL_INTERFACE("6BF0A714-3C18-430b-8B5D-83B1C234D3DB") - IInterval : public IUnknown - { - public: - virtual HRESULT STDMETHODCALLTYPE GetLimits( - /* [out] */ __RPC__out INTERVAL_LIMIT_KIND *pilkLower, - /* [out] */ __RPC__out PROPVARIANT *ppropvarLower, - /* [out] */ __RPC__out INTERVAL_LIMIT_KIND *pilkUpper, - /* [out] */ __RPC__out PROPVARIANT *ppropvarUpper) = 0; - - }; - -#else /* C style interface */ - - typedef struct IIntervalVtbl - { - BEGIN_INTERFACE - - HRESULT ( STDMETHODCALLTYPE *QueryInterface )( - IInterval * This, - /* [in] */ __RPC__in REFIID riid, - /* [iid_is][out] */ - __RPC__deref_out void **ppvObject); - - ULONG ( STDMETHODCALLTYPE *AddRef )( - IInterval * This); - - ULONG ( STDMETHODCALLTYPE *Release )( - IInterval * This); - - HRESULT ( STDMETHODCALLTYPE *GetLimits )( - IInterval * This, - /* [out] */ __RPC__out INTERVAL_LIMIT_KIND *pilkLower, - /* [out] */ __RPC__out PROPVARIANT *ppropvarLower, - /* [out] */ __RPC__out INTERVAL_LIMIT_KIND *pilkUpper, - /* [out] */ __RPC__out PROPVARIANT *ppropvarUpper); - - END_INTERFACE - } IIntervalVtbl; - - interface IInterval - { - CONST_VTBL struct IIntervalVtbl *lpVtbl; - }; - - - -#ifdef COBJMACROS - - -#define IInterval_QueryInterface(This,riid,ppvObject) \ - ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) - -#define IInterval_AddRef(This) \ - ( (This)->lpVtbl -> AddRef(This) ) - -#define IInterval_Release(This) \ - ( (This)->lpVtbl -> Release(This) ) - - -#define IInterval_GetLimits(This,pilkLower,ppropvarLower,pilkUpper,ppropvarUpper) \ - ( (This)->lpVtbl -> GetLimits(This,pilkLower,ppropvarLower,pilkUpper,ppropvarUpper) ) - -#endif /* COBJMACROS */ - - -#endif /* C style interface */ - - - - -#endif /* __IInterval_INTERFACE_DEFINED__ */ - - -#ifndef __IMetaData_INTERFACE_DEFINED__ -#define __IMetaData_INTERFACE_DEFINED__ - -/* interface IMetaData */ -/* [unique][uuid][object][helpstring] */ - - -EXTERN_C const IID IID_IMetaData; - -#if defined(__cplusplus) && !defined(CINTERFACE) - - MIDL_INTERFACE("780102B0-C43B-4876-BC7B-5E9BA5C88794") - IMetaData : public IUnknown - { - public: - virtual /* [local] */ HRESULT STDMETHODCALLTYPE GetData( - /* [out] */ - __deref_opt_out LPWSTR *ppszKey, - /* [out] */ - __deref_opt_out LPWSTR *ppszValue) = 0; - - }; - -#else /* C style interface */ - - typedef struct IMetaDataVtbl - { - BEGIN_INTERFACE - - HRESULT ( STDMETHODCALLTYPE *QueryInterface )( - IMetaData * This, - /* [in] */ __RPC__in REFIID riid, - /* [iid_is][out] */ - __RPC__deref_out void **ppvObject); - - ULONG ( STDMETHODCALLTYPE *AddRef )( - IMetaData * This); - - ULONG ( STDMETHODCALLTYPE *Release )( - IMetaData * This); - - /* [local] */ HRESULT ( STDMETHODCALLTYPE *GetData )( - IMetaData * This, - /* [out] */ - __deref_opt_out LPWSTR *ppszKey, - /* [out] */ - __deref_opt_out LPWSTR *ppszValue); - - END_INTERFACE - } IMetaDataVtbl; - - interface IMetaData - { - CONST_VTBL struct IMetaDataVtbl *lpVtbl; - }; - - - -#ifdef COBJMACROS - - -#define IMetaData_QueryInterface(This,riid,ppvObject) \ - ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) - -#define IMetaData_AddRef(This) \ - ( (This)->lpVtbl -> AddRef(This) ) - -#define IMetaData_Release(This) \ - ( (This)->lpVtbl -> Release(This) ) - - -#define IMetaData_GetData(This,ppszKey,ppszValue) \ - ( (This)->lpVtbl -> GetData(This,ppszKey,ppszValue) ) - -#endif /* COBJMACROS */ - - -#endif /* C style interface */ - - - - -#endif /* __IMetaData_INTERFACE_DEFINED__ */ - - -/* interface __MIDL_itf_structuredquery_0000_0008 */ -/* [local] */ - - - - -extern RPC_IF_HANDLE __MIDL_itf_structuredquery_0000_0008_v0_0_c_ifspec; -extern RPC_IF_HANDLE __MIDL_itf_structuredquery_0000_0008_v0_0_s_ifspec; - -#ifndef __IEntity_INTERFACE_DEFINED__ -#define __IEntity_INTERFACE_DEFINED__ - -/* interface IEntity */ -/* [unique][object][uuid][helpstring] */ - - -EXTERN_C const IID IID_IEntity; - -#if defined(__cplusplus) && !defined(CINTERFACE) - - MIDL_INTERFACE("24264891-E80B-4fd3-B7CE-4FF2FAE8931F") - IEntity : public IUnknown - { - public: - virtual /* [local] */ HRESULT STDMETHODCALLTYPE Name( - /* [retval][out] */ - __deref_opt_out LPWSTR *ppszName) = 0; - - virtual HRESULT STDMETHODCALLTYPE Base( - /* [retval][out] */ __RPC__deref_out_opt IEntity **pBaseEntity) = 0; - - virtual HRESULT STDMETHODCALLTYPE Relationships( - /* [in] */ __RPC__in REFIID riid, - /* [iid_is][retval][out] */ __RPC__deref_out_opt void **pRelationships) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetRelationship( - /* [in] */ __RPC__in LPCWSTR pszRelationName, - /* [retval][out] */ __RPC__deref_out_opt IRelationship **pRelationship) = 0; - - virtual HRESULT STDMETHODCALLTYPE MetaData( - /* [in] */ __RPC__in REFIID riid, - /* [iid_is][retval][out] */ __RPC__deref_out_opt void **pMetaData) = 0; - - virtual HRESULT STDMETHODCALLTYPE NamedEntities( - /* [in] */ __RPC__in REFIID riid, - /* [iid_is][retval][out] */ __RPC__deref_out_opt void **pNamedEntities) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetNamedEntity( - /* [in] */ __RPC__in LPCWSTR pszValue, - /* [retval][out] */ __RPC__deref_out_opt INamedEntity **ppNamedEntity) = 0; - - virtual /* [local] */ HRESULT STDMETHODCALLTYPE DefaultPhrase( - /* [retval][out] */ - __deref_opt_out LPWSTR *ppszPhrase) = 0; - - }; - -#else /* C style interface */ - - typedef struct IEntityVtbl - { - BEGIN_INTERFACE - - HRESULT ( STDMETHODCALLTYPE *QueryInterface )( - IEntity * This, - /* [in] */ __RPC__in REFIID riid, - /* [iid_is][out] */ - __RPC__deref_out void **ppvObject); - - ULONG ( STDMETHODCALLTYPE *AddRef )( - IEntity * This); - - ULONG ( STDMETHODCALLTYPE *Release )( - IEntity * This); - - /* [local] */ HRESULT ( STDMETHODCALLTYPE *Name )( - IEntity * This, - /* [retval][out] */ - __deref_opt_out LPWSTR *ppszName); - - HRESULT ( STDMETHODCALLTYPE *Base )( - IEntity * This, - /* [retval][out] */ __RPC__deref_out_opt IEntity **pBaseEntity); - - HRESULT ( STDMETHODCALLTYPE *Relationships )( - IEntity * This, - /* [in] */ __RPC__in REFIID riid, - /* [iid_is][retval][out] */ __RPC__deref_out_opt void **pRelationships); - - HRESULT ( STDMETHODCALLTYPE *GetRelationship )( - IEntity * This, - /* [in] */ __RPC__in LPCWSTR pszRelationName, - /* [retval][out] */ __RPC__deref_out_opt IRelationship **pRelationship); - - HRESULT ( STDMETHODCALLTYPE *MetaData )( - IEntity * This, - /* [in] */ __RPC__in REFIID riid, - /* [iid_is][retval][out] */ __RPC__deref_out_opt void **pMetaData); - - HRESULT ( STDMETHODCALLTYPE *NamedEntities )( - IEntity * This, - /* [in] */ __RPC__in REFIID riid, - /* [iid_is][retval][out] */ __RPC__deref_out_opt void **pNamedEntities); - - HRESULT ( STDMETHODCALLTYPE *GetNamedEntity )( - IEntity * This, - /* [in] */ __RPC__in LPCWSTR pszValue, - /* [retval][out] */ __RPC__deref_out_opt INamedEntity **ppNamedEntity); - - /* [local] */ HRESULT ( STDMETHODCALLTYPE *DefaultPhrase )( - IEntity * This, - /* [retval][out] */ - __deref_opt_out LPWSTR *ppszPhrase); - - END_INTERFACE - } IEntityVtbl; - - interface IEntity - { - CONST_VTBL struct IEntityVtbl *lpVtbl; - }; - - - -#ifdef COBJMACROS - - -#define IEntity_QueryInterface(This,riid,ppvObject) \ - ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) - -#define IEntity_AddRef(This) \ - ( (This)->lpVtbl -> AddRef(This) ) - -#define IEntity_Release(This) \ - ( (This)->lpVtbl -> Release(This) ) - - -#define IEntity_Name(This,ppszName) \ - ( (This)->lpVtbl -> Name(This,ppszName) ) - -#define IEntity_Base(This,pBaseEntity) \ - ( (This)->lpVtbl -> Base(This,pBaseEntity) ) - -#define IEntity_Relationships(This,riid,pRelationships) \ - ( (This)->lpVtbl -> Relationships(This,riid,pRelationships) ) - -#define IEntity_GetRelationship(This,pszRelationName,pRelationship) \ - ( (This)->lpVtbl -> GetRelationship(This,pszRelationName,pRelationship) ) - -#define IEntity_MetaData(This,riid,pMetaData) \ - ( (This)->lpVtbl -> MetaData(This,riid,pMetaData) ) - -#define IEntity_NamedEntities(This,riid,pNamedEntities) \ - ( (This)->lpVtbl -> NamedEntities(This,riid,pNamedEntities) ) - -#define IEntity_GetNamedEntity(This,pszValue,ppNamedEntity) \ - ( (This)->lpVtbl -> GetNamedEntity(This,pszValue,ppNamedEntity) ) - -#define IEntity_DefaultPhrase(This,ppszPhrase) \ - ( (This)->lpVtbl -> DefaultPhrase(This,ppszPhrase) ) - -#endif /* COBJMACROS */ - - -#endif /* C style interface */ - - - - -#endif /* __IEntity_INTERFACE_DEFINED__ */ - - -#ifndef __IRelationship_INTERFACE_DEFINED__ -#define __IRelationship_INTERFACE_DEFINED__ - -/* interface IRelationship */ -/* [unique][object][uuid][helpstring] */ - - -EXTERN_C const IID IID_IRelationship; - -#if defined(__cplusplus) && !defined(CINTERFACE) - - MIDL_INTERFACE("2769280B-5108-498c-9C7F-A51239B63147") - IRelationship : public IUnknown - { - public: - virtual /* [local] */ HRESULT STDMETHODCALLTYPE Name( - /* [retval][out] */ - __deref_opt_out LPWSTR *ppszName) = 0; - - virtual HRESULT STDMETHODCALLTYPE IsReal( - /* [retval][out] */ __RPC__out BOOL *pIsReal) = 0; - - virtual HRESULT STDMETHODCALLTYPE Destination( - /* [retval][out] */ __RPC__deref_out_opt IEntity **pDestinationEntity) = 0; - - virtual HRESULT STDMETHODCALLTYPE MetaData( - /* [in] */ __RPC__in REFIID riid, - /* [iid_is][retval][out] */ __RPC__deref_out_opt void **pMetaData) = 0; - - virtual /* [local] */ HRESULT STDMETHODCALLTYPE DefaultPhrase( - /* [retval][out] */ - __deref_opt_out LPWSTR *ppszPhrase) = 0; - - }; - -#else /* C style interface */ - - typedef struct IRelationshipVtbl - { - BEGIN_INTERFACE - - HRESULT ( STDMETHODCALLTYPE *QueryInterface )( - IRelationship * This, - /* [in] */ __RPC__in REFIID riid, - /* [iid_is][out] */ - __RPC__deref_out void **ppvObject); - - ULONG ( STDMETHODCALLTYPE *AddRef )( - IRelationship * This); - - ULONG ( STDMETHODCALLTYPE *Release )( - IRelationship * This); - - /* [local] */ HRESULT ( STDMETHODCALLTYPE *Name )( - IRelationship * This, - /* [retval][out] */ - __deref_opt_out LPWSTR *ppszName); - - HRESULT ( STDMETHODCALLTYPE *IsReal )( - IRelationship * This, - /* [retval][out] */ __RPC__out BOOL *pIsReal); - - HRESULT ( STDMETHODCALLTYPE *Destination )( - IRelationship * This, - /* [retval][out] */ __RPC__deref_out_opt IEntity **pDestinationEntity); - - HRESULT ( STDMETHODCALLTYPE *MetaData )( - IRelationship * This, - /* [in] */ __RPC__in REFIID riid, - /* [iid_is][retval][out] */ __RPC__deref_out_opt void **pMetaData); - - /* [local] */ HRESULT ( STDMETHODCALLTYPE *DefaultPhrase )( - IRelationship * This, - /* [retval][out] */ - __deref_opt_out LPWSTR *ppszPhrase); - - END_INTERFACE - } IRelationshipVtbl; - - interface IRelationship - { - CONST_VTBL struct IRelationshipVtbl *lpVtbl; - }; - - - -#ifdef COBJMACROS - - -#define IRelationship_QueryInterface(This,riid,ppvObject) \ - ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) - -#define IRelationship_AddRef(This) \ - ( (This)->lpVtbl -> AddRef(This) ) - -#define IRelationship_Release(This) \ - ( (This)->lpVtbl -> Release(This) ) - - -#define IRelationship_Name(This,ppszName) \ - ( (This)->lpVtbl -> Name(This,ppszName) ) - -#define IRelationship_IsReal(This,pIsReal) \ - ( (This)->lpVtbl -> IsReal(This,pIsReal) ) - -#define IRelationship_Destination(This,pDestinationEntity) \ - ( (This)->lpVtbl -> Destination(This,pDestinationEntity) ) - -#define IRelationship_MetaData(This,riid,pMetaData) \ - ( (This)->lpVtbl -> MetaData(This,riid,pMetaData) ) - -#define IRelationship_DefaultPhrase(This,ppszPhrase) \ - ( (This)->lpVtbl -> DefaultPhrase(This,ppszPhrase) ) - -#endif /* COBJMACROS */ - - -#endif /* C style interface */ - - - - -#endif /* __IRelationship_INTERFACE_DEFINED__ */ - - -#ifndef __INamedEntity_INTERFACE_DEFINED__ -#define __INamedEntity_INTERFACE_DEFINED__ - -/* interface INamedEntity */ -/* [unique][uuid][object][helpstring] */ - - -EXTERN_C const IID IID_INamedEntity; - -#if defined(__cplusplus) && !defined(CINTERFACE) - - MIDL_INTERFACE("ABDBD0B1-7D54-49fb-AB5C-BFF4130004CD") - INamedEntity : public IUnknown - { - public: - virtual HRESULT STDMETHODCALLTYPE GetValue( - /* [retval][out] */ __RPC__deref_out_opt LPWSTR *ppszValue) = 0; - - virtual /* [local] */ HRESULT STDMETHODCALLTYPE DefaultPhrase( - /* [retval][out] */ - __deref_opt_out LPWSTR *ppszPhrase) = 0; - - }; - -#else /* C style interface */ - - typedef struct INamedEntityVtbl - { - BEGIN_INTERFACE - - HRESULT ( STDMETHODCALLTYPE *QueryInterface )( - INamedEntity * This, - /* [in] */ __RPC__in REFIID riid, - /* [iid_is][out] */ - __RPC__deref_out void **ppvObject); - - ULONG ( STDMETHODCALLTYPE *AddRef )( - INamedEntity * This); - - ULONG ( STDMETHODCALLTYPE *Release )( - INamedEntity * This); - - HRESULT ( STDMETHODCALLTYPE *GetValue )( - INamedEntity * This, - /* [retval][out] */ __RPC__deref_out_opt LPWSTR *ppszValue); - - /* [local] */ HRESULT ( STDMETHODCALLTYPE *DefaultPhrase )( - INamedEntity * This, - /* [retval][out] */ - __deref_opt_out LPWSTR *ppszPhrase); - - END_INTERFACE - } INamedEntityVtbl; - - interface INamedEntity - { - CONST_VTBL struct INamedEntityVtbl *lpVtbl; - }; - - - -#ifdef COBJMACROS - - -#define INamedEntity_QueryInterface(This,riid,ppvObject) \ - ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) - -#define INamedEntity_AddRef(This) \ - ( (This)->lpVtbl -> AddRef(This) ) - -#define INamedEntity_Release(This) \ - ( (This)->lpVtbl -> Release(This) ) - - -#define INamedEntity_GetValue(This,ppszValue) \ - ( (This)->lpVtbl -> GetValue(This,ppszValue) ) - -#define INamedEntity_DefaultPhrase(This,ppszPhrase) \ - ( (This)->lpVtbl -> DefaultPhrase(This,ppszPhrase) ) - -#endif /* COBJMACROS */ - - -#endif /* C style interface */ - - - - -#endif /* __INamedEntity_INTERFACE_DEFINED__ */ - - -#ifndef __ISchemaProvider_INTERFACE_DEFINED__ -#define __ISchemaProvider_INTERFACE_DEFINED__ - -/* interface ISchemaProvider */ -/* [unique][object][uuid][helpstring] */ - - -EXTERN_C const IID IID_ISchemaProvider; - -#if defined(__cplusplus) && !defined(CINTERFACE) - - MIDL_INTERFACE("8CF89BCB-394C-49b2-AE28-A59DD4ED7F68") - ISchemaProvider : public IUnknown - { - public: - virtual HRESULT STDMETHODCALLTYPE Entities( - /* [in] */ __RPC__in REFIID riid, - /* [iid_is][retval][out] */ __RPC__deref_out_opt void **pEntities) = 0; - - virtual HRESULT STDMETHODCALLTYPE RootEntity( - /* [retval][out] */ __RPC__deref_out_opt IEntity **pRootEntity) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetEntity( - /* [in] */ __RPC__in LPCWSTR pszEntityName, - /* [retval][out] */ __RPC__deref_out_opt IEntity **pEntity) = 0; - - virtual HRESULT STDMETHODCALLTYPE MetaData( - /* [in] */ __RPC__in REFIID riid, - /* [iid_is][retval][out] */ __RPC__deref_out_opt void **pMetaData) = 0; - - virtual HRESULT STDMETHODCALLTYPE Localize( - /* [in] */ LCID lcid, - /* [in] */ __RPC__in_opt ISchemaLocalizerSupport *pSchemaLocalizerSupport) = 0; - - virtual HRESULT STDMETHODCALLTYPE SaveBinary( - /* [in] */ __RPC__in LPCWSTR pszSchemaBinaryPath) = 0; - - virtual HRESULT STDMETHODCALLTYPE LookupAuthoredNamedEntity( - /* [in] */ __RPC__in_opt IEntity *pEntity, - /* [in] */ __RPC__in LPCWSTR pszInputString, - /* [in] */ __RPC__in_opt ITokenCollection *pTokenCollection, - /* [in] */ ULONG cTokensBegin, - /* [out] */ __RPC__out ULONG *pcTokensLength, - /* [out] */ __RPC__deref_out_opt LPWSTR *ppszValue) = 0; - - }; - -#else /* C style interface */ - - typedef struct ISchemaProviderVtbl - { - BEGIN_INTERFACE - - HRESULT ( STDMETHODCALLTYPE *QueryInterface )( - ISchemaProvider * This, - /* [in] */ __RPC__in REFIID riid, - /* [iid_is][out] */ - __RPC__deref_out void **ppvObject); - - ULONG ( STDMETHODCALLTYPE *AddRef )( - ISchemaProvider * This); - - ULONG ( STDMETHODCALLTYPE *Release )( - ISchemaProvider * This); - - HRESULT ( STDMETHODCALLTYPE *Entities )( - ISchemaProvider * This, - /* [in] */ __RPC__in REFIID riid, - /* [iid_is][retval][out] */ __RPC__deref_out_opt void **pEntities); - - HRESULT ( STDMETHODCALLTYPE *RootEntity )( - ISchemaProvider * This, - /* [retval][out] */ __RPC__deref_out_opt IEntity **pRootEntity); - - HRESULT ( STDMETHODCALLTYPE *GetEntity )( - ISchemaProvider * This, - /* [in] */ __RPC__in LPCWSTR pszEntityName, - /* [retval][out] */ __RPC__deref_out_opt IEntity **pEntity); - - HRESULT ( STDMETHODCALLTYPE *MetaData )( - ISchemaProvider * This, - /* [in] */ __RPC__in REFIID riid, - /* [iid_is][retval][out] */ __RPC__deref_out_opt void **pMetaData); - - HRESULT ( STDMETHODCALLTYPE *Localize )( - ISchemaProvider * This, - /* [in] */ LCID lcid, - /* [in] */ __RPC__in_opt ISchemaLocalizerSupport *pSchemaLocalizerSupport); - - HRESULT ( STDMETHODCALLTYPE *SaveBinary )( - ISchemaProvider * This, - /* [in] */ __RPC__in LPCWSTR pszSchemaBinaryPath); - - HRESULT ( STDMETHODCALLTYPE *LookupAuthoredNamedEntity )( - ISchemaProvider * This, - /* [in] */ __RPC__in_opt IEntity *pEntity, - /* [in] */ __RPC__in LPCWSTR pszInputString, - /* [in] */ __RPC__in_opt ITokenCollection *pTokenCollection, - /* [in] */ ULONG cTokensBegin, - /* [out] */ __RPC__out ULONG *pcTokensLength, - /* [out] */ __RPC__deref_out_opt LPWSTR *ppszValue); - - END_INTERFACE - } ISchemaProviderVtbl; - - interface ISchemaProvider - { - CONST_VTBL struct ISchemaProviderVtbl *lpVtbl; - }; - - - -#ifdef COBJMACROS - - -#define ISchemaProvider_QueryInterface(This,riid,ppvObject) \ - ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) - -#define ISchemaProvider_AddRef(This) \ - ( (This)->lpVtbl -> AddRef(This) ) - -#define ISchemaProvider_Release(This) \ - ( (This)->lpVtbl -> Release(This) ) - - -#define ISchemaProvider_Entities(This,riid,pEntities) \ - ( (This)->lpVtbl -> Entities(This,riid,pEntities) ) - -#define ISchemaProvider_RootEntity(This,pRootEntity) \ - ( (This)->lpVtbl -> RootEntity(This,pRootEntity) ) - -#define ISchemaProvider_GetEntity(This,pszEntityName,pEntity) \ - ( (This)->lpVtbl -> GetEntity(This,pszEntityName,pEntity) ) - -#define ISchemaProvider_MetaData(This,riid,pMetaData) \ - ( (This)->lpVtbl -> MetaData(This,riid,pMetaData) ) - -#define ISchemaProvider_Localize(This,lcid,pSchemaLocalizerSupport) \ - ( (This)->lpVtbl -> Localize(This,lcid,pSchemaLocalizerSupport) ) - -#define ISchemaProvider_SaveBinary(This,pszSchemaBinaryPath) \ - ( (This)->lpVtbl -> SaveBinary(This,pszSchemaBinaryPath) ) - -#define ISchemaProvider_LookupAuthoredNamedEntity(This,pEntity,pszInputString,pTokenCollection,cTokensBegin,pcTokensLength,ppszValue) \ - ( (This)->lpVtbl -> LookupAuthoredNamedEntity(This,pEntity,pszInputString,pTokenCollection,cTokensBegin,pcTokensLength,ppszValue) ) - -#endif /* COBJMACROS */ - - -#endif /* C style interface */ - - - - -#endif /* __ISchemaProvider_INTERFACE_DEFINED__ */ - - -#ifndef __ITokenCollection_INTERFACE_DEFINED__ -#define __ITokenCollection_INTERFACE_DEFINED__ - -/* interface ITokenCollection */ -/* [unique][object][uuid][helpstring] */ - - -EXTERN_C const IID IID_ITokenCollection; - -#if defined(__cplusplus) && !defined(CINTERFACE) - - MIDL_INTERFACE("22D8B4F2-F577-4adb-A335-C2AE88416FAB") - ITokenCollection : public IUnknown - { - public: - virtual HRESULT STDMETHODCALLTYPE NumberOfTokens( - __RPC__in ULONG *pCount) = 0; - - virtual /* [local] */ HRESULT STDMETHODCALLTYPE GetToken( - /* [in] */ ULONG i, - /* [out] */ - __out_opt ULONG *pBegin, - /* [out] */ - __out_opt ULONG *pLength, - /* [out] */ - __deref_opt_out LPWSTR *ppsz) = 0; - - }; - -#else /* C style interface */ - - typedef struct ITokenCollectionVtbl - { - BEGIN_INTERFACE - - HRESULT ( STDMETHODCALLTYPE *QueryInterface )( - ITokenCollection * This, - /* [in] */ __RPC__in REFIID riid, - /* [iid_is][out] */ - __RPC__deref_out void **ppvObject); - - ULONG ( STDMETHODCALLTYPE *AddRef )( - ITokenCollection * This); - - ULONG ( STDMETHODCALLTYPE *Release )( - ITokenCollection * This); - - HRESULT ( STDMETHODCALLTYPE *NumberOfTokens )( - ITokenCollection * This, - __RPC__in ULONG *pCount); - - /* [local] */ HRESULT ( STDMETHODCALLTYPE *GetToken )( - ITokenCollection * This, - /* [in] */ ULONG i, - /* [out] */ - __out_opt ULONG *pBegin, - /* [out] */ - __out_opt ULONG *pLength, - /* [out] */ - __deref_opt_out LPWSTR *ppsz); - - END_INTERFACE - } ITokenCollectionVtbl; - - interface ITokenCollection - { - CONST_VTBL struct ITokenCollectionVtbl *lpVtbl; - }; - - - -#ifdef COBJMACROS - - -#define ITokenCollection_QueryInterface(This,riid,ppvObject) \ - ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) - -#define ITokenCollection_AddRef(This) \ - ( (This)->lpVtbl -> AddRef(This) ) - -#define ITokenCollection_Release(This) \ - ( (This)->lpVtbl -> Release(This) ) - - -#define ITokenCollection_NumberOfTokens(This,pCount) \ - ( (This)->lpVtbl -> NumberOfTokens(This,pCount) ) - -#define ITokenCollection_GetToken(This,i,pBegin,pLength,ppsz) \ - ( (This)->lpVtbl -> GetToken(This,i,pBegin,pLength,ppsz) ) - -#endif /* COBJMACROS */ - - -#endif /* C style interface */ - - - - -#endif /* __ITokenCollection_INTERFACE_DEFINED__ */ - - -/* interface __MIDL_itf_structuredquery_0000_0013 */ -/* [local] */ - -typedef /* [public][public][v1_enum] */ -enum __MIDL___MIDL_itf_structuredquery_0000_0013_0001 - { NEC_LOW = 0, - NEC_MEDIUM = ( NEC_LOW + 1 ) , - NEC_HIGH = ( NEC_MEDIUM + 1 ) - } NAMED_ENTITY_CERTAINTY; - - - -extern RPC_IF_HANDLE __MIDL_itf_structuredquery_0000_0013_v0_0_c_ifspec; -extern RPC_IF_HANDLE __MIDL_itf_structuredquery_0000_0013_v0_0_s_ifspec; - -#ifndef __INamedEntityCollector_INTERFACE_DEFINED__ -#define __INamedEntityCollector_INTERFACE_DEFINED__ - -/* interface INamedEntityCollector */ -/* [unique][object][uuid][helpstring] */ - - -EXTERN_C const IID IID_INamedEntityCollector; - -#if defined(__cplusplus) && !defined(CINTERFACE) - - MIDL_INTERFACE("AF2440F6-8AFC-47d0-9A7F-396A0ACFB43D") - INamedEntityCollector : public IUnknown - { - public: - virtual HRESULT STDMETHODCALLTYPE Add( - /* [in] */ ULONG beginSpan, - /* [in] */ ULONG endSpan, - /* [in] */ ULONG beginActual, - /* [in] */ ULONG endActual, - /* [in] */ __RPC__in_opt IEntity *pType, - /* [in] */ __RPC__in LPCWSTR pszValue, - /* [in] */ NAMED_ENTITY_CERTAINTY certainty) = 0; - - }; - -#else /* C style interface */ - - typedef struct INamedEntityCollectorVtbl - { - BEGIN_INTERFACE - - HRESULT ( STDMETHODCALLTYPE *QueryInterface )( - INamedEntityCollector * This, - /* [in] */ __RPC__in REFIID riid, - /* [iid_is][out] */ - __RPC__deref_out void **ppvObject); - - ULONG ( STDMETHODCALLTYPE *AddRef )( - INamedEntityCollector * This); - - ULONG ( STDMETHODCALLTYPE *Release )( - INamedEntityCollector * This); - - HRESULT ( STDMETHODCALLTYPE *Add )( - INamedEntityCollector * This, - /* [in] */ ULONG beginSpan, - /* [in] */ ULONG endSpan, - /* [in] */ ULONG beginActual, - /* [in] */ ULONG endActual, - /* [in] */ __RPC__in_opt IEntity *pType, - /* [in] */ __RPC__in LPCWSTR pszValue, - /* [in] */ NAMED_ENTITY_CERTAINTY certainty); - - END_INTERFACE - } INamedEntityCollectorVtbl; - - interface INamedEntityCollector - { - CONST_VTBL struct INamedEntityCollectorVtbl *lpVtbl; - }; - - - -#ifdef COBJMACROS - - -#define INamedEntityCollector_QueryInterface(This,riid,ppvObject) \ - ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) - -#define INamedEntityCollector_AddRef(This) \ - ( (This)->lpVtbl -> AddRef(This) ) - -#define INamedEntityCollector_Release(This) \ - ( (This)->lpVtbl -> Release(This) ) - - -#define INamedEntityCollector_Add(This,beginSpan,endSpan,beginActual,endActual,pType,pszValue,certainty) \ - ( (This)->lpVtbl -> Add(This,beginSpan,endSpan,beginActual,endActual,pType,pszValue,certainty) ) - -#endif /* COBJMACROS */ - - -#endif /* C style interface */ - - - - -#endif /* __INamedEntityCollector_INTERFACE_DEFINED__ */ - - -#ifndef __ISchemaLocalizerSupport_INTERFACE_DEFINED__ -#define __ISchemaLocalizerSupport_INTERFACE_DEFINED__ - -/* interface ISchemaLocalizerSupport */ -/* [unique][object][uuid] */ - - -EXTERN_C const IID IID_ISchemaLocalizerSupport; - -#if defined(__cplusplus) && !defined(CINTERFACE) - - MIDL_INTERFACE("CA3FDCA2-BFBE-4eed-90D7-0CAEF0A1BDA1") - ISchemaLocalizerSupport : public IUnknown - { - public: - virtual HRESULT STDMETHODCALLTYPE Localize( - /* [in] */ __RPC__in LPCWSTR pszGlobalString, - /* [retval][out] */ __RPC__deref_out_opt LPWSTR *ppszLocalString) = 0; - - }; - -#else /* C style interface */ - - typedef struct ISchemaLocalizerSupportVtbl - { - BEGIN_INTERFACE - - HRESULT ( STDMETHODCALLTYPE *QueryInterface )( - ISchemaLocalizerSupport * This, - /* [in] */ __RPC__in REFIID riid, - /* [iid_is][out] */ - __RPC__deref_out void **ppvObject); - - ULONG ( STDMETHODCALLTYPE *AddRef )( - ISchemaLocalizerSupport * This); - - ULONG ( STDMETHODCALLTYPE *Release )( - ISchemaLocalizerSupport * This); - - HRESULT ( STDMETHODCALLTYPE *Localize )( - ISchemaLocalizerSupport * This, - /* [in] */ __RPC__in LPCWSTR pszGlobalString, - /* [retval][out] */ __RPC__deref_out_opt LPWSTR *ppszLocalString); - - END_INTERFACE - } ISchemaLocalizerSupportVtbl; - - interface ISchemaLocalizerSupport - { - CONST_VTBL struct ISchemaLocalizerSupportVtbl *lpVtbl; - }; - - - -#ifdef COBJMACROS - - -#define ISchemaLocalizerSupport_QueryInterface(This,riid,ppvObject) \ - ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) - -#define ISchemaLocalizerSupport_AddRef(This) \ - ( (This)->lpVtbl -> AddRef(This) ) - -#define ISchemaLocalizerSupport_Release(This) \ - ( (This)->lpVtbl -> Release(This) ) - - -#define ISchemaLocalizerSupport_Localize(This,pszGlobalString,ppszLocalString) \ - ( (This)->lpVtbl -> Localize(This,pszGlobalString,ppszLocalString) ) - -#endif /* COBJMACROS */ - - -#endif /* C style interface */ - - - - -#endif /* __ISchemaLocalizerSupport_INTERFACE_DEFINED__ */ - - -#ifndef __IQueryParserManager_INTERFACE_DEFINED__ -#define __IQueryParserManager_INTERFACE_DEFINED__ - -/* interface IQueryParserManager */ -/* [unique][object][uuid] */ - - -EXTERN_C const IID IID_IQueryParserManager; - -#if defined(__cplusplus) && !defined(CINTERFACE) - - MIDL_INTERFACE("A879E3C4-AF77-44fb-8F37-EBD1487CF920") - IQueryParserManager : public IUnknown - { - public: - virtual HRESULT STDMETHODCALLTYPE CreateLoadedParser( - /* [in] */ __RPC__in LPCWSTR pszCatalog, - /* [in] */ LANGID langidForKeywords, - /* [in] */ __RPC__in REFIID riid, - /* [iid_is][retval][out] */ __RPC__deref_out_opt void **ppQueryParser) = 0; - - virtual HRESULT STDMETHODCALLTYPE InitializeOptions( - /* [in] */ BOOL fUnderstandNQS, - /* [in] */ BOOL fAutoWildCard, - /* [in] */ __RPC__in_opt IQueryParser *pQueryParser) = 0; - - virtual HRESULT STDMETHODCALLTYPE SetOption( - /* [in] */ QUERY_PARSER_MANAGER_OPTION option, - /* [in] */ __RPC__in const PROPVARIANT *pOptionValue) = 0; - - }; - -#else /* C style interface */ - - typedef struct IQueryParserManagerVtbl - { - BEGIN_INTERFACE - - HRESULT ( STDMETHODCALLTYPE *QueryInterface )( - IQueryParserManager * This, - /* [in] */ __RPC__in REFIID riid, - /* [iid_is][out] */ - __RPC__deref_out void **ppvObject); - - ULONG ( STDMETHODCALLTYPE *AddRef )( - IQueryParserManager * This); - - ULONG ( STDMETHODCALLTYPE *Release )( - IQueryParserManager * This); - - HRESULT ( STDMETHODCALLTYPE *CreateLoadedParser )( - IQueryParserManager * This, - /* [in] */ __RPC__in LPCWSTR pszCatalog, - /* [in] */ LANGID langidForKeywords, - /* [in] */ __RPC__in REFIID riid, - /* [iid_is][retval][out] */ __RPC__deref_out_opt void **ppQueryParser); - - HRESULT ( STDMETHODCALLTYPE *InitializeOptions )( - IQueryParserManager * This, - /* [in] */ BOOL fUnderstandNQS, - /* [in] */ BOOL fAutoWildCard, - /* [in] */ __RPC__in_opt IQueryParser *pQueryParser); - - HRESULT ( STDMETHODCALLTYPE *SetOption )( - IQueryParserManager * This, - /* [in] */ QUERY_PARSER_MANAGER_OPTION option, - /* [in] */ __RPC__in const PROPVARIANT *pOptionValue); - - END_INTERFACE - } IQueryParserManagerVtbl; - - interface IQueryParserManager - { - CONST_VTBL struct IQueryParserManagerVtbl *lpVtbl; - }; - - - -#ifdef COBJMACROS - - -#define IQueryParserManager_QueryInterface(This,riid,ppvObject) \ - ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) - -#define IQueryParserManager_AddRef(This) \ - ( (This)->lpVtbl -> AddRef(This) ) - -#define IQueryParserManager_Release(This) \ - ( (This)->lpVtbl -> Release(This) ) - - -#define IQueryParserManager_CreateLoadedParser(This,pszCatalog,langidForKeywords,riid,ppQueryParser) \ - ( (This)->lpVtbl -> CreateLoadedParser(This,pszCatalog,langidForKeywords,riid,ppQueryParser) ) - -#define IQueryParserManager_InitializeOptions(This,fUnderstandNQS,fAutoWildCard,pQueryParser) \ - ( (This)->lpVtbl -> InitializeOptions(This,fUnderstandNQS,fAutoWildCard,pQueryParser) ) - -#define IQueryParserManager_SetOption(This,option,pOptionValue) \ - ( (This)->lpVtbl -> SetOption(This,option,pOptionValue) ) - -#endif /* COBJMACROS */ - - -#endif /* C style interface */ - - - - -#endif /* __IQueryParserManager_INTERFACE_DEFINED__ */ - - - -#ifndef __StructuredQuery1_LIBRARY_DEFINED__ -#define __StructuredQuery1_LIBRARY_DEFINED__ - -/* library StructuredQuery1 */ -/* [version][uuid] */ - - -EXTERN_C const IID LIBID_StructuredQuery1; - -EXTERN_C const CLSID CLSID_QueryParser; - -#ifdef __cplusplus - -class DECLSPEC_UUID("B72F8FD8-0FAB-4dd9-BDBF-245A6CE1485B") -QueryParser; -#endif - -EXTERN_C const CLSID CLSID_NegationCondition; - -#ifdef __cplusplus - -class DECLSPEC_UUID("8DE9C74C-605A-4acd-BEE3-2B222AA2D23D") -NegationCondition; -#endif - -EXTERN_C const CLSID CLSID_CompoundCondition; - -#ifdef __cplusplus - -class DECLSPEC_UUID("116F8D13-101E-4fa5-84D4-FF8279381935") -CompoundCondition; -#endif - -EXTERN_C const CLSID CLSID_LeafCondition; - -#ifdef __cplusplus - -class DECLSPEC_UUID("52F15C89-5A17-48e1-BBCD-46A3F89C7CC2") -LeafCondition; -#endif - -EXTERN_C const CLSID CLSID_ConditionFactory; - -#ifdef __cplusplus - -class DECLSPEC_UUID("E03E85B0-7BE3-4000-BA98-6C13DE9FA486") -ConditionFactory; -#endif - -EXTERN_C const CLSID CLSID_Interval; - -#ifdef __cplusplus - -class DECLSPEC_UUID("D957171F-4BF9-4de2-BCD5-C70A7CA55836") -Interval; -#endif - -EXTERN_C const CLSID CLSID_QueryParserManager; - -#ifdef __cplusplus - -class DECLSPEC_UUID("5088B39A-29B4-4d9d-8245-4EE289222F66") -QueryParserManager; -#endif -#endif /* __StructuredQuery1_LIBRARY_DEFINED__ */ - -/* Additional Prototypes for ALL interfaces */ - -unsigned long __RPC_USER BSTR_UserSize( unsigned long *, unsigned long , BSTR * ); -unsigned char * __RPC_USER BSTR_UserMarshal( unsigned long *, unsigned char *, BSTR * ); -unsigned char * __RPC_USER BSTR_UserUnmarshal(unsigned long *, unsigned char *, BSTR * ); -void __RPC_USER BSTR_UserFree( unsigned long *, BSTR * ); - -unsigned long __RPC_USER LPSAFEARRAY_UserSize( unsigned long *, unsigned long , LPSAFEARRAY * ); -unsigned char * __RPC_USER LPSAFEARRAY_UserMarshal( unsigned long *, unsigned char *, LPSAFEARRAY * ); -unsigned char * __RPC_USER LPSAFEARRAY_UserUnmarshal(unsigned long *, unsigned char *, LPSAFEARRAY * ); -void __RPC_USER LPSAFEARRAY_UserFree( unsigned long *, LPSAFEARRAY * ); - -/* end of Additional Prototypes */ - -#ifdef __cplusplus -} -#endif - -#endif - - - diff --git a/portaudio/src/hostapi/wasapi/mingw-include/winapifamily.h b/portaudio/src/hostapi/wasapi/mingw-include/winapifamily.h deleted file mode 100644 index 388d5f0..0000000 --- a/portaudio/src/hostapi/wasapi/mingw-include/winapifamily.h +++ /dev/null @@ -1,24 +0,0 @@ -/** - * This file is part of the mingw-w64 runtime package. - * No warranty is given; refer to the file DISCLAIMER within this package. - */ - -#ifndef _INC_WINAPIFAMILY -#define _INC_WINAPIFAMILY - -#define WINAPI_PARTITION_DESKTOP 0x1 -#define WINAPI_PARTITION_APP 0x2 - -#define WINAPI_FAMILY_APP WINAPI_PARTITION_APP -#define WINAPI_FAMILY_DESKTOP_APP (WINAPI_PARTITION_DESKTOP \ - | WINAPI_PARTITION_APP) - -/* WINAPI_FAMILY can be either desktop + App, or App. */ -#ifndef WINAPI_FAMILY -#define WINAPI_FAMILY WINAPI_FAMILY_DESKTOP_APP -#endif - -#define WINAPI_FAMILY_PARTITION(v) ((WINAPI_FAMILY & v) == v) -#define WINAPI_FAMILY_ONE_PARTITION(vset, v) ((WINAPI_FAMILY & vset) == v) - -#endif diff --git a/portaudio/src/hostapi/wasapi/pa_win_wasapi.c b/portaudio/src/hostapi/wasapi/pa_win_wasapi.c deleted file mode 100644 index c76f302..0000000 --- a/portaudio/src/hostapi/wasapi/pa_win_wasapi.c +++ /dev/null @@ -1,6534 +0,0 @@ -/* - * Portable Audio I/O Library WASAPI implementation - * Copyright (c) 2006-2010 David Viens - * Copyright (c) 2010-2019 Dmitry Kostjuchenko - * - * Based on the Open Source API proposed by Ross Bencina - * Copyright (c) 1999-2019 Ross Bencina, Phil Burk - * - * Permission is hereby granted, free of charge, to any person obtaining - * a copy of this software and associated documentation files - * (the "Software"), to deal in the Software without restriction, - * including without limitation the rights to use, copy, modify, merge, - * publish, distribute, sublicense, and/or sell copies of the Software, - * and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. - * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR - * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF - * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION - * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -/* - * The text above constitutes the entire PortAudio license; however, - * the PortAudio community also makes the following non-binding requests: - * - * Any person wishing to distribute modifications to the Software is - * requested to send the modifications to the original developer so that - * they can be incorporated into the canonical version. It is also - * requested that these non-binding requests be included along with the - * license above. - */ - -/** @file - @ingroup hostapi_src - @brief WASAPI implementation of support for a host API. - @note pa_wasapi currently requires minimum VC 2005, and the latest Vista SDK -*/ - -#include <windows.h> -#include <stdio.h> -#include <process.h> -#include <assert.h> - -// Max device count (if defined) causes max constant device count in the device list that -// enables PaWasapi_UpdateDeviceList() API and makes it possible to update WASAPI list dynamically -#ifndef PA_WASAPI_MAX_CONST_DEVICE_COUNT - #define PA_WASAPI_MAX_CONST_DEVICE_COUNT 0 // Force basic behavior by defining 0 if not defined by user -#endif - -// Fallback from Event to the Polling method in case if latency is higher than 21.33ms, as it allows to use -// 100% of CPU inside the PA's callback. -// Note: Some USB DAC drivers are buggy when Polling method is forced in Exclusive mode, audio output becomes -// unstable with a lot of interruptions, therefore this define is optional. The default behavior is to -// not change the Event mode to Polling and use the mode which user provided. -//#define PA_WASAPI_FORCE_POLL_IF_LARGE_BUFFER - -//! Poll mode time slots logging. -//#define PA_WASAPI_LOG_TIME_SLOTS - -// WinRT -#if defined(WINAPI_FAMILY) && (WINAPI_FAMILY == WINAPI_FAMILY_APP) - #define PA_WINRT - #define INITGUID -#endif - -// WASAPI -// using adjustments for MinGW build from @mgeier/MXE -// https://github.com/mxe/mxe/commit/f4bbc45682f021948bdaefd9fd476e2a04c4740f -#include <mmreg.h> // must be before other Wasapi headers -#if defined(_MSC_VER) && (_MSC_VER >= 1400) || defined(__MINGW64_VERSION_MAJOR) - #include <avrt.h> - #define COBJMACROS - #include <audioclient.h> - #include <endpointvolume.h> - #define INITGUID // Avoid additional linkage of static libs, excessive code will be optimized out by the compiler -#ifndef _MSC_VER - #include <functiondiscoverykeys_devpkey.h> -#endif - #include <functiondiscoverykeys.h> - #include <mmdeviceapi.h> - #include <devicetopology.h> // Used to get IKsJackDescription interface - #undef INITGUID -// Visual Studio 2010 does not support the inline keyword -#if (_MSC_VER <= 1600) - #define inline _inline -#endif -#endif -#ifndef __MWERKS__ - #include <malloc.h> - #include <memory.h> -#endif -#ifndef PA_WINRT - #include <mmsystem.h> -#endif - -#include "pa_util.h" -#include "pa_allocation.h" -#include "pa_hostapi.h" -#include "pa_stream.h" -#include "pa_cpuload.h" -#include "pa_process.h" -#include "pa_win_wasapi.h" -#include "pa_debugprint.h" -#include "pa_ringbuffer.h" -#include "pa_win_coinitialize.h" - -#if !defined(NTDDI_VERSION) || (defined(__GNUC__) && (__GNUC__ <= 6) && !defined(__MINGW64__)) - - #undef WINVER - #undef _WIN32_WINNT - #define WINVER 0x0600 // VISTA - #define _WIN32_WINNT WINVER - - #ifndef WINAPI - #define WINAPI __stdcall - #endif - - #ifndef __unaligned - #define __unaligned - #endif - - #ifndef __C89_NAMELESS - #define __C89_NAMELESS - #endif - - #ifndef _AVRT_ //<< fix MinGW dummy compile by defining missing type: AVRT_PRIORITY - typedef enum _AVRT_PRIORITY - { - AVRT_PRIORITY_LOW = -1, - AVRT_PRIORITY_NORMAL, - AVRT_PRIORITY_HIGH, - AVRT_PRIORITY_CRITICAL - } AVRT_PRIORITY, *PAVRT_PRIORITY; - #endif - - #include <basetyps.h> // << for IID/CLSID - #include <rpcsal.h> - #include <sal.h> - - #ifndef __LPCGUID_DEFINED__ - #define __LPCGUID_DEFINED__ - typedef const GUID *LPCGUID; - #endif - typedef GUID IID; - typedef GUID CLSID; - - #ifndef PROPERTYKEY_DEFINED - #define PROPERTYKEY_DEFINED - typedef struct _tagpropertykey - { - GUID fmtid; - DWORD pid; - } PROPERTYKEY; - #endif - - #ifdef __midl_proxy - #define __MIDL_CONST - #else - #define __MIDL_CONST const - #endif - - #ifdef WIN64 - #include <wtypes.h> - #define FASTCALL - #include <oleidl.h> - #include <objidl.h> - #else - typedef struct _BYTE_BLOB - { - unsigned long clSize; - unsigned char abData[ 1 ]; - } BYTE_BLOB; - typedef /* [unique] */ __RPC_unique_pointer BYTE_BLOB *UP_BYTE_BLOB; - typedef LONGLONG REFERENCE_TIME; - #define NONAMELESSUNION - #endif - - #ifndef NT_SUCCESS - typedef LONG NTSTATUS; - #endif - - #ifndef WAVE_FORMAT_IEEE_FLOAT - #define WAVE_FORMAT_IEEE_FLOAT 0x0003 // 32-bit floating-point - #endif - - #ifndef __MINGW_EXTENSION - #if defined(__GNUC__) || defined(__GNUG__) - #define __MINGW_EXTENSION __extension__ - #else - #define __MINGW_EXTENSION - #endif - #endif - - #include <sdkddkver.h> - #include <propkeydef.h> - #define COBJMACROS - #define INITGUID // Avoid additional linkage of static libs, excessive code will be optimized out by the compiler - #include <audioclient.h> - #include <mmdeviceapi.h> - #include <endpointvolume.h> - #include <functiondiscoverykeys.h> - #include <devicetopology.h> // Used to get IKsJackDescription interface - #undef INITGUID - -#endif // NTDDI_VERSION - -// Missing declarations for WinRT -#ifdef PA_WINRT - - #define DEVICE_STATE_ACTIVE 0x00000001 - - typedef enum _EDataFlow - { - eRender = 0, - eCapture = ( eRender + 1 ) , - eAll = ( eCapture + 1 ) , - EDataFlow_enum_count = ( eAll + 1 ) - } - EDataFlow; - - typedef enum _EndpointFormFactor - { - RemoteNetworkDevice = 0, - Speakers = ( RemoteNetworkDevice + 1 ) , - LineLevel = ( Speakers + 1 ) , - Headphones = ( LineLevel + 1 ) , - Microphone = ( Headphones + 1 ) , - Headset = ( Microphone + 1 ) , - Handset = ( Headset + 1 ) , - UnknownDigitalPassthrough = ( Handset + 1 ) , - SPDIF = ( UnknownDigitalPassthrough + 1 ) , - HDMI = ( SPDIF + 1 ) , - UnknownFormFactor = ( HDMI + 1 ) - } - EndpointFormFactor; - -#endif - -#ifndef GUID_SECT - #define GUID_SECT -#endif - -#define __DEFINE_GUID(n,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8) static const GUID n GUID_SECT = {l,w1,w2,{b1,b2,b3,b4,b5,b6,b7,b8}} -#define __DEFINE_IID(n,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8) static const IID n GUID_SECT = {l,w1,w2,{b1,b2,b3,b4,b5,b6,b7,b8}} -#define __DEFINE_CLSID(n,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8) static const CLSID n GUID_SECT = {l,w1,w2,{b1,b2,b3,b4,b5,b6,b7,b8}} -#define PA_DEFINE_CLSID(className, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8) \ - __DEFINE_CLSID(pa_CLSID_##className, 0x##l, 0x##w1, 0x##w2, 0x##b1, 0x##b2, 0x##b3, 0x##b4, 0x##b5, 0x##b6, 0x##b7, 0x##b8) -#define PA_DEFINE_IID(interfaceName, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8) \ - __DEFINE_IID(pa_IID_##interfaceName, 0x##l, 0x##w1, 0x##w2, 0x##b1, 0x##b2, 0x##b3, 0x##b4, 0x##b5, 0x##b6, 0x##b7, 0x##b8) - -// "1CB9AD4C-DBFA-4c32-B178-C2F568A703B2" -PA_DEFINE_IID(IAudioClient, 1cb9ad4c, dbfa, 4c32, b1, 78, c2, f5, 68, a7, 03, b2); -// "726778CD-F60A-4EDA-82DE-E47610CD78AA" -PA_DEFINE_IID(IAudioClient2, 726778cd, f60a, 4eda, 82, de, e4, 76, 10, cd, 78, aa); -// "7ED4EE07-8E67-4CD4-8C1A-2B7A5987AD42" -PA_DEFINE_IID(IAudioClient3, 7ed4ee07, 8e67, 4cd4, 8c, 1a, 2b, 7a, 59, 87, ad, 42); -// "1BE09788-6894-4089-8586-9A2A6C265AC5" -PA_DEFINE_IID(IMMEndpoint, 1be09788, 6894, 4089, 85, 86, 9a, 2a, 6c, 26, 5a, c5); -// "A95664D2-9614-4F35-A746-DE8DB63617E6" -PA_DEFINE_IID(IMMDeviceEnumerator, a95664d2, 9614, 4f35, a7, 46, de, 8d, b6, 36, 17, e6); -// "BCDE0395-E52F-467C-8E3D-C4579291692E" -PA_DEFINE_CLSID(IMMDeviceEnumerator,bcde0395, e52f, 467c, 8e, 3d, c4, 57, 92, 91, 69, 2e); -// "F294ACFC-3146-4483-A7BF-ADDCA7C260E2" -PA_DEFINE_IID(IAudioRenderClient, f294acfc, 3146, 4483, a7, bf, ad, dc, a7, c2, 60, e2); -// "C8ADBD64-E71E-48a0-A4DE-185C395CD317" -PA_DEFINE_IID(IAudioCaptureClient, c8adbd64, e71e, 48a0, a4, de, 18, 5c, 39, 5c, d3, 17); -// *2A07407E-6497-4A18-9787-32F79BD0D98F* Or this?? -PA_DEFINE_IID(IDeviceTopology, 2A07407E, 6497, 4A18, 97, 87, 32, f7, 9b, d0, d9, 8f); -// *AE2DE0E4-5BCA-4F2D-AA46-5D13F8FDB3A9* -PA_DEFINE_IID(IPart, AE2DE0E4, 5BCA, 4F2D, aa, 46, 5d, 13, f8, fd, b3, a9); -// *4509F757-2D46-4637-8E62-CE7DB944F57B* -PA_DEFINE_IID(IKsJackDescription, 4509F757, 2D46, 4637, 8e, 62, ce, 7d, b9, 44, f5, 7b); - -// Media formats: -__DEFINE_GUID(pa_KSDATAFORMAT_SUBTYPE_PCM, 0x00000001, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71 ); -__DEFINE_GUID(pa_KSDATAFORMAT_SUBTYPE_ADPCM, 0x00000002, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71 ); -__DEFINE_GUID(pa_KSDATAFORMAT_SUBTYPE_IEEE_FLOAT, 0x00000003, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71 ); - -#ifdef __IAudioClient2_INTERFACE_DEFINED__ -typedef enum _pa_AUDCLNT_STREAMOPTIONS { - pa_AUDCLNT_STREAMOPTIONS_NONE = 0x00, - pa_AUDCLNT_STREAMOPTIONS_RAW = 0x01, - pa_AUDCLNT_STREAMOPTIONS_MATCH_FORMAT = 0x02 -} pa_AUDCLNT_STREAMOPTIONS; -typedef struct _pa_AudioClientProperties { - UINT32 cbSize; - BOOL bIsOffload; - AUDIO_STREAM_CATEGORY eCategory; - pa_AUDCLNT_STREAMOPTIONS Options; -} pa_AudioClientProperties; -#define PA_AUDIOCLIENTPROPERTIES_SIZE_CATEGORY (sizeof(pa_AudioClientProperties) - sizeof(pa_AUDCLNT_STREAMOPTIONS)) -#define PA_AUDIOCLIENTPROPERTIES_SIZE_OPTIONS sizeof(pa_AudioClientProperties) -#endif // __IAudioClient2_INTERFACE_DEFINED__ - -/* use CreateThread for CYGWIN/Windows Mobile, _beginthreadex for all others */ -#if !defined(__CYGWIN__) && !defined(_WIN32_WCE) - #define CREATE_THREAD(PROC) (HANDLE)_beginthreadex( NULL, 0, (PROC), stream, 0, &stream->dwThreadId ) - #define PA_THREAD_FUNC static unsigned WINAPI - #define PA_THREAD_ID unsigned -#else - #define CREATE_THREAD(PROC) CreateThread( NULL, 0, (PROC), stream, 0, &stream->dwThreadId ) - #define PA_THREAD_FUNC static DWORD WINAPI - #define PA_THREAD_ID DWORD -#endif - -// Thread function forward decl. -PA_THREAD_FUNC ProcThreadEvent(void *param); -PA_THREAD_FUNC ProcThreadPoll(void *param); - -// Error codes (available since Windows 7) -#ifndef AUDCLNT_E_BUFFER_ERROR - #define AUDCLNT_E_BUFFER_ERROR AUDCLNT_ERR(0x018) -#endif -#ifndef AUDCLNT_E_BUFFER_SIZE_NOT_ALIGNED - #define AUDCLNT_E_BUFFER_SIZE_NOT_ALIGNED AUDCLNT_ERR(0x019) -#endif -#ifndef AUDCLNT_E_INVALID_DEVICE_PERIOD - #define AUDCLNT_E_INVALID_DEVICE_PERIOD AUDCLNT_ERR(0x020) -#endif - -// Stream flags (available since Windows 7) -#ifndef AUDCLNT_STREAMFLAGS_SRC_DEFAULT_QUALITY - #define AUDCLNT_STREAMFLAGS_SRC_DEFAULT_QUALITY 0x08000000 -#endif -#ifndef AUDCLNT_STREAMFLAGS_AUTOCONVERTPCM - #define AUDCLNT_STREAMFLAGS_AUTOCONVERTPCM 0x80000000 -#endif - -#define PA_WASAPI_DEVICE_ID_LEN 256 -#define PA_WASAPI_DEVICE_NAME_LEN 128 -#ifdef PA_WINRT - #define PA_WASAPI_DEVICE_MAX_COUNT 16 -#endif - -enum { S_INPUT = 0, S_OUTPUT = 1, S_COUNT = 2, S_FULLDUPLEX = 0 }; - -// Number of packets which compose single contignous buffer. With trial and error it was calculated -// that WASAPI Input sub-system uses 6 packets per whole buffer. Please provide more information -// or corrections if available. -enum { WASAPI_PACKETS_PER_INPUT_BUFFER = 6 }; - -#define STATIC_ARRAY_SIZE(array) (sizeof(array)/sizeof(array[0])) - -#define PRINT(x) PA_DEBUG(x); - -#define PA_SKELETON_SET_LAST_HOST_ERROR( errorCode, errorText ) \ - PaUtil_SetLastHostErrorInfo( paWASAPI, errorCode, errorText ) - -#define PA_WASAPI__IS_FULLDUPLEX(STREAM) ((STREAM)->in.clientProc && (STREAM)->out.clientProc) - -#ifndef IF_FAILED_JUMP -#define IF_FAILED_JUMP(hr, label) if(FAILED(hr)) goto label; -#endif - -#ifndef IF_FAILED_INTERNAL_ERROR_JUMP -#define IF_FAILED_INTERNAL_ERROR_JUMP(hr, error, label) if(FAILED(hr)) { error = paInternalError; goto label; } -#endif - -#define SAFE_CLOSE(h) if ((h) != NULL) { CloseHandle((h)); (h) = NULL; } -#define SAFE_RELEASE(punk) if ((punk) != NULL) { (punk)->lpVtbl->Release((punk)); (punk) = NULL; } - -// Mixer function -typedef void (*MixMonoToStereoF) (void *__to, const void *__from, UINT32 count); - -// AVRT is the new "multimedia scheduling stuff" -#ifndef PA_WINRT -typedef BOOL (WINAPI *FAvRtCreateThreadOrderingGroup) (PHANDLE,PLARGE_INTEGER,GUID*,PLARGE_INTEGER); -typedef BOOL (WINAPI *FAvRtDeleteThreadOrderingGroup) (HANDLE); -typedef BOOL (WINAPI *FAvRtWaitOnThreadOrderingGroup) (HANDLE); -typedef HANDLE (WINAPI *FAvSetMmThreadCharacteristics) (LPCSTR,LPDWORD); -typedef BOOL (WINAPI *FAvRevertMmThreadCharacteristics)(HANDLE); -typedef BOOL (WINAPI *FAvSetMmThreadPriority) (HANDLE,AVRT_PRIORITY); -static HMODULE hDInputDLL = 0; -FAvRtCreateThreadOrderingGroup pAvRtCreateThreadOrderingGroup = NULL; -FAvRtDeleteThreadOrderingGroup pAvRtDeleteThreadOrderingGroup = NULL; -FAvRtWaitOnThreadOrderingGroup pAvRtWaitOnThreadOrderingGroup = NULL; -FAvSetMmThreadCharacteristics pAvSetMmThreadCharacteristics = NULL; -FAvRevertMmThreadCharacteristics pAvRevertMmThreadCharacteristics = NULL; -FAvSetMmThreadPriority pAvSetMmThreadPriority = NULL; -#endif - -#define _GetProc(fun, type, name) { \ - fun = (type) GetProcAddress(hDInputDLL,name); \ - if (fun == NULL) { \ - PRINT(("GetProcAddr failed for %s" ,name)); \ - return FALSE; \ - } \ - } \ - -// ------------------------------------------------------------------------------------------ -/* prototypes for functions declared in this file */ -#ifdef __cplusplus -extern "C" -{ -#endif /* __cplusplus */ -PaError PaWasapi_Initialize( PaUtilHostApiRepresentation **hostApi, PaHostApiIndex index ); -#ifdef __cplusplus -} -#endif /* __cplusplus */ -// dummy entry point for other compilers and sdks -// currently built using RC1 SDK (5600) -//#if _MSC_VER < 1400 -//PaError PaWasapi_Initialize( PaUtilHostApiRepresentation **hostApi, PaHostApiIndex hostApiIndex ) -//{ - //return paNoError; -//} -//#else - -// ------------------------------------------------------------------------------------------ -static void Terminate( struct PaUtilHostApiRepresentation *hostApi ); -static PaError IsFormatSupported( struct PaUtilHostApiRepresentation *hostApi, - const PaStreamParameters *inputParameters, - const PaStreamParameters *outputParameters, - double sampleRate ); -static PaError OpenStream( struct PaUtilHostApiRepresentation *hostApi, - PaStream** s, - const PaStreamParameters *inputParameters, - const PaStreamParameters *outputParameters, - double sampleRate, - unsigned long framesPerBuffer, - PaStreamFlags streamFlags, - PaStreamCallback *streamCallback, - void *userData ); -static PaError CloseStream( PaStream* stream ); -static PaError StartStream( PaStream *stream ); -static PaError StopStream( PaStream *stream ); -static PaError AbortStream( PaStream *stream ); -static PaError IsStreamStopped( PaStream *s ); -static PaError IsStreamActive( PaStream *stream ); -static PaTime GetStreamTime( PaStream *stream ); -static double GetStreamCpuLoad( PaStream* stream ); -static PaError ReadStream( PaStream* stream, void *buffer, unsigned long frames ); -static PaError WriteStream( PaStream* stream, const void *buffer, unsigned long frames ); -static signed long GetStreamReadAvailable( PaStream* stream ); -static signed long GetStreamWriteAvailable( PaStream* stream ); - -// ------------------------------------------------------------------------------------------ -/* - These are fields that can be gathered from IDevice and IAudioDevice PRIOR to Initialize, and - done in first pass i assume that neither of these will cause the Driver to "load", but again, - who knows how they implement their stuff - */ -typedef struct PaWasapiDeviceInfo -{ - // Device -#ifndef PA_WINRT - IMMDevice *device; -#endif - - // device Id - WCHAR deviceId[PA_WASAPI_DEVICE_ID_LEN]; - - // from GetState - DWORD state; - - // Fields filled from IAudioDevice (_prior_ to Initialize) - // from GetDevicePeriod( - REFERENCE_TIME DefaultDevicePeriod; - REFERENCE_TIME MinimumDevicePeriod; - - // Default format (setup through Control Panel by user) - WAVEFORMATEXTENSIBLE DefaultFormat; - - // Mix format (internal format used by WASAPI audio engine) - WAVEFORMATEXTENSIBLE MixFormat; - - // Fields filled from IMMEndpoint'sGetDataFlow - EDataFlow flow; - - // Form-factor - EndpointFormFactor formFactor; -} -PaWasapiDeviceInfo; - -// ------------------------------------------------------------------------------------------ -/* PaWasapiHostApiRepresentation - host api datastructure specific to this implementation */ -typedef struct -{ - PaUtilHostApiRepresentation inheritedHostApiRep; - PaUtilStreamInterface callbackStreamInterface; - PaUtilStreamInterface blockingStreamInterface; - - PaUtilAllocationGroup *allocations; - - /* implementation specific data goes here */ - - PaWinUtilComInitializationResult comInitializationResult; - - // this is the REAL number of devices, whether they are useful to PA or not! - UINT32 deviceCount; - - PaWasapiDeviceInfo *devInfo; - - // is TRUE when WOW64 Vista/7 Workaround is needed - BOOL useWOW64Workaround; -} -PaWasapiHostApiRepresentation; - -// ------------------------------------------------------------------------------------------ -/* PaWasapiAudioClientParams - audio client parameters */ -typedef struct PaWasapiAudioClientParams -{ - PaWasapiDeviceInfo *device_info; - PaStreamParameters stream_params; - PaWasapiStreamInfo wasapi_params; - UINT32 frames_per_buffer; - double sample_rate; - BOOL blocking; - BOOL full_duplex; - BOOL wow64_workaround; -} -PaWasapiAudioClientParams; - -// ------------------------------------------------------------------------------------------ -/* PaWasapiStream - a stream data structure specifically for this implementation */ -typedef struct PaWasapiSubStream -{ - IAudioClient *clientParent; -#ifndef PA_WINRT - IStream *clientStream; -#endif - IAudioClient *clientProc; - - WAVEFORMATEXTENSIBLE wavex; - UINT32 bufferSize; - REFERENCE_TIME deviceLatency; - REFERENCE_TIME period; - double latencySeconds; - UINT32 framesPerHostCallback; - AUDCLNT_SHAREMODE shareMode; - UINT32 streamFlags; // AUDCLNT_STREAMFLAGS_EVENTCALLBACK, ... - UINT32 flags; - PaWasapiAudioClientParams params; //!< parameters - - // Buffers - UINT32 buffers; //!< number of buffers used (from host side) - UINT32 framesPerBuffer; //!< number of frames per 1 buffer - BOOL userBufferAndHostMatch; - - // Used for Mono >> Stereo workaround, if driver does not support it - // (in Exclusive mode WASAPI usually refuses to operate with Mono (1-ch) - void *monoBuffer; //!< pointer to buffer - UINT32 monoBufferSize; //!< buffer size in bytes - MixMonoToStereoF monoMixer; //!< pointer to mixer function - - PaUtilRingBuffer *tailBuffer; //!< buffer with trailing sample for blocking mode operations (only for Input) - void *tailBufferMemory; //!< tail buffer memory region -} -PaWasapiSubStream; - -// ------------------------------------------------------------------------------------------ -/* PaWasapiHostProcessor - redirects processing data */ -typedef struct PaWasapiHostProcessor -{ - PaWasapiHostProcessorCallback processor; - void *userData; -} -PaWasapiHostProcessor; - -// ------------------------------------------------------------------------------------------ -typedef struct PaWasapiStream -{ - /* IMPLEMENT ME: rename this */ - PaUtilStreamRepresentation streamRepresentation; - PaUtilCpuLoadMeasurer cpuLoadMeasurer; - PaUtilBufferProcessor bufferProcessor; - - // input - PaWasapiSubStream in; - IAudioCaptureClient *captureClientParent; -#ifndef PA_WINRT - IStream *captureClientStream; -#endif - IAudioCaptureClient *captureClient; - IAudioEndpointVolume *inVol; - - // output - PaWasapiSubStream out; - IAudioRenderClient *renderClientParent; -#ifndef PA_WINRT - IStream *renderClientStream; -#endif - IAudioRenderClient *renderClient; - IAudioEndpointVolume *outVol; - - // event handles for event-driven processing mode - HANDLE event[S_COUNT]; - - // buffer mode - PaUtilHostBufferSizeMode bufferMode; - - // must be volatile to avoid race condition on user query while - // thread is being started - volatile BOOL running; - - PA_THREAD_ID dwThreadId; - HANDLE hThread; - HANDLE hCloseRequest; - HANDLE hThreadStart; //!< signalled by thread on start - HANDLE hThreadExit; //!< signalled by thread on exit - HANDLE hBlockingOpStreamRD; - HANDLE hBlockingOpStreamWR; - - // Host callback Output overrider - PaWasapiHostProcessor hostProcessOverrideOutput; - - // Host callback Input overrider - PaWasapiHostProcessor hostProcessOverrideInput; - - // Defines blocking/callback interface used - BOOL bBlocking; - - // Av Task (MM thread management) - HANDLE hAvTask; - - // Thread priority level - PaWasapiThreadPriority nThreadPriority; - - // State handler - PaWasapiStreamStateCallback fnStateHandler; - void *pStateHandlerUserData; -} -PaWasapiStream; - -// COM marshaling -static HRESULT MarshalSubStreamComPointers(PaWasapiSubStream *substream); -static HRESULT MarshalStreamComPointers(PaWasapiStream *stream); -static HRESULT UnmarshalSubStreamComPointers(PaWasapiSubStream *substream); -static HRESULT UnmarshalStreamComPointers(PaWasapiStream *stream); -static void ReleaseUnmarshaledSubComPointers(PaWasapiSubStream *substream); -static void ReleaseUnmarshaledComPointers(PaWasapiStream *stream); - -// Local methods -static void _StreamOnStop(PaWasapiStream *stream); -static void _StreamFinish(PaWasapiStream *stream); -static void _StreamCleanup(PaWasapiStream *stream); -static HRESULT _PollGetOutputFramesAvailable(PaWasapiStream *stream, UINT32 *available); -static HRESULT _PollGetInputFramesAvailable(PaWasapiStream *stream, UINT32 *available); -static void *PaWasapi_ReallocateMemory(void *prev, size_t size); -static void PaWasapi_FreeMemory(void *ptr); -static PaSampleFormat WaveToPaFormat(const WAVEFORMATEXTENSIBLE *fmtext); - -// WinRT (UWP) device list -#ifdef PA_WINRT -typedef struct PaWasapiWinrtDeviceInfo -{ - WCHAR id[PA_WASAPI_DEVICE_ID_LEN]; - WCHAR name[PA_WASAPI_DEVICE_NAME_LEN]; - EndpointFormFactor formFactor; -} -PaWasapiWinrtDeviceInfo; -typedef struct PaWasapiWinrtDeviceListRole -{ - WCHAR defaultId[PA_WASAPI_DEVICE_ID_LEN]; - PaWasapiWinrtDeviceInfo devices[PA_WASAPI_DEVICE_MAX_COUNT]; - UINT32 deviceCount; -} -PaWasapiWinrtDeviceListRole; -typedef struct PaWasapiWinrtDeviceList -{ - PaWasapiWinrtDeviceListRole render; - PaWasapiWinrtDeviceListRole capture; -} -PaWasapiWinrtDeviceList; -static PaWasapiWinrtDeviceList g_DeviceListInfo = { 0 }; -#endif - -// WinRT (UWP) device list context -#ifdef PA_WINRT -typedef struct PaWasapiWinrtDeviceListContextEntry -{ - PaWasapiWinrtDeviceInfo *info; - EDataFlow flow; -} -PaWasapiWinrtDeviceListContextEntry; -typedef struct PaWasapiWinrtDeviceListContext -{ - PaWasapiWinrtDeviceListContextEntry devices[PA_WASAPI_DEVICE_MAX_COUNT * 2]; -} -PaWasapiWinrtDeviceListContext; -#endif - -// ------------------------------------------------------------------------------------------ -#define LogHostError(HRES) __LogHostError(HRES, __FUNCTION__, __FILE__, __LINE__) -static HRESULT __LogHostError(HRESULT res, const char *func, const char *file, int line) -{ - const char *text = NULL; - switch (res) - { - case S_OK: return res; - case E_POINTER :text ="E_POINTER"; break; - case E_INVALIDARG :text ="E_INVALIDARG"; break; - - case AUDCLNT_E_NOT_INITIALIZED :text ="AUDCLNT_E_NOT_INITIALIZED"; break; - case AUDCLNT_E_ALREADY_INITIALIZED :text ="AUDCLNT_E_ALREADY_INITIALIZED"; break; - case AUDCLNT_E_WRONG_ENDPOINT_TYPE :text ="AUDCLNT_E_WRONG_ENDPOINT_TYPE"; break; - case AUDCLNT_E_DEVICE_INVALIDATED :text ="AUDCLNT_E_DEVICE_INVALIDATED"; break; - case AUDCLNT_E_NOT_STOPPED :text ="AUDCLNT_E_NOT_STOPPED"; break; - case AUDCLNT_E_BUFFER_TOO_LARGE :text ="AUDCLNT_E_BUFFER_TOO_LARGE"; break; - case AUDCLNT_E_OUT_OF_ORDER :text ="AUDCLNT_E_OUT_OF_ORDER"; break; - case AUDCLNT_E_UNSUPPORTED_FORMAT :text ="AUDCLNT_E_UNSUPPORTED_FORMAT"; break; - case AUDCLNT_E_INVALID_SIZE :text ="AUDCLNT_E_INVALID_SIZE"; break; - case AUDCLNT_E_DEVICE_IN_USE :text ="AUDCLNT_E_DEVICE_IN_USE"; break; - case AUDCLNT_E_BUFFER_OPERATION_PENDING :text ="AUDCLNT_E_BUFFER_OPERATION_PENDING"; break; - case AUDCLNT_E_THREAD_NOT_REGISTERED :text ="AUDCLNT_E_THREAD_NOT_REGISTERED"; break; - case AUDCLNT_E_EXCLUSIVE_MODE_NOT_ALLOWED :text ="AUDCLNT_E_EXCLUSIVE_MODE_NOT_ALLOWED"; break; - case AUDCLNT_E_ENDPOINT_CREATE_FAILED :text ="AUDCLNT_E_ENDPOINT_CREATE_FAILED"; break; - case AUDCLNT_E_SERVICE_NOT_RUNNING :text ="AUDCLNT_E_SERVICE_NOT_RUNNING"; break; - case AUDCLNT_E_EVENTHANDLE_NOT_EXPECTED :text ="AUDCLNT_E_EVENTHANDLE_NOT_EXPECTED"; break; - case AUDCLNT_E_EXCLUSIVE_MODE_ONLY :text ="AUDCLNT_E_EXCLUSIVE_MODE_ONLY"; break; - case AUDCLNT_E_BUFDURATION_PERIOD_NOT_EQUAL :text ="AUDCLNT_E_BUFDURATION_PERIOD_NOT_EQUAL"; break; - case AUDCLNT_E_EVENTHANDLE_NOT_SET :text ="AUDCLNT_E_EVENTHANDLE_NOT_SET"; break; - case AUDCLNT_E_INCORRECT_BUFFER_SIZE :text ="AUDCLNT_E_INCORRECT_BUFFER_SIZE"; break; - case AUDCLNT_E_BUFFER_SIZE_ERROR :text ="AUDCLNT_E_BUFFER_SIZE_ERROR"; break; - case AUDCLNT_E_CPUUSAGE_EXCEEDED :text ="AUDCLNT_E_CPUUSAGE_EXCEEDED"; break; - case AUDCLNT_E_BUFFER_ERROR :text ="AUDCLNT_E_BUFFER_ERROR"; break; - case AUDCLNT_E_BUFFER_SIZE_NOT_ALIGNED :text ="AUDCLNT_E_BUFFER_SIZE_NOT_ALIGNED"; break; - case AUDCLNT_E_INVALID_DEVICE_PERIOD :text ="AUDCLNT_E_INVALID_DEVICE_PERIOD"; break; - -#ifdef AUDCLNT_E_INVALID_STREAM_FLAG - case AUDCLNT_E_INVALID_STREAM_FLAG :text ="AUDCLNT_E_INVALID_STREAM_FLAG"; break; -#endif -#ifdef AUDCLNT_E_ENDPOINT_OFFLOAD_NOT_CAPABLE - case AUDCLNT_E_ENDPOINT_OFFLOAD_NOT_CAPABLE :text ="AUDCLNT_E_ENDPOINT_OFFLOAD_NOT_CAPABLE"; break; -#endif -#ifdef AUDCLNT_E_OUT_OF_OFFLOAD_RESOURCES - case AUDCLNT_E_OUT_OF_OFFLOAD_RESOURCES :text ="AUDCLNT_E_OUT_OF_OFFLOAD_RESOURCES"; break; -#endif -#ifdef AUDCLNT_E_OFFLOAD_MODE_ONLY - case AUDCLNT_E_OFFLOAD_MODE_ONLY :text ="AUDCLNT_E_OFFLOAD_MODE_ONLY"; break; -#endif -#ifdef AUDCLNT_E_NONOFFLOAD_MODE_ONLY - case AUDCLNT_E_NONOFFLOAD_MODE_ONLY :text ="AUDCLNT_E_NONOFFLOAD_MODE_ONLY"; break; -#endif -#ifdef AUDCLNT_E_RESOURCES_INVALIDATED - case AUDCLNT_E_RESOURCES_INVALIDATED :text ="AUDCLNT_E_RESOURCES_INVALIDATED"; break; -#endif -#ifdef AUDCLNT_E_RAW_MODE_UNSUPPORTED - case AUDCLNT_E_RAW_MODE_UNSUPPORTED :text ="AUDCLNT_E_RAW_MODE_UNSUPPORTED"; break; -#endif -#ifdef AUDCLNT_E_ENGINE_PERIODICITY_LOCKED - case AUDCLNT_E_ENGINE_PERIODICITY_LOCKED :text ="AUDCLNT_E_ENGINE_PERIODICITY_LOCKED"; break; -#endif -#ifdef AUDCLNT_E_ENGINE_FORMAT_LOCKED - case AUDCLNT_E_ENGINE_FORMAT_LOCKED :text ="AUDCLNT_E_ENGINE_FORMAT_LOCKED"; break; -#endif - - case AUDCLNT_S_BUFFER_EMPTY :text ="AUDCLNT_S_BUFFER_EMPTY"; break; - case AUDCLNT_S_THREAD_ALREADY_REGISTERED :text ="AUDCLNT_S_THREAD_ALREADY_REGISTERED"; break; - case AUDCLNT_S_POSITION_STALLED :text ="AUDCLNT_S_POSITION_STALLED"; break; - - // other windows common errors: - case CO_E_NOTINITIALIZED :text ="CO_E_NOTINITIALIZED: you must call CoInitialize() before Pa_OpenStream()"; break; - - default: - text = "UNKNOWN ERROR"; - } - PRINT(("WASAPI ERROR HRESULT: 0x%X : %s\n [FUNCTION: %s FILE: %s {LINE: %d}]\n", res, text, func, file, line)); -#ifndef PA_ENABLE_DEBUG_OUTPUT - (void)func; (void)file; (void)line; -#endif - PA_SKELETON_SET_LAST_HOST_ERROR(res, text); - return res; -} - -// ------------------------------------------------------------------------------------------ -#define LogPaError(PAERR) __LogPaError(PAERR, __FUNCTION__, __FILE__, __LINE__) -static PaError __LogPaError(PaError err, const char *func, const char *file, int line) -{ - if (err == paNoError) - return err; - - PRINT(("WASAPI ERROR PAERROR: %i : %s\n [FUNCTION: %s FILE: %s {LINE: %d}]\n", err, Pa_GetErrorText(err), func, file, line)); -#ifndef PA_ENABLE_DEBUG_OUTPUT - (void)func; (void)file; (void)line; -#endif - return err; -} - -// ------------------------------------------------------------------------------------------ -/*! \class ThreadSleepScheduler - Allows to emulate thread sleep of less than 1 millisecond under Windows. Scheduler - calculates number of times the thread must run until next sleep of 1 millisecond. - It does not make thread sleeping for real number of microseconds but rather controls - how many of imaginary microseconds the thread task can allow thread to sleep. -*/ -typedef struct ThreadIdleScheduler -{ - UINT32 m_idle_microseconds; //!< number of microseconds to sleep - UINT32 m_next_sleep; //!< next sleep round - UINT32 m_i; //!< current round iterator position - UINT32 m_resolution; //!< resolution in number of milliseconds -} -ThreadIdleScheduler; - -//! Setup scheduler. -static void ThreadIdleScheduler_Setup(ThreadIdleScheduler *sched, UINT32 resolution, UINT32 microseconds) -{ - assert(microseconds != 0); - assert(resolution != 0); - assert((resolution * 1000) >= microseconds); - - memset(sched, 0, sizeof(*sched)); - - sched->m_idle_microseconds = microseconds; - sched->m_resolution = resolution; - sched->m_next_sleep = (resolution * 1000) / microseconds; -} - -//! Iterate and check if can sleep. -static inline UINT32 ThreadIdleScheduler_NextSleep(ThreadIdleScheduler *sched) -{ - // advance and check if thread can sleep - if (++sched->m_i == sched->m_next_sleep) - { - sched->m_i = 0; - return sched->m_resolution; - } - return 0; -} - -// ------------------------------------------------------------------------------------------ -typedef struct _SystemTimer -{ - INT32 granularity; - -} SystemTimer; -static LARGE_INTEGER g_SystemTimerFrequency; -static BOOL g_SystemTimerUseQpc = FALSE; - -//! Set granularity of the system timer. -static BOOL SystemTimer_SetGranularity(SystemTimer *timer, UINT32 granularity) -{ -#ifndef PA_WINRT - TIMECAPS caps; - - timer->granularity = granularity; - - if (timeGetDevCaps(&caps, sizeof(caps)) == MMSYSERR_NOERROR) - { - if (timer->granularity < (INT32)caps.wPeriodMin) - timer->granularity = (INT32)caps.wPeriodMin; - } - - if (timeBeginPeriod(timer->granularity) != TIMERR_NOERROR) - { - PRINT(("SetSystemTimer: timeBeginPeriod(1) failed!\n")); - - timer->granularity = 10; - return FALSE; - } -#else - (void)granularity; - - // UWP does not support increase of the timer precision change and thus calling WaitForSingleObject with anything - // below 10 milliseconds will cause underruns for input and output stream. - timer->granularity = 10; -#endif - - return TRUE; -} - -//! Restore granularity of the system timer. -static void SystemTimer_RestoreGranularity(SystemTimer *timer) -{ -#ifndef PA_WINRT - if (timer->granularity != 0) - { - if (timeEndPeriod(timer->granularity) != TIMERR_NOERROR) - { - PRINT(("RestoreSystemTimer: timeEndPeriod(1) failed!\n")); - } - } -#else - (void)timer; -#endif -} - -//! Initialize high-resolution time getter. -static void SystemTimer_InitializeTimeGetter() -{ - g_SystemTimerUseQpc = QueryPerformanceFrequency(&g_SystemTimerFrequency); -} - -//! Get high-resolution time in milliseconds (using QPC by default). -static inline LONGLONG SystemTimer_GetTime(SystemTimer *timer) -{ - (void)timer; - - // QPC: https://docs.microsoft.com/en-us/windows/win32/sysinfo/acquiring-high-resolution-time-stamps - if (g_SystemTimerUseQpc) - { - LARGE_INTEGER now; - QueryPerformanceCounter(&now); - return (now.QuadPart * 1000LL) / g_SystemTimerFrequency.QuadPart; - } - else - { - #ifdef PA_WINRT - return GetTickCount64(); - #else - return timeGetTime(); - #endif - } -} - -// ------------------------------------------------------------------------------------------ -/*static double nano100ToMillis(REFERENCE_TIME ref) -{ - // 1 nano = 0.000000001 seconds - //100 nano = 0.0000001 seconds - //100 nano = 0.0001 milliseconds - return ((double)ref) * 0.0001; -}*/ - -// ------------------------------------------------------------------------------------------ -static double nano100ToSeconds(REFERENCE_TIME ref) -{ - // 1 nano = 0.000000001 seconds - //100 nano = 0.0000001 seconds - //100 nano = 0.0001 milliseconds - return ((double)ref) * 0.0000001; -} - -// ------------------------------------------------------------------------------------------ -/*static REFERENCE_TIME MillisTonano100(double ref) -{ - // 1 nano = 0.000000001 seconds - //100 nano = 0.0000001 seconds - //100 nano = 0.0001 milliseconds - return (REFERENCE_TIME)(ref / 0.0001); -}*/ - -// ------------------------------------------------------------------------------------------ -static REFERENCE_TIME SecondsTonano100(double ref) -{ - // 1 nano = 0.000000001 seconds - //100 nano = 0.0000001 seconds - //100 nano = 0.0001 milliseconds - return (REFERENCE_TIME)(ref / 0.0000001); -} - -// ------------------------------------------------------------------------------------------ -// Makes Hns period from frames and sample rate -static REFERENCE_TIME MakeHnsPeriod(UINT32 nFrames, DWORD nSamplesPerSec) -{ - return (REFERENCE_TIME)((10000.0 * 1000 / nSamplesPerSec * nFrames) + 0.5); -} - -// ------------------------------------------------------------------------------------------ -// Converts PaSampleFormat to bits per sample value -// Note: paCustomFormat stands for 8.24 format (24-bits inside 32-bit containers) -static WORD PaSampleFormatToBitsPerSample(PaSampleFormat format_id) -{ - switch (format_id & ~paNonInterleaved) - { - case paFloat32: - case paInt32: return 32; - case paCustomFormat: - case paInt24: return 24; - case paInt16: return 16; - case paInt8: - case paUInt8: return 8; - } - return 0; -} - -// ------------------------------------------------------------------------------------------ -// Convert PaSampleFormat to valid sample format for I/O, e.g. if paCustomFormat is specified -// it will be converted to paInt32, other formats pass through -// Note: paCustomFormat stands for 8.24 format (24-bits inside 32-bit containers) -static PaSampleFormat GetSampleFormatForIO(PaSampleFormat format_id) -{ - return ((format_id & ~paNonInterleaved) == paCustomFormat ? - (paInt32 | (format_id & paNonInterleaved ? paNonInterleaved : 0)) : format_id); -} - -// ------------------------------------------------------------------------------------------ -// Converts Hns period into number of frames -static UINT32 MakeFramesFromHns(REFERENCE_TIME hnsPeriod, UINT32 nSamplesPerSec) -{ - UINT32 nFrames = (UINT32)( // frames = - 1.0 * hnsPeriod * // hns * - nSamplesPerSec / // (frames / s) / - 1000 / // (ms / s) / - 10000 // (hns / s) / - + 0.5 // rounding - ); - return nFrames; -} - -// Aligning function type -typedef UINT32 (*ALIGN_FUNC) (UINT32 v, UINT32 align); - -// ------------------------------------------------------------------------------------------ -// Aligns 'v' backwards -static UINT32 ALIGN_BWD(UINT32 v, UINT32 align) -{ - return ((v - (align ? v % align : 0))); -} - -// ------------------------------------------------------------------------------------------ -// Aligns 'v' forward -static UINT32 ALIGN_FWD(UINT32 v, UINT32 align) -{ - UINT32 remainder = (align ? (v % align) : 0); - if (remainder == 0) - return v; - return v + (align - remainder); -} - -// ------------------------------------------------------------------------------------------ -// Get next value power of 2 -static UINT32 ALIGN_NEXT_POW2(UINT32 v) -{ - UINT32 v2 = 1; - while (v > (v2 <<= 1)) { } - v = v2; - return v; -} - -// ------------------------------------------------------------------------------------------ -// Aligns WASAPI buffer to 128 byte packet boundary. HD Audio will fail to play if buffer -// is misaligned. This problem was solved in Windows 7 were AUDCLNT_E_BUFFER_SIZE_NOT_ALIGNED -// is thrown although we must align for Vista anyway. -static UINT32 AlignFramesPerBuffer(UINT32 nFrames, UINT32 nBlockAlign, ALIGN_FUNC pAlignFunc) -{ -#define HDA_PACKET_SIZE (128) - - UINT32 bytes = nFrames * nBlockAlign; - UINT32 packets; - - // align to a HD Audio packet size - bytes = pAlignFunc(bytes, HDA_PACKET_SIZE); - - // atlest 1 frame must be available - if (bytes < HDA_PACKET_SIZE) - bytes = HDA_PACKET_SIZE; - - packets = bytes / HDA_PACKET_SIZE; - bytes = packets * HDA_PACKET_SIZE; - nFrames = bytes / nBlockAlign; - - // WASAPI frames are always aligned to at least 8 - nFrames = ALIGN_FWD(nFrames, 8); - - return nFrames; - -#undef HDA_PACKET_SIZE -} - -// ------------------------------------------------------------------------------------------ -static UINT32 GetFramesSleepTime(REFERENCE_TIME nFrames, REFERENCE_TIME nSamplesPerSec) -{ - REFERENCE_TIME nDuration; - if (nSamplesPerSec == 0) - return 0; - -#define REFTIMES_PER_SEC 10000000LL -#define REFTIMES_PER_MILLISEC 10000LL - - // Calculate the actual duration of the allocated buffer. - nDuration = (REFTIMES_PER_SEC * nFrames) / nSamplesPerSec; - return (UINT32)(nDuration / REFTIMES_PER_MILLISEC); - -#undef REFTIMES_PER_SEC -#undef REFTIMES_PER_MILLISEC -} - -// ------------------------------------------------------------------------------------------ -static UINT32 GetFramesSleepTimeMicroseconds(REFERENCE_TIME nFrames, REFERENCE_TIME nSamplesPerSec) -{ - REFERENCE_TIME nDuration; - if (nSamplesPerSec == 0) - return 0; - -#define REFTIMES_PER_SEC 10000000LL -#define REFTIMES_PER_MILLISEC 10000LL - - // Calculate the actual duration of the allocated buffer. - nDuration = (REFTIMES_PER_SEC * nFrames) / nSamplesPerSec; - return (UINT32)(nDuration / 10); - -#undef REFTIMES_PER_SEC -#undef REFTIMES_PER_MILLISEC -} - -// ------------------------------------------------------------------------------------------ -#ifndef PA_WINRT -static BOOL SetupAVRT() -{ - hDInputDLL = LoadLibraryA("avrt.dll"); - if (hDInputDLL == NULL) - return FALSE; - - _GetProc(pAvRtCreateThreadOrderingGroup, FAvRtCreateThreadOrderingGroup, "AvRtCreateThreadOrderingGroup"); - _GetProc(pAvRtDeleteThreadOrderingGroup, FAvRtDeleteThreadOrderingGroup, "AvRtDeleteThreadOrderingGroup"); - _GetProc(pAvRtWaitOnThreadOrderingGroup, FAvRtWaitOnThreadOrderingGroup, "AvRtWaitOnThreadOrderingGroup"); - _GetProc(pAvSetMmThreadCharacteristics, FAvSetMmThreadCharacteristics, "AvSetMmThreadCharacteristicsA"); - _GetProc(pAvRevertMmThreadCharacteristics,FAvRevertMmThreadCharacteristics,"AvRevertMmThreadCharacteristics"); - _GetProc(pAvSetMmThreadPriority, FAvSetMmThreadPriority, "AvSetMmThreadPriority"); - - return pAvRtCreateThreadOrderingGroup && - pAvRtDeleteThreadOrderingGroup && - pAvRtWaitOnThreadOrderingGroup && - pAvSetMmThreadCharacteristics && - pAvRevertMmThreadCharacteristics && - pAvSetMmThreadPriority; -} -#endif - -// ------------------------------------------------------------------------------------------ -static void CloseAVRT() -{ -#ifndef PA_WINRT - if (hDInputDLL != NULL) - FreeLibrary(hDInputDLL); - hDInputDLL = NULL; -#endif -} - -// ------------------------------------------------------------------------------------------ -static BOOL IsWow64() -{ -#ifndef PA_WINRT - - // http://msdn.microsoft.com/en-us/library/ms684139(VS.85).aspx - - typedef BOOL (WINAPI *LPFN_ISWOW64PROCESS) (HANDLE, PBOOL); - LPFN_ISWOW64PROCESS fnIsWow64Process; - - BOOL bIsWow64 = FALSE; - - // IsWow64Process is not available on all supported versions of Windows. - // Use GetModuleHandle to get a handle to the DLL that contains the function - // and GetProcAddress to get a pointer to the function if available. - - fnIsWow64Process = (LPFN_ISWOW64PROCESS) GetProcAddress( - GetModuleHandleA("kernel32"), "IsWow64Process"); - - if (fnIsWow64Process == NULL) - return FALSE; - - if (!fnIsWow64Process(GetCurrentProcess(), &bIsWow64)) - return FALSE; - - return bIsWow64; - -#else - - return FALSE; - -#endif -} - -// ------------------------------------------------------------------------------------------ -typedef enum EWindowsVersion -{ - WINDOWS_UNKNOWN = 0, - WINDOWS_VISTA_SERVER2008, - WINDOWS_7_SERVER2008R2, - WINDOWS_8_SERVER2012, - WINDOWS_8_1_SERVER2012R2, - WINDOWS_10_SERVER2016, - WINDOWS_FUTURE -} -EWindowsVersion; -// Alternative way for checking Windows version (allows to check version on Windows 8.1 and up) -#ifndef PA_WINRT -static BOOL IsWindowsVersionOrGreater(WORD wMajorVersion, WORD wMinorVersion, WORD wServicePackMajor) -{ - typedef ULONGLONG (NTAPI *LPFN_VERSETCONDITIONMASK)(ULONGLONG ConditionMask, DWORD TypeMask, BYTE Condition); - typedef BOOL (WINAPI *LPFN_VERIFYVERSIONINFO)(LPOSVERSIONINFOEXA lpVersionInformation, DWORD dwTypeMask, DWORDLONG dwlConditionMask); - - LPFN_VERSETCONDITIONMASK fnVerSetConditionMask; - LPFN_VERIFYVERSIONINFO fnVerifyVersionInfo; - OSVERSIONINFOEXA osvi = { sizeof(osvi), 0, 0, 0, 0, {0}, 0, 0 }; - DWORDLONG dwlConditionMask; - - fnVerSetConditionMask = (LPFN_VERSETCONDITIONMASK)GetProcAddress(GetModuleHandleA("kernel32"), "VerSetConditionMask"); - fnVerifyVersionInfo = (LPFN_VERIFYVERSIONINFO)GetProcAddress(GetModuleHandleA("kernel32"), "VerifyVersionInfoA"); - - if ((fnVerSetConditionMask == NULL) || (fnVerifyVersionInfo == NULL)) - return FALSE; - - dwlConditionMask = fnVerSetConditionMask( - fnVerSetConditionMask( - fnVerSetConditionMask( - 0, VER_MAJORVERSION, VER_GREATER_EQUAL), - VER_MINORVERSION, VER_GREATER_EQUAL), - VER_SERVICEPACKMAJOR, VER_GREATER_EQUAL); - - osvi.dwMajorVersion = wMajorVersion; - osvi.dwMinorVersion = wMinorVersion; - osvi.wServicePackMajor = wServicePackMajor; - - return (fnVerifyVersionInfo(&osvi, VER_MAJORVERSION | VER_MINORVERSION | VER_SERVICEPACKMAJOR, dwlConditionMask) != FALSE); -} -#endif -// Get Windows version -static EWindowsVersion GetWindowsVersion() -{ -#ifndef PA_WINRT - static EWindowsVersion version = WINDOWS_UNKNOWN; - - if (version == WINDOWS_UNKNOWN) - { - DWORD dwMajorVersion = 0xFFFFFFFFU, dwMinorVersion = 0, dwBuild = 0; - - // RTL_OSVERSIONINFOW equals OSVERSIONINFOW but it is missing inb MinGW winnt.h header, - // thus use OSVERSIONINFOW for greater portability - typedef NTSTATUS (WINAPI *LPFN_RTLGETVERSION)(POSVERSIONINFOW lpVersionInformation); - LPFN_RTLGETVERSION fnRtlGetVersion; - - #define NTSTATUS_SUCCESS ((NTSTATUS)0x00000000L) - - // RtlGetVersion must be able to provide true Windows version (Windows 10 may be reported as Windows 8 - // by GetVersion API) - if ((fnRtlGetVersion = (LPFN_RTLGETVERSION)GetProcAddress(GetModuleHandleA("ntdll"), "RtlGetVersion")) != NULL) - { - OSVERSIONINFOW ver = { sizeof(OSVERSIONINFOW), 0, 0, 0, 0, {0} }; - - PRINT(("WASAPI: getting Windows version with RtlGetVersion()\n")); - - if (fnRtlGetVersion(&ver) == NTSTATUS_SUCCESS) - { - dwMajorVersion = ver.dwMajorVersion; - dwMinorVersion = ver.dwMinorVersion; - dwBuild = ver.dwBuildNumber; - } - } - - #undef NTSTATUS_SUCCESS - - // fallback to GetVersion if RtlGetVersion is missing - if (dwMajorVersion == 0xFFFFFFFFU) - { - typedef DWORD (WINAPI *LPFN_GETVERSION)(VOID); - LPFN_GETVERSION fnGetVersion; - - if ((fnGetVersion = (LPFN_GETVERSION)GetProcAddress(GetModuleHandleA("kernel32"), "GetVersion")) != NULL) - { - DWORD dwVersion; - - PRINT(("WASAPI: getting Windows version with GetVersion()\n")); - - dwVersion = fnGetVersion(); - - dwMajorVersion = (DWORD)(LOBYTE(LOWORD(dwVersion))); - dwMinorVersion = (DWORD)(HIBYTE(LOWORD(dwVersion))); - - if (dwVersion < 0x80000000) - dwBuild = (DWORD)(HIWORD(dwVersion)); - } - } - - if (dwMajorVersion != 0xFFFFFFFFU) - { - switch (dwMajorVersion) - { - case 0: - case 1: - case 2: - case 3: - case 4: - case 5: - break; // skip lower - case 6: - switch (dwMinorVersion) - { - case 0: version = WINDOWS_VISTA_SERVER2008; break; - case 1: version = WINDOWS_7_SERVER2008R2; break; - case 2: version = WINDOWS_8_SERVER2012; break; - case 3: version = WINDOWS_8_1_SERVER2012R2; break; - default: version = WINDOWS_FUTURE; break; - } - break; - case 10: - switch (dwMinorVersion) - { - case 0: version = WINDOWS_10_SERVER2016; break; - default: version = WINDOWS_FUTURE; break; - } - break; - default: - version = WINDOWS_FUTURE; - break; - } - } - // fallback to VerifyVersionInfo if RtlGetVersion and GetVersion are missing - else - { - PRINT(("WASAPI: getting Windows version with VerifyVersionInfo()\n")); - - if (IsWindowsVersionOrGreater(10, 0, 0)) - version = WINDOWS_10_SERVER2016; - else - if (IsWindowsVersionOrGreater(6, 3, 0)) - version = WINDOWS_8_1_SERVER2012R2; - else - if (IsWindowsVersionOrGreater(6, 2, 0)) - version = WINDOWS_8_SERVER2012; - else - if (IsWindowsVersionOrGreater(6, 1, 0)) - version = WINDOWS_7_SERVER2008R2; - else - if (IsWindowsVersionOrGreater(6, 0, 0)) - version = WINDOWS_VISTA_SERVER2008; - else - version = WINDOWS_FUTURE; - } - - PRINT(("WASAPI: Windows version = %d\n", version)); - } - - return version; -#else - #if (_WIN32_WINNT >= _WIN32_WINNT_WIN10) - return WINDOWS_10_SERVER2016; - #else - return WINDOWS_8_SERVER2012; - #endif -#endif -} - -// ------------------------------------------------------------------------------------------ -static BOOL UseWOW64Workaround() -{ - // note: WOW64 bug is common to Windows Vista x64, thus we fall back to safe Poll-driven - // method. Windows 7 x64 seems has WOW64 bug fixed. - - return (IsWow64() && (GetWindowsVersion() == WINDOWS_VISTA_SERVER2008)); -} - -// ------------------------------------------------------------------------------------------ -static UINT32 GetAudioClientVersion() -{ - if (GetWindowsVersion() >= WINDOWS_10_SERVER2016) - return 3; - else - if (GetWindowsVersion() >= WINDOWS_8_SERVER2012) - return 2; - - return 1; -} - -// ------------------------------------------------------------------------------------------ -static const IID *GetAudioClientIID() -{ - static const IID *cli_iid = NULL; - if (cli_iid == NULL) - { - UINT32 cli_version = GetAudioClientVersion(); - switch (cli_version) - { - case 3: cli_iid = &pa_IID_IAudioClient3; break; - case 2: cli_iid = &pa_IID_IAudioClient2; break; - default: cli_iid = &pa_IID_IAudioClient; break; - } - - PRINT(("WASAPI: IAudioClient version = %d\n", cli_version)); - } - - return cli_iid; -} - -// ------------------------------------------------------------------------------------------ -typedef enum EMixDirection -{ - MIX_DIR__1TO2, //!< mix one channel to L and R - MIX_DIR__2TO1, //!< mix L and R channels to one channel - MIX_DIR__2TO1_L //!< mix only L channel (of total 2 channels) to one channel -} -EMixDirection; - -// ------------------------------------------------------------------------------------------ -#define _WASAPI_MONO_TO_STEREO_MIXER_1_TO_2(TYPE)\ - TYPE * __restrict to = (TYPE *)__to;\ - const TYPE * __restrict from = (const TYPE *)__from;\ - const TYPE * __restrict end = from + count;\ - while (from != end)\ - {\ - to[0] = to[1] = *from ++;\ - to += 2;\ - } - -// ------------------------------------------------------------------------------------------ -#define _WASAPI_MONO_TO_STEREO_MIXER_2_TO_1_FLT32(TYPE)\ - TYPE * __restrict to = (TYPE *)__to;\ - const TYPE * __restrict from = (const TYPE *)__from;\ - const TYPE * __restrict end = to + count;\ - while (to != end)\ - {\ - *to ++ = (TYPE)((float)(from[0] + from[1]) * 0.5f);\ - from += 2;\ - } - -// ------------------------------------------------------------------------------------------ -#define _WASAPI_MONO_TO_STEREO_MIXER_2_TO_1_INT32(TYPE)\ - TYPE * __restrict to = (TYPE *)__to;\ - const TYPE * __restrict from = (const TYPE *)__from;\ - const TYPE * __restrict end = to + count;\ - while (to != end)\ - {\ - *to ++ = (TYPE)(((INT32)from[0] + (INT32)from[1]) >> 1);\ - from += 2;\ - } - -// ------------------------------------------------------------------------------------------ -#define _WASAPI_MONO_TO_STEREO_MIXER_2_TO_1_INT64(TYPE)\ - TYPE * __restrict to = (TYPE *)__to;\ - const TYPE * __restrict from = (const TYPE *)__from;\ - const TYPE * __restrict end = to + count;\ - while (to != end)\ - {\ - *to ++ = (TYPE)(((INT64)from[0] + (INT64)from[1]) >> 1);\ - from += 2;\ - } - -// ------------------------------------------------------------------------------------------ -#define _WASAPI_MONO_TO_STEREO_MIXER_2_TO_1_L(TYPE)\ - TYPE * __restrict to = (TYPE *)__to;\ - const TYPE * __restrict from = (const TYPE *)__from;\ - const TYPE * __restrict end = to + count;\ - while (to != end)\ - {\ - *to ++ = from[0];\ - from += 2;\ - } - -// ------------------------------------------------------------------------------------------ -static void _MixMonoToStereo_1TO2_8(void *__to, const void *__from, UINT32 count) { _WASAPI_MONO_TO_STEREO_MIXER_1_TO_2(BYTE); } -static void _MixMonoToStereo_1TO2_16(void *__to, const void *__from, UINT32 count) { _WASAPI_MONO_TO_STEREO_MIXER_1_TO_2(short); } -static void _MixMonoToStereo_1TO2_8_24(void *__to, const void *__from, UINT32 count) { _WASAPI_MONO_TO_STEREO_MIXER_1_TO_2(int); /* !!! int24 data is contained in 32-bit containers*/ } -static void _MixMonoToStereo_1TO2_32(void *__to, const void *__from, UINT32 count) { _WASAPI_MONO_TO_STEREO_MIXER_1_TO_2(int); } -static void _MixMonoToStereo_1TO2_32f(void *__to, const void *__from, UINT32 count) { _WASAPI_MONO_TO_STEREO_MIXER_1_TO_2(float); } -static void _MixMonoToStereo_1TO2_24(void *__to, const void *__from, UINT32 count) -{ - const UCHAR * __restrict from = (const UCHAR *)__from; - UCHAR * __restrict to = (UCHAR *)__to; - const UCHAR * __restrict end = to + (count * (2 * 3)); - - while (to != end) - { - to[0] = to[3] = from[0]; - to[1] = to[4] = from[1]; - to[2] = to[5] = from[2]; - - from += 3; - to += (2 * 3); - } -} - -// ------------------------------------------------------------------------------------------ -static void _MixMonoToStereo_2TO1_8(void *__to, const void *__from, UINT32 count) { _WASAPI_MONO_TO_STEREO_MIXER_2_TO_1_INT32(BYTE); } -static void _MixMonoToStereo_2TO1_16(void *__to, const void *__from, UINT32 count) { _WASAPI_MONO_TO_STEREO_MIXER_2_TO_1_INT32(short); } -static void _MixMonoToStereo_2TO1_8_24(void *__to, const void *__from, UINT32 count) { _WASAPI_MONO_TO_STEREO_MIXER_2_TO_1_INT32(int); /* !!! int24 data is contained in 32-bit containers*/ } -static void _MixMonoToStereo_2TO1_32(void *__to, const void *__from, UINT32 count) { _WASAPI_MONO_TO_STEREO_MIXER_2_TO_1_INT64(int); } -static void _MixMonoToStereo_2TO1_32f(void *__to, const void *__from, UINT32 count) { _WASAPI_MONO_TO_STEREO_MIXER_2_TO_1_FLT32(float); } -static void _MixMonoToStereo_2TO1_24(void *__to, const void *__from, UINT32 count) -{ - const UCHAR * __restrict from = (const UCHAR *)__from; - UCHAR * __restrict to = (UCHAR *)__to; - const UCHAR * __restrict end = to + (count * 3); - PaInt32 tempL, tempR, tempM; - - while (to != end) - { - tempL = (((PaInt32)from[0]) << 8); - tempL = tempL | (((PaInt32)from[1]) << 16); - tempL = tempL | (((PaInt32)from[2]) << 24); - - tempR = (((PaInt32)from[3]) << 8); - tempR = tempR | (((PaInt32)from[4]) << 16); - tempR = tempR | (((PaInt32)from[5]) << 24); - - tempM = (tempL + tempR) >> 1; - - to[0] = (UCHAR)(tempM >> 8); - to[1] = (UCHAR)(tempM >> 16); - to[2] = (UCHAR)(tempM >> 24); - - from += (2 * 3); - to += 3; - } -} - -// ------------------------------------------------------------------------------------------ -static void _MixMonoToStereo_2TO1_8_L(void *__to, const void *__from, UINT32 count) { _WASAPI_MONO_TO_STEREO_MIXER_2_TO_1_L(BYTE); } -static void _MixMonoToStereo_2TO1_16_L(void *__to, const void *__from, UINT32 count) { _WASAPI_MONO_TO_STEREO_MIXER_2_TO_1_L(short); } -static void _MixMonoToStereo_2TO1_8_24_L(void *__to, const void *__from, UINT32 count) { _WASAPI_MONO_TO_STEREO_MIXER_2_TO_1_L(int); /* !!! int24 data is contained in 32-bit containers*/ } -static void _MixMonoToStereo_2TO1_32_L(void *__to, const void *__from, UINT32 count) { _WASAPI_MONO_TO_STEREO_MIXER_2_TO_1_L(int); } -static void _MixMonoToStereo_2TO1_32f_L(void *__to, const void *__from, UINT32 count) { _WASAPI_MONO_TO_STEREO_MIXER_2_TO_1_L(float); } -static void _MixMonoToStereo_2TO1_24_L(void *__to, const void *__from, UINT32 count) -{ - const UCHAR * __restrict from = (const UCHAR *)__from; - UCHAR * __restrict to = (UCHAR *)__to; - const UCHAR * __restrict end = to + (count * 3); - - while (to != end) - { - to[0] = from[0]; - to[1] = from[1]; - to[2] = from[2]; - - from += (2 * 3); - to += 3; - } -} - -// ------------------------------------------------------------------------------------------ -static MixMonoToStereoF GetMonoToStereoMixer(const WAVEFORMATEXTENSIBLE *fmtext, EMixDirection dir) -{ - PaSampleFormat format = WaveToPaFormat(fmtext); - - switch (dir) - { - case MIX_DIR__1TO2: - switch (format & ~paNonInterleaved) - { - case paUInt8: return _MixMonoToStereo_1TO2_8; - case paInt16: return _MixMonoToStereo_1TO2_16; - case paInt24: return (fmtext->Format.wBitsPerSample == 32 ? _MixMonoToStereo_1TO2_8_24 : _MixMonoToStereo_1TO2_24); - case paInt32: return _MixMonoToStereo_1TO2_32; - case paFloat32: return _MixMonoToStereo_1TO2_32f; - } - break; - - case MIX_DIR__2TO1: - switch (format & ~paNonInterleaved) - { - case paUInt8: return _MixMonoToStereo_2TO1_8; - case paInt16: return _MixMonoToStereo_2TO1_16; - case paInt24: return (fmtext->Format.wBitsPerSample == 32 ? _MixMonoToStereo_2TO1_8_24 : _MixMonoToStereo_2TO1_24); - case paInt32: return _MixMonoToStereo_2TO1_32; - case paFloat32: return _MixMonoToStereo_2TO1_32f; - } - break; - - case MIX_DIR__2TO1_L: - switch (format & ~paNonInterleaved) - { - case paUInt8: return _MixMonoToStereo_2TO1_8_L; - case paInt16: return _MixMonoToStereo_2TO1_16_L; - case paInt24: return (fmtext->Format.wBitsPerSample == 32 ? _MixMonoToStereo_2TO1_8_24_L : _MixMonoToStereo_2TO1_24_L); - case paInt32: return _MixMonoToStereo_2TO1_32_L; - case paFloat32: return _MixMonoToStereo_2TO1_32f_L; - } - break; - } - - return NULL; -} - -// ------------------------------------------------------------------------------------------ -#ifdef PA_WINRT -typedef struct PaActivateAudioInterfaceCompletionHandler -{ - IActivateAudioInterfaceCompletionHandler parent; - volatile LONG refs; - volatile LONG done; - struct - { - const IID *iid; - void **obj; - } - in; - struct - { - HRESULT hr; - } - out; -} -PaActivateAudioInterfaceCompletionHandler; - -static HRESULT (STDMETHODCALLTYPE PaActivateAudioInterfaceCompletionHandler_QueryInterface)( - IActivateAudioInterfaceCompletionHandler *This, REFIID riid, void **ppvObject) -{ - PaActivateAudioInterfaceCompletionHandler *handler = (PaActivateAudioInterfaceCompletionHandler *)This; - - // From MSDN: - // "The IAgileObject interface is a marker interface that indicates that an object - // is free threaded and can be called from any apartment." - if (IsEqualIID(riid, &IID_IUnknown) || - IsEqualIID(riid, &IID_IAgileObject)) - { - IActivateAudioInterfaceCompletionHandler_AddRef((IActivateAudioInterfaceCompletionHandler *)handler); - (*ppvObject) = handler; - return S_OK; - } - - return E_NOINTERFACE; -} - -static ULONG (STDMETHODCALLTYPE PaActivateAudioInterfaceCompletionHandler_AddRef)( - IActivateAudioInterfaceCompletionHandler *This) -{ - PaActivateAudioInterfaceCompletionHandler *handler = (PaActivateAudioInterfaceCompletionHandler *)This; - - return InterlockedIncrement(&handler->refs); -} - -static ULONG (STDMETHODCALLTYPE PaActivateAudioInterfaceCompletionHandler_Release)( - IActivateAudioInterfaceCompletionHandler *This) -{ - PaActivateAudioInterfaceCompletionHandler *handler = (PaActivateAudioInterfaceCompletionHandler *)This; - ULONG refs; - - if ((refs = InterlockedDecrement(&handler->refs)) == 0) - { - PaUtil_FreeMemory(handler->parent.lpVtbl); - PaUtil_FreeMemory(handler); - } - - return refs; -} - -static HRESULT (STDMETHODCALLTYPE PaActivateAudioInterfaceCompletionHandler_ActivateCompleted)( - IActivateAudioInterfaceCompletionHandler *This, IActivateAudioInterfaceAsyncOperation *activateOperation) -{ - PaActivateAudioInterfaceCompletionHandler *handler = (PaActivateAudioInterfaceCompletionHandler *)This; - - HRESULT hr = S_OK; - HRESULT hrActivateResult = S_OK; - IUnknown *punkAudioInterface = NULL; - - // Check for a successful activation result - hr = IActivateAudioInterfaceAsyncOperation_GetActivateResult(activateOperation, &hrActivateResult, &punkAudioInterface); - if (SUCCEEDED(hr) && SUCCEEDED(hrActivateResult)) - { - // Get pointer to the requested audio interface - IUnknown_QueryInterface(punkAudioInterface, handler->in.iid, handler->in.obj); - if ((*handler->in.obj) == NULL) - hrActivateResult = E_FAIL; - } - SAFE_RELEASE(punkAudioInterface); - - if (SUCCEEDED(hr)) - handler->out.hr = hrActivateResult; - else - handler->out.hr = hr; - - // Got client object, stop busy waiting in ActivateAudioInterface - InterlockedExchange(&handler->done, TRUE); - - return hr; -} - -static IActivateAudioInterfaceCompletionHandler *CreateActivateAudioInterfaceCompletionHandler(const IID *iid, void **client) -{ - PaActivateAudioInterfaceCompletionHandler *handler = PaUtil_AllocateMemory(sizeof(PaActivateAudioInterfaceCompletionHandler)); - - memset(handler, 0, sizeof(*handler)); - - handler->parent.lpVtbl = PaUtil_AllocateMemory(sizeof(*handler->parent.lpVtbl)); - handler->parent.lpVtbl->QueryInterface = &PaActivateAudioInterfaceCompletionHandler_QueryInterface; - handler->parent.lpVtbl->AddRef = &PaActivateAudioInterfaceCompletionHandler_AddRef; - handler->parent.lpVtbl->Release = &PaActivateAudioInterfaceCompletionHandler_Release; - handler->parent.lpVtbl->ActivateCompleted = &PaActivateAudioInterfaceCompletionHandler_ActivateCompleted; - handler->refs = 1; - handler->in.iid = iid; - handler->in.obj = client; - - return (IActivateAudioInterfaceCompletionHandler *)handler; -} -#endif - -// ------------------------------------------------------------------------------------------ -#ifdef PA_WINRT -static HRESULT WinRT_GetDefaultDeviceId(WCHAR *deviceId, UINT32 deviceIdMax, EDataFlow flow) -{ - switch (flow) - { - case eRender: - if (g_DeviceListInfo.render.defaultId[0] != 0) - wcsncpy_s(deviceId, deviceIdMax, g_DeviceListInfo.render.defaultId, wcslen(g_DeviceListInfo.render.defaultId)); - else - StringFromGUID2(&DEVINTERFACE_AUDIO_RENDER, deviceId, deviceIdMax); - break; - case eCapture: - if (g_DeviceListInfo.capture.defaultId[0] != 0) - wcsncpy_s(deviceId, deviceIdMax, g_DeviceListInfo.capture.defaultId, wcslen(g_DeviceListInfo.capture.defaultId)); - else - StringFromGUID2(&DEVINTERFACE_AUDIO_CAPTURE, deviceId, deviceIdMax); - break; - default: - return S_FALSE; - } - - return S_OK; -} -#endif - -// ------------------------------------------------------------------------------------------ -#ifdef PA_WINRT -static HRESULT WinRT_ActivateAudioInterface(const WCHAR *deviceId, const IID *iid, void **client) -{ - PaError result = paNoError; - HRESULT hr = S_OK; - IActivateAudioInterfaceAsyncOperation *asyncOp = NULL; - IActivateAudioInterfaceCompletionHandler *handler = CreateActivateAudioInterfaceCompletionHandler(iid, client); - PaActivateAudioInterfaceCompletionHandler *handlerImpl = (PaActivateAudioInterfaceCompletionHandler *)handler; - UINT32 sleepToggle = 0; - - // Async operation will call back to IActivateAudioInterfaceCompletionHandler::ActivateCompleted - // which must be an agile interface implementation - hr = ActivateAudioInterfaceAsync(deviceId, iid, NULL, handler, &asyncOp); - IF_FAILED_INTERNAL_ERROR_JUMP(hr, result, error); - - // Wait in busy loop for async operation to complete - // Use Interlocked API here to ensure that ->done variable is read every time through the loop - while (SUCCEEDED(hr) && !InterlockedOr(&handlerImpl->done, 0)) - { - Sleep(sleepToggle ^= 1); - } - - hr = handlerImpl->out.hr; - -error: - - SAFE_RELEASE(asyncOp); - SAFE_RELEASE(handler); - - return hr; -} -#endif - -// ------------------------------------------------------------------------------------------ -static HRESULT ActivateAudioInterface(const PaWasapiDeviceInfo *deviceInfo, const PaWasapiStreamInfo *streamInfo, - IAudioClient **client) -{ - HRESULT hr; - -#ifndef PA_WINRT - if (FAILED(hr = IMMDevice_Activate(deviceInfo->device, GetAudioClientIID(), CLSCTX_ALL, NULL, (void **)client))) - return hr; -#else - if (FAILED(hr = WinRT_ActivateAudioInterface(deviceInfo->deviceId, GetAudioClientIID(), (void **)client))) - return hr; -#endif - - // Set audio client options (applicable only to IAudioClient2+): options may affect the audio format - // support by IAudioClient implementation and therefore we should set them before GetClosestFormat() - // in order to correctly match the requested format -#ifdef __IAudioClient2_INTERFACE_DEFINED__ - if ((streamInfo != NULL) && (GetAudioClientVersion() >= 2)) - { - pa_AudioClientProperties audioProps = { 0 }; - audioProps.cbSize = sizeof(pa_AudioClientProperties); - audioProps.bIsOffload = FALSE; - audioProps.eCategory = (AUDIO_STREAM_CATEGORY)streamInfo->streamCategory; - switch (streamInfo->streamOption) - { - case eStreamOptionRaw: - if (GetWindowsVersion() >= WINDOWS_8_1_SERVER2012R2) - audioProps.Options = pa_AUDCLNT_STREAMOPTIONS_RAW; - break; - case eStreamOptionMatchFormat: - if (GetWindowsVersion() >= WINDOWS_10_SERVER2016) - audioProps.Options = pa_AUDCLNT_STREAMOPTIONS_MATCH_FORMAT; - break; - } - - if (FAILED(hr = IAudioClient2_SetClientProperties((IAudioClient2 *)(*client), (AudioClientProperties *)&audioProps))) - { - PRINT(("WASAPI: IAudioClient2_SetClientProperties(IsOffload = %d, Category = %d, Options = %d) failed\n", audioProps.bIsOffload, audioProps.eCategory, audioProps.Options)); - LogHostError(hr); - } - else - { - PRINT(("WASAPI: IAudioClient2 set properties: IsOffload = %d, Category = %d, Options = %d\n", audioProps.bIsOffload, audioProps.eCategory, audioProps.Options)); - } - } -#endif - - return S_OK; -} - -// ------------------------------------------------------------------------------------------ -#ifdef PA_WINRT -// Windows 10 SDK 10.0.15063.0 has SignalObjectAndWait defined again (unlike in 10.0.14393.0 and lower) -#if !defined(WDK_NTDDI_VERSION) || (WDK_NTDDI_VERSION < NTDDI_WIN10_RS2) -static DWORD SignalObjectAndWait(HANDLE hObjectToSignal, HANDLE hObjectToWaitOn, DWORD dwMilliseconds, BOOL bAlertable) -{ - SetEvent(hObjectToSignal); - return WaitForSingleObjectEx(hObjectToWaitOn, dwMilliseconds, bAlertable); -} -#endif -#endif - -// ------------------------------------------------------------------------------------------ -static void NotifyStateChanged(PaWasapiStream *stream, UINT32 flags, HRESULT hr) -{ - if (stream->fnStateHandler == NULL) - return; - - if (FAILED(hr)) - flags |= paWasapiStreamStateError; - - stream->fnStateHandler((PaStream *)stream, flags, hr, stream->pStateHandlerUserData); -} - -// ------------------------------------------------------------------------------------------ -static void FillBaseDeviceInfo(PaDeviceInfo *deviceInfo, PaHostApiIndex hostApiIndex) -{ - deviceInfo->structVersion = 2; - deviceInfo->hostApi = hostApiIndex; -} - -// ------------------------------------------------------------------------------------------ -static PaError FillInactiveDeviceInfo(PaWasapiHostApiRepresentation *paWasapi, PaDeviceInfo *deviceInfo) -{ - if (deviceInfo->name == NULL) - deviceInfo->name = (char *)PaUtil_GroupAllocateMemory(paWasapi->allocations, 1); - - if (deviceInfo->name != NULL) - { - ((char *)deviceInfo->name)[0] = 0; - } - else - return paInsufficientMemory; - - return paNoError; -} - -// ------------------------------------------------------------------------------------------ -static PaError FillDeviceInfo(PaWasapiHostApiRepresentation *paWasapi, void *pEndPoints, INT32 index, const WCHAR *defaultRenderId, - const WCHAR *defaultCaptureId, PaDeviceInfo *deviceInfo, PaWasapiDeviceInfo *wasapiDeviceInfo -#ifdef PA_WINRT - , PaWasapiWinrtDeviceListContext *deviceListContext -#endif -) -{ - HRESULT hr; - PaError result; - PaUtilHostApiRepresentation *hostApi = (PaUtilHostApiRepresentation *)paWasapi; -#ifdef PA_WINRT - PaWasapiWinrtDeviceListContextEntry *listEntry = &deviceListContext->devices[index]; - (void)pEndPoints; - (void)defaultRenderId; - (void)defaultCaptureId; -#endif - -#ifndef PA_WINRT - hr = IMMDeviceCollection_Item((IMMDeviceCollection *)pEndPoints, index, &wasapiDeviceInfo->device); - IF_FAILED_INTERNAL_ERROR_JUMP(hr, result, error); - - // Get device Id - { - WCHAR *deviceId; - - hr = IMMDevice_GetId(wasapiDeviceInfo->device, &deviceId); - IF_FAILED_INTERNAL_ERROR_JUMP(hr, result, error); - - wcsncpy(wasapiDeviceInfo->deviceId, deviceId, PA_WASAPI_DEVICE_ID_LEN - 1); - CoTaskMemFree(deviceId); - } - - // Get state of the device - hr = IMMDevice_GetState(wasapiDeviceInfo->device, &wasapiDeviceInfo->state); - IF_FAILED_INTERNAL_ERROR_JUMP(hr, result, error); - if (wasapiDeviceInfo->state != DEVICE_STATE_ACTIVE) - { - PRINT(("WASAPI device: %d is not currently available (state:%d)\n", index, wasapiDeviceInfo->state)); - } - - // Get basic device info - { - IPropertyStore *pProperty; - IMMEndpoint *endpoint; - PROPVARIANT value; - - hr = IMMDevice_OpenPropertyStore(wasapiDeviceInfo->device, STGM_READ, &pProperty); - IF_FAILED_INTERNAL_ERROR_JUMP(hr, result, error); - - // "Friendly" Name - { - PropVariantInit(&value); - - hr = IPropertyStore_GetValue(pProperty, &PKEY_Device_FriendlyName, &value); - IF_FAILED_INTERNAL_ERROR_JUMP(hr, result, error); - - if ((deviceInfo->name = (char *)PaUtil_GroupAllocateMemory(paWasapi->allocations, PA_WASAPI_DEVICE_NAME_LEN)) == NULL) - { - result = paInsufficientMemory; - PropVariantClear(&value); - goto error; - } - if (value.pwszVal) - WideCharToMultiByte(CP_UTF8, 0, value.pwszVal, (INT32)wcslen(value.pwszVal), (char *)deviceInfo->name, PA_WASAPI_DEVICE_NAME_LEN - 1, 0, 0); - else - _snprintf((char *)deviceInfo->name, PA_WASAPI_DEVICE_NAME_LEN - 1, "baddev%d", index); - - PropVariantClear(&value); - - PA_DEBUG(("WASAPI:%d| name[%s]\n", index, deviceInfo->name)); - } - - // Default format - { - PropVariantInit(&value); - - hr = IPropertyStore_GetValue(pProperty, &PKEY_AudioEngine_DeviceFormat, &value); - IF_FAILED_INTERNAL_ERROR_JUMP(hr, result, error); - - memcpy(&wasapiDeviceInfo->DefaultFormat, value.blob.pBlobData, min(sizeof(wasapiDeviceInfo->DefaultFormat), value.blob.cbSize)); - - PropVariantClear(&value); - } - - // Form factor - { - PropVariantInit(&value); - - hr = IPropertyStore_GetValue(pProperty, &PKEY_AudioEndpoint_FormFactor, &value); - IF_FAILED_INTERNAL_ERROR_JUMP(hr, result, error); - - // set - #if defined(DUMMYUNIONNAME) && defined(NONAMELESSUNION) - // avoid breaking strict-aliasing rules in such line: (EndpointFormFactor)(*((UINT *)(((WORD *)&value.wReserved3)+1))); - UINT v; - memcpy(&v, (((WORD *)&value.wReserved3) + 1), sizeof(v)); - wasapiDeviceInfo->formFactor = (EndpointFormFactor)v; - #else - wasapiDeviceInfo->formFactor = (EndpointFormFactor)value.uintVal; - #endif - - PA_DEBUG(("WASAPI:%d| form-factor[%d]\n", index, wasapiDeviceInfo->formFactor)); - - PropVariantClear(&value); - } - - // Data flow (Renderer or Capture) - hr = IMMDevice_QueryInterface(wasapiDeviceInfo->device, &pa_IID_IMMEndpoint, (void **)&endpoint); - if (SUCCEEDED(hr)) - { - hr = IMMEndpoint_GetDataFlow(endpoint, &wasapiDeviceInfo->flow); - SAFE_RELEASE(endpoint); - } - - SAFE_RELEASE(pProperty); - } -#else - // Set device Id - wcsncpy(wasapiDeviceInfo->deviceId, listEntry->info->id, PA_WASAPI_DEVICE_ID_LEN - 1); - - // Set device name - if ((deviceInfo->name = (char *)PaUtil_GroupAllocateMemory(paWasapi->allocations, PA_WASAPI_DEVICE_NAME_LEN)) == NULL) - { - result = paInsufficientMemory; - goto error; - } - ((char *)deviceInfo->name)[0] = 0; - if (listEntry->info->name[0] != 0) - WideCharToMultiByte(CP_UTF8, 0, listEntry->info->name, (INT32)wcslen(listEntry->info->name), (char *)deviceInfo->name, PA_WASAPI_DEVICE_NAME_LEN - 1, 0, 0); - if (deviceInfo->name[0] == 0) // fallback if WideCharToMultiByte is failed, or listEntry is nameless - _snprintf((char *)deviceInfo->name, PA_WASAPI_DEVICE_NAME_LEN - 1, "WASAPI_%s:%d", (listEntry->flow == eRender ? "Output" : "Input"), index); - - // Form-factor - wasapiDeviceInfo->formFactor = listEntry->info->formFactor; - - // Set data flow - wasapiDeviceInfo->flow = listEntry->flow; -#endif - - // Set default Output/Input devices - if ((defaultRenderId != NULL) && (wcsncmp(wasapiDeviceInfo->deviceId, defaultRenderId, PA_WASAPI_DEVICE_NAME_LEN - 1) == 0)) - hostApi->info.defaultOutputDevice = hostApi->info.deviceCount; - if ((defaultCaptureId != NULL) && (wcsncmp(wasapiDeviceInfo->deviceId, defaultCaptureId, PA_WASAPI_DEVICE_NAME_LEN - 1) == 0)) - hostApi->info.defaultInputDevice = hostApi->info.deviceCount; - - // Get a temporary IAudioClient for more details - { - IAudioClient *tmpClient; - WAVEFORMATEX *mixFormat; - - hr = ActivateAudioInterface(wasapiDeviceInfo, NULL, &tmpClient); - IF_FAILED_INTERNAL_ERROR_JUMP(hr, result, error); - - // Get latency - hr = IAudioClient_GetDevicePeriod(tmpClient, &wasapiDeviceInfo->DefaultDevicePeriod, &wasapiDeviceInfo->MinimumDevicePeriod); - if (FAILED(hr)) - { - PA_DEBUG(("WASAPI:%d| failed getting min/default periods by IAudioClient::GetDevicePeriod() with error[%08X], will use 30000/100000 hns\n", index, (UINT32)hr)); - - // assign WASAPI common values - wasapiDeviceInfo->DefaultDevicePeriod = 100000; - wasapiDeviceInfo->MinimumDevicePeriod = 30000; - - // ignore error, let continue further without failing with paInternalError - hr = S_OK; - } - - // Get mix format - hr = IAudioClient_GetMixFormat(tmpClient, &mixFormat); - if (SUCCEEDED(hr)) - { - memcpy(&wasapiDeviceInfo->MixFormat, mixFormat, min(sizeof(wasapiDeviceInfo->MixFormat), (sizeof(*mixFormat) + mixFormat->cbSize))); - CoTaskMemFree(mixFormat); - } - - // Register WINRT device - #ifdef PA_WINRT - if (SUCCEEDED(hr)) - { - // Set state - wasapiDeviceInfo->state = DEVICE_STATE_ACTIVE; - - // Default format (Shared mode) is always a mix format - wasapiDeviceInfo->DefaultFormat = wasapiDeviceInfo->MixFormat; - } - #endif - - // Release tmp client - SAFE_RELEASE(tmpClient); - - if (hr != S_OK) - { - //davidv: this happened with my hardware, previously for that same device in DirectSound: - //Digital Output (Realtek AC'97 Audio)'s GUID: {0x38f2cf50,0x7b4c,0x4740,0x86,0xeb,0xd4,0x38,0x66,0xd8,0xc8, 0x9f} - //so something must be _really_ wrong with this device, TODO handle this better. We kind of need GetMixFormat - LogHostError(hr); - result = paInternalError; - goto error; - } - } - - // Fill basic device data - deviceInfo->maxInputChannels = 0; - deviceInfo->maxOutputChannels = 0; - deviceInfo->defaultSampleRate = wasapiDeviceInfo->MixFormat.Format.nSamplesPerSec; - switch (wasapiDeviceInfo->flow) - { - case eRender: { - deviceInfo->maxOutputChannels = wasapiDeviceInfo->MixFormat.Format.nChannels; - deviceInfo->defaultHighOutputLatency = nano100ToSeconds(wasapiDeviceInfo->DefaultDevicePeriod); - deviceInfo->defaultLowOutputLatency = nano100ToSeconds(wasapiDeviceInfo->MinimumDevicePeriod); - PA_DEBUG(("WASAPI:%d| def.SR[%d] max.CH[%d] latency{hi[%f] lo[%f]}\n", index, (UINT32)deviceInfo->defaultSampleRate, - deviceInfo->maxOutputChannels, (float)deviceInfo->defaultHighOutputLatency, (float)deviceInfo->defaultLowOutputLatency)); - break;} - case eCapture: { - deviceInfo->maxInputChannels = wasapiDeviceInfo->MixFormat.Format.nChannels; - deviceInfo->defaultHighInputLatency = nano100ToSeconds(wasapiDeviceInfo->DefaultDevicePeriod); - deviceInfo->defaultLowInputLatency = nano100ToSeconds(wasapiDeviceInfo->MinimumDevicePeriod); - PA_DEBUG(("WASAPI:%d| def.SR[%d] max.CH[%d] latency{hi[%f] lo[%f]}\n", index, (UINT32)deviceInfo->defaultSampleRate, - deviceInfo->maxInputChannels, (float)deviceInfo->defaultHighInputLatency, (float)deviceInfo->defaultLowInputLatency)); - break; } - default: - PRINT(("WASAPI:%d| bad Data Flow!\n", index)); - result = paInternalError; - goto error; - } - - return paNoError; - -error: - - PRINT(("WASAPI: failed filling device info for device index[%d] - error[%d|%s]\n", index, result, Pa_GetErrorText(result))); - - return result; -} - -// ------------------------------------------------------------------------------------------ -static PaDeviceInfo *AllocateDeviceListMemory(PaWasapiHostApiRepresentation *paWasapi) -{ - PaUtilHostApiRepresentation *hostApi = (PaUtilHostApiRepresentation *)paWasapi; - PaDeviceInfo *deviceInfoArray = NULL; - - if ((paWasapi->devInfo = (PaWasapiDeviceInfo *)PaUtil_GroupAllocateMemory(paWasapi->allocations, - sizeof(PaWasapiDeviceInfo) * paWasapi->deviceCount)) == NULL) - { - return NULL; - } - memset(paWasapi->devInfo, 0, sizeof(PaWasapiDeviceInfo) * paWasapi->deviceCount); - - if (paWasapi->deviceCount != 0) - { - UINT32 i; - UINT32 deviceCount = paWasapi->deviceCount; - #if defined(PA_WASAPI_MAX_CONST_DEVICE_COUNT) && (PA_WASAPI_MAX_CONST_DEVICE_COUNT > 0) - if (deviceCount < PA_WASAPI_MAX_CONST_DEVICE_COUNT) - deviceCount = PA_WASAPI_MAX_CONST_DEVICE_COUNT; - #endif - - if ((hostApi->deviceInfos = (PaDeviceInfo **)PaUtil_GroupAllocateMemory(paWasapi->allocations, - sizeof(PaDeviceInfo *) * deviceCount)) == NULL) - { - return NULL; - } - for (i = 0; i < deviceCount; ++i) - hostApi->deviceInfos[i] = NULL; - - // Allocate all device info structs in a contiguous block - if ((deviceInfoArray = (PaDeviceInfo *)PaUtil_GroupAllocateMemory(paWasapi->allocations, - sizeof(PaDeviceInfo) * deviceCount)) == NULL) - { - return NULL; - } - memset(deviceInfoArray, 0, sizeof(PaDeviceInfo) * deviceCount); - } - - return deviceInfoArray; -} - -// ------------------------------------------------------------------------------------------ -static PaError CreateDeviceList(PaWasapiHostApiRepresentation *paWasapi, PaHostApiIndex hostApiIndex) -{ - PaUtilHostApiRepresentation *hostApi = (PaUtilHostApiRepresentation *)paWasapi; - PaError result = paNoError; - PaDeviceInfo *deviceInfoArray = NULL; - UINT32 i; - WCHAR *defaultRenderId = NULL; - WCHAR *defaultCaptureId = NULL; -#ifndef PA_WINRT - HRESULT hr; - IMMDeviceCollection *pEndPoints = NULL; - IMMDeviceEnumerator *pEnumerator = NULL; -#else - void *pEndPoints = NULL; - IAudioClient *tmpClient; - PaWasapiWinrtDeviceListContext deviceListContext = { 0 }; - PaWasapiWinrtDeviceInfo defaultRender = { 0 }; - PaWasapiWinrtDeviceInfo defaultCapture = { 0 }; -#endif - - // Make sure device list empty - if ((paWasapi->deviceCount != 0) || (hostApi->info.deviceCount != 0)) - return paInternalError; - -#ifndef PA_WINRT - hr = CoCreateInstance(&pa_CLSID_IMMDeviceEnumerator, NULL, CLSCTX_INPROC_SERVER, - &pa_IID_IMMDeviceEnumerator, (void **)&pEnumerator); - IF_FAILED_INTERNAL_ERROR_JUMP(hr, result, error); - - // Get default render and capture devices - { - IMMDevice *device; - - hr = IMMDeviceEnumerator_GetDefaultAudioEndpoint(pEnumerator, eRender, eMultimedia, &device); - if (hr != S_OK) - { - if (hr != E_NOTFOUND) - { - IF_FAILED_INTERNAL_ERROR_JUMP(hr, result, error); - } - } - else - { - hr = IMMDevice_GetId(device, &defaultRenderId); - IMMDevice_Release(device); - IF_FAILED_INTERNAL_ERROR_JUMP(hr, result, error); - } - - hr = IMMDeviceEnumerator_GetDefaultAudioEndpoint(pEnumerator, eCapture, eMultimedia, &device); - if (hr != S_OK) - { - if (hr != E_NOTFOUND) - { - IF_FAILED_INTERNAL_ERROR_JUMP(hr, result, error); - } - } - else - { - hr = IMMDevice_GetId(device, &defaultCaptureId); - IMMDevice_Release(device); - IF_FAILED_INTERNAL_ERROR_JUMP(hr, result, error); - } - } - - // Get all currently active devices - hr = IMMDeviceEnumerator_EnumAudioEndpoints(pEnumerator, eAll, DEVICE_STATE_ACTIVE, &pEndPoints); - IF_FAILED_INTERNAL_ERROR_JUMP(hr, result, error); - - // Get device count - hr = IMMDeviceCollection_GetCount(pEndPoints, &paWasapi->deviceCount); - IF_FAILED_INTERNAL_ERROR_JUMP(hr, result, error); -#else - WinRT_GetDefaultDeviceId(defaultRender.id, STATIC_ARRAY_SIZE(defaultRender.id) - 1, eRender); - defaultRenderId = defaultRender.id; - - WinRT_GetDefaultDeviceId(defaultCapture.id, STATIC_ARRAY_SIZE(defaultCapture.id) - 1, eCapture); - defaultCaptureId = defaultCapture.id; - - if (g_DeviceListInfo.render.deviceCount == 0) - { - if (SUCCEEDED(WinRT_ActivateAudioInterface(defaultRenderId, GetAudioClientIID(), &tmpClient))) - { - deviceListContext.devices[paWasapi->deviceCount].info = &defaultRender; - deviceListContext.devices[paWasapi->deviceCount].flow = eRender; - paWasapi->deviceCount++; - - SAFE_RELEASE(tmpClient); - } - } - else - { - for (i = 0; i < g_DeviceListInfo.render.deviceCount; ++i) - { - deviceListContext.devices[paWasapi->deviceCount].info = &g_DeviceListInfo.render.devices[i]; - deviceListContext.devices[paWasapi->deviceCount].flow = eRender; - paWasapi->deviceCount++; - } - } - - if (g_DeviceListInfo.capture.deviceCount == 0) - { - if (SUCCEEDED(WinRT_ActivateAudioInterface(defaultCaptureId, GetAudioClientIID(), &tmpClient))) - { - deviceListContext.devices[paWasapi->deviceCount].info = &defaultCapture; - deviceListContext.devices[paWasapi->deviceCount].flow = eCapture; - paWasapi->deviceCount++; - - SAFE_RELEASE(tmpClient); - } - } - else - { - for (i = 0; i < g_DeviceListInfo.capture.deviceCount; ++i) - { - deviceListContext.devices[paWasapi->deviceCount].info = &g_DeviceListInfo.capture.devices[i]; - deviceListContext.devices[paWasapi->deviceCount].flow = eCapture; - paWasapi->deviceCount++; - } - } -#endif - - // Allocate memory for the device list - if ((paWasapi->deviceCount != 0) && ((deviceInfoArray = AllocateDeviceListMemory(paWasapi)) == NULL)) - { - result = paInsufficientMemory; - goto error; - } - - // Fill WASAPI device info - for (i = 0; i < paWasapi->deviceCount; ++i) - { - PaDeviceInfo *deviceInfo = &deviceInfoArray[i]; - - PA_DEBUG(("WASAPI: device idx: %02d\n", i)); - PA_DEBUG(("WASAPI: ---------------\n")); - - FillBaseDeviceInfo(deviceInfo, hostApiIndex); - - if ((result = FillDeviceInfo(paWasapi, pEndPoints, i, defaultRenderId, defaultCaptureId, - deviceInfo, &paWasapi->devInfo[i] - #ifdef PA_WINRT - , &deviceListContext - #endif - )) != paNoError) - { - // Faulty device is made inactive - if ((result = FillInactiveDeviceInfo(paWasapi, deviceInfo)) != paNoError) - goto error; - } - - hostApi->deviceInfos[i] = deviceInfo; - ++hostApi->info.deviceCount; - } - - // Fill the remaining slots with inactive device info -#if defined(PA_WASAPI_MAX_CONST_DEVICE_COUNT) && (PA_WASAPI_MAX_CONST_DEVICE_COUNT > 0) - if ((hostApi->info.deviceCount != 0) && (hostApi->info.deviceCount < PA_WASAPI_MAX_CONST_DEVICE_COUNT)) - { - for (i = hostApi->info.deviceCount; i < PA_WASAPI_MAX_CONST_DEVICE_COUNT; ++i) - { - PaDeviceInfo *deviceInfo = &deviceInfoArray[i]; - - FillBaseDeviceInfo(deviceInfo, hostApiIndex); - - if ((result = FillInactiveDeviceInfo(paWasapi, deviceInfo)) != paNoError) - goto error; - - hostApi->deviceInfos[i] = deviceInfo; - ++hostApi->info.deviceCount; - } - } -#endif - - // Clear any non-fatal errors - result = paNoError; - - PRINT(("WASAPI: device list ok - found %d devices\n", paWasapi->deviceCount)); - -done: - -#ifndef PA_WINRT - CoTaskMemFree(defaultRenderId); - CoTaskMemFree(defaultCaptureId); - SAFE_RELEASE(pEndPoints); - SAFE_RELEASE(pEnumerator); -#endif - - return result; - -error: - - // Safety if error was not set so that we do not think initialize was a success - if (result == paNoError) - result = paInternalError; - - PRINT(("WASAPI: failed to create device list - error[%d|%s]\n", result, Pa_GetErrorText(result))); - - goto done; -} - -// ------------------------------------------------------------------------------------------ -PaError PaWasapi_Initialize( PaUtilHostApiRepresentation **hostApi, PaHostApiIndex hostApiIndex ) -{ - PaError result; - PaWasapiHostApiRepresentation *paWasapi; - -#ifndef PA_WINRT - if (!SetupAVRT()) - { - PRINT(("WASAPI: No AVRT! (not VISTA?)\n")); - return paNoError; - } -#endif - - paWasapi = (PaWasapiHostApiRepresentation *)PaUtil_AllocateMemory(sizeof(PaWasapiHostApiRepresentation)); - if (paWasapi == NULL) - { - result = paInsufficientMemory; - goto error; - } - memset(paWasapi, 0, sizeof(PaWasapiHostApiRepresentation)); /* ensure all fields are zeroed. especially paWasapi->allocations */ - - // Initialize COM subsystem - result = PaWinUtil_CoInitialize(paWASAPI, &paWasapi->comInitializationResult); - if (result != paNoError) - goto error; - - // Create memory group - paWasapi->allocations = PaUtil_CreateAllocationGroup(); - if (paWasapi->allocations == NULL) - { - result = paInsufficientMemory; - goto error; - } - - // Fill basic interface info - *hostApi = &paWasapi->inheritedHostApiRep; - (*hostApi)->info.structVersion = 1; - (*hostApi)->info.type = paWASAPI; - (*hostApi)->info.name = "Windows WASAPI"; - (*hostApi)->info.deviceCount = 0; - (*hostApi)->info.defaultInputDevice = paNoDevice; - (*hostApi)->info.defaultOutputDevice = paNoDevice; - (*hostApi)->Terminate = Terminate; - (*hostApi)->OpenStream = OpenStream; - (*hostApi)->IsFormatSupported = IsFormatSupported; - - // Fill the device list - if ((result = CreateDeviceList(paWasapi, hostApiIndex)) != paNoError) - goto error; - - // Detect if platform workaround is required - paWasapi->useWOW64Workaround = UseWOW64Workaround(); - - // Initialize time getter - SystemTimer_InitializeTimeGetter(); - - PaUtil_InitializeStreamInterface( &paWasapi->callbackStreamInterface, CloseStream, StartStream, - StopStream, AbortStream, IsStreamStopped, IsStreamActive, - GetStreamTime, GetStreamCpuLoad, - PaUtil_DummyRead, PaUtil_DummyWrite, - PaUtil_DummyGetReadAvailable, PaUtil_DummyGetWriteAvailable ); - - PaUtil_InitializeStreamInterface( &paWasapi->blockingStreamInterface, CloseStream, StartStream, - StopStream, AbortStream, IsStreamStopped, IsStreamActive, - GetStreamTime, PaUtil_DummyGetCpuLoad, - ReadStream, WriteStream, GetStreamReadAvailable, GetStreamWriteAvailable ); - - PRINT(("WASAPI: initialized ok\n")); - - return paNoError; - -error: - - PRINT(("WASAPI: failed %s error[%d|%s]\n", __FUNCTION__, result, Pa_GetErrorText(result))); - - Terminate((PaUtilHostApiRepresentation *)paWasapi); - - return result; -} - -// ------------------------------------------------------------------------------------------ -static void ReleaseWasapiDeviceInfoList( PaWasapiHostApiRepresentation *paWasapi ) -{ - UINT32 i; - - // Release device info bound objects - for (i = 0; i < paWasapi->deviceCount; ++i) - { - #ifndef PA_WINRT - SAFE_RELEASE(paWasapi->devInfo[i].device); - #endif - } - - // Free device info - if (paWasapi->allocations != NULL) - PaUtil_GroupFreeMemory(paWasapi->allocations, paWasapi->devInfo); - - // Be ready for a device list reinitialization and if its creation is failed pointers must not be dangling - paWasapi->devInfo = NULL; - paWasapi->deviceCount = 0; -} - -// ------------------------------------------------------------------------------------------ -static void Terminate( PaUtilHostApiRepresentation *hostApi ) -{ - PaWasapiHostApiRepresentation *paWasapi = (PaWasapiHostApiRepresentation*)hostApi; - if (paWasapi == NULL) - return; - - // Release device list - ReleaseWasapiDeviceInfoList(paWasapi); - - // Free allocations and memory group itself - if (paWasapi->allocations != NULL) - { - PaUtil_FreeAllAllocations(paWasapi->allocations); - PaUtil_DestroyAllocationGroup(paWasapi->allocations); - } - - // Release COM subsystem - PaWinUtil_CoUninitialize(paWASAPI, &paWasapi->comInitializationResult); - - // Free API representation - PaUtil_FreeMemory(paWasapi); - - // Close AVRT - CloseAVRT(); -} - -// ------------------------------------------------------------------------------------------ -static PaWasapiHostApiRepresentation *_GetHostApi(PaError *ret) -{ - PaError error; - PaUtilHostApiRepresentation *pApi; - - if ((error = PaUtil_GetHostApiRepresentation(&pApi, paWASAPI)) != paNoError) - { - if (ret != NULL) - (*ret) = error; - - return NULL; - } - - return (PaWasapiHostApiRepresentation *)pApi; -} - -// ------------------------------------------------------------------------------------------ -static PaError UpdateDeviceList() -{ - int i; - PaError ret; - PaWasapiHostApiRepresentation *paWasapi; - PaUtilHostApiRepresentation *hostApi; - - // Get API - hostApi = (PaUtilHostApiRepresentation *)(paWasapi = _GetHostApi(&ret)); - if (paWasapi == NULL) - return paNotInitialized; - - // Make sure initialized properly - if (paWasapi->allocations == NULL) - return paNotInitialized; - - // Release WASAPI internal device info list - ReleaseWasapiDeviceInfoList(paWasapi); - - // Release external device info list - if (hostApi->deviceInfos != NULL) - { - for (i = 0; i < hostApi->info.deviceCount; ++i) - { - PaUtil_GroupFreeMemory(paWasapi->allocations, (void *)hostApi->deviceInfos[i]->name); - } - PaUtil_GroupFreeMemory(paWasapi->allocations, hostApi->deviceInfos[0]); - PaUtil_GroupFreeMemory(paWasapi->allocations, hostApi->deviceInfos); - - // Be ready for a device list reinitialization and if its creation is failed pointers must not be dangling - hostApi->deviceInfos = NULL; - hostApi->info.deviceCount = 0; - hostApi->info.defaultInputDevice = paNoDevice; - hostApi->info.defaultOutputDevice = paNoDevice; - } - - // Fill possibly updated device list - if ((ret = CreateDeviceList(paWasapi, Pa_HostApiTypeIdToHostApiIndex(paWASAPI))) != paNoError) - return ret; - - return paNoError; -} - -// ------------------------------------------------------------------------------------------ -PaError PaWasapi_UpdateDeviceList() -{ -#if defined(PA_WASAPI_MAX_CONST_DEVICE_COUNT) && (PA_WASAPI_MAX_CONST_DEVICE_COUNT > 0) - return UpdateDeviceList(); -#else - return paInternalError; -#endif -} - -// ------------------------------------------------------------------------------------------ -int PaWasapi_GetDeviceCurrentFormat( PaStream *pStream, void *pFormat, unsigned int formatSize, int bOutput ) -{ - UINT32 size; - WAVEFORMATEXTENSIBLE *format; - - PaWasapiStream *stream = (PaWasapiStream *)pStream; - if (stream == NULL) - return paBadStreamPtr; - - format = (bOutput == TRUE ? &stream->out.wavex : &stream->in.wavex); - - size = min(formatSize, (UINT32)sizeof(*format)); - memcpy(pFormat, format, size); - - return size; -} - -// ------------------------------------------------------------------------------------------ -static PaError _GetWasapiDeviceInfoByDeviceIndex( PaWasapiDeviceInfo **info, PaDeviceIndex device ) -{ - PaError ret; - PaDeviceIndex index; - - // Get API - PaWasapiHostApiRepresentation *paWasapi = _GetHostApi(&ret); - if (paWasapi == NULL) - return paNotInitialized; - - // Get device index - if ((ret = PaUtil_DeviceIndexToHostApiDeviceIndex(&index, device, &paWasapi->inheritedHostApiRep)) != paNoError) - return ret; - - // Validate index - if ((UINT32)index >= paWasapi->deviceCount) - return paInvalidDevice; - - (*info) = &paWasapi->devInfo[ index ]; - - return paNoError; -} - -// ------------------------------------------------------------------------------------------ -int PaWasapi_GetDeviceDefaultFormat( void *pFormat, unsigned int formatSize, PaDeviceIndex device ) -{ - PaError ret; - PaWasapiDeviceInfo *deviceInfo; - UINT32 size; - - if (pFormat == NULL) - return paBadBufferPtr; - if (formatSize <= 0) - return paBufferTooSmall; - - if ((ret = _GetWasapiDeviceInfoByDeviceIndex(&deviceInfo, device)) != paNoError) - return ret; - - size = min(formatSize, (UINT32)sizeof(deviceInfo->DefaultFormat)); - memcpy(pFormat, &deviceInfo->DefaultFormat, size); - - return size; -} - -// ------------------------------------------------------------------------------------------ -int PaWasapi_GetDeviceMixFormat( void *pFormat, unsigned int formatSize, PaDeviceIndex device ) -{ - PaError ret; - PaWasapiDeviceInfo *deviceInfo; - UINT32 size; - - if (pFormat == NULL) - return paBadBufferPtr; - if (formatSize <= 0) - return paBufferTooSmall; - - if ((ret = _GetWasapiDeviceInfoByDeviceIndex(&deviceInfo, device)) != paNoError) - return ret; - - size = min(formatSize, (UINT32)sizeof(deviceInfo->MixFormat)); - memcpy(pFormat, &deviceInfo->MixFormat, size); - - return size; -} - -// ------------------------------------------------------------------------------------------ -int PaWasapi_GetDeviceRole( PaDeviceIndex device ) -{ - PaError ret; - PaWasapiDeviceInfo *deviceInfo; - - if ((ret = _GetWasapiDeviceInfoByDeviceIndex(&deviceInfo, device)) != paNoError) - return ret; - - return deviceInfo->formFactor; -} - -// ------------------------------------------------------------------------------------------ -PaError PaWasapi_GetIMMDevice( PaDeviceIndex device, void **pIMMDevice ) -{ -#ifndef PA_WINRT - PaError ret; - PaWasapiDeviceInfo *deviceInfo; - - if (pIMMDevice == NULL) - return paBadBufferPtr; - - if ((ret = _GetWasapiDeviceInfoByDeviceIndex(&deviceInfo, device)) != paNoError) - return ret; - - (*pIMMDevice) = deviceInfo->device; - - return paNoError; -#else - (void)device; - (void)pIMMDevice; - return paIncompatibleStreamHostApi; -#endif -} - -// ------------------------------------------------------------------------------------------ -PaError PaWasapi_GetFramesPerHostBuffer( PaStream *pStream, unsigned int *pInput, unsigned int *pOutput ) -{ - PaWasapiStream *stream = (PaWasapiStream *)pStream; - if (stream == NULL) - return paBadStreamPtr; - - if (pInput != NULL) - (*pInput) = stream->in.framesPerHostCallback; - - if (pOutput != NULL) - (*pOutput) = stream->out.framesPerHostCallback; - - return paNoError; -} - -// ------------------------------------------------------------------------------------------ -static void LogWAVEFORMATEXTENSIBLE(const WAVEFORMATEXTENSIBLE *in) -{ - const WAVEFORMATEX *old = (WAVEFORMATEX *)in; - switch (old->wFormatTag) - { - case WAVE_FORMAT_EXTENSIBLE: { - - PRINT(("wFormatTag =WAVE_FORMAT_EXTENSIBLE\n")); - - if (IsEqualGUID(&in->SubFormat, &pa_KSDATAFORMAT_SUBTYPE_IEEE_FLOAT)) - { - PRINT(("SubFormat =KSDATAFORMAT_SUBTYPE_IEEE_FLOAT\n")); - } - else - if (IsEqualGUID(&in->SubFormat, &pa_KSDATAFORMAT_SUBTYPE_PCM)) - { - PRINT(("SubFormat =KSDATAFORMAT_SUBTYPE_PCM\n")); - } - else - { - PRINT(("SubFormat =CUSTOM GUID{%d:%d:%d:%d%d%d%d%d%d%d%d}\n", - in->SubFormat.Data1, - in->SubFormat.Data2, - in->SubFormat.Data3, - (int)in->SubFormat.Data4[0], - (int)in->SubFormat.Data4[1], - (int)in->SubFormat.Data4[2], - (int)in->SubFormat.Data4[3], - (int)in->SubFormat.Data4[4], - (int)in->SubFormat.Data4[5], - (int)in->SubFormat.Data4[6], - (int)in->SubFormat.Data4[7])); - } - PRINT(("Samples.wValidBitsPerSample =%d\n", in->Samples.wValidBitsPerSample)); - PRINT(("dwChannelMask =0x%X\n",in->dwChannelMask)); - - break; } - - case WAVE_FORMAT_PCM: PRINT(("wFormatTag =WAVE_FORMAT_PCM\n")); break; - case WAVE_FORMAT_IEEE_FLOAT: PRINT(("wFormatTag =WAVE_FORMAT_IEEE_FLOAT\n")); break; - default: - PRINT(("wFormatTag =UNKNOWN(%d)\n",old->wFormatTag)); break; - } - - PRINT(("nChannels =%d\n",old->nChannels)); - PRINT(("nSamplesPerSec =%d\n",old->nSamplesPerSec)); - PRINT(("nAvgBytesPerSec=%d\n",old->nAvgBytesPerSec)); - PRINT(("nBlockAlign =%d\n",old->nBlockAlign)); - PRINT(("wBitsPerSample =%d\n",old->wBitsPerSample)); - PRINT(("cbSize =%d\n",old->cbSize)); -} - -// ------------------------------------------------------------------------------------------ -PaSampleFormat WaveToPaFormat(const WAVEFORMATEXTENSIBLE *fmtext) -{ - const WAVEFORMATEX *fmt = (WAVEFORMATEX *)fmtext; - - switch (fmt->wFormatTag) - { - case WAVE_FORMAT_EXTENSIBLE: { - if (IsEqualGUID(&fmtext->SubFormat, &pa_KSDATAFORMAT_SUBTYPE_IEEE_FLOAT)) - { - if (fmtext->Samples.wValidBitsPerSample == 32) - return paFloat32; - } - else - if (IsEqualGUID(&fmtext->SubFormat, &pa_KSDATAFORMAT_SUBTYPE_PCM)) - { - switch (fmt->wBitsPerSample) - { - case 32: return paInt32; - case 24: return paInt24; - case 16: return paInt16; - case 8: return paUInt8; - } - } - break; } - - case WAVE_FORMAT_IEEE_FLOAT: - return paFloat32; - - case WAVE_FORMAT_PCM: { - switch (fmt->wBitsPerSample) - { - case 32: return paInt32; - case 24: return paInt24; - case 16: return paInt16; - case 8: return paUInt8; - } - break; } - } - - return paCustomFormat; -} - -// ------------------------------------------------------------------------------------------ -static PaError MakeWaveFormatFromParams(WAVEFORMATEXTENSIBLE *wavex, const PaStreamParameters *params, - double sampleRate, BOOL packedOnly) -{ - WORD bitsPerSample; - WAVEFORMATEX *old; - DWORD channelMask = 0; - BOOL useExtensible = (params->channelCount > 2); // format is always forced for >2 channels format - PaWasapiStreamInfo *streamInfo = (PaWasapiStreamInfo *)params->hostApiSpecificStreamInfo; - - // Convert PaSampleFormat to valid data bits - if ((bitsPerSample = PaSampleFormatToBitsPerSample(params->sampleFormat)) == 0) - return paSampleFormatNotSupported; - - // Use user assigned channel mask - if ((streamInfo != NULL) && (streamInfo->flags & paWinWasapiUseChannelMask)) - { - channelMask = streamInfo->channelMask; - useExtensible = TRUE; - } - - memset(wavex, 0, sizeof(*wavex)); - - old = (WAVEFORMATEX *)wavex; - old->nChannels = (WORD)params->channelCount; - old->nSamplesPerSec = (DWORD)sampleRate; - old->wBitsPerSample = bitsPerSample; - - // according to MSDN for WAVEFORMATEX structure for WAVE_FORMAT_PCM: - // "If wFormatTag is WAVE_FORMAT_PCM, then wBitsPerSample should be equal to 8 or 16." - if ((bitsPerSample != 8) && (bitsPerSample != 16)) - { - // Normally 20 or 24 bits must go in 32 bit containers (ints) but in Exclusive mode some devices require - // packed version of the format, e.g. for example 24-bit in 3-bytes - old->wBitsPerSample = (packedOnly ? bitsPerSample : 32); - useExtensible = TRUE; - } - - // WAVEFORMATEX - if (!useExtensible) - { - old->wFormatTag = WAVE_FORMAT_PCM; - } - // WAVEFORMATEXTENSIBLE - else - { - old->wFormatTag = WAVE_FORMAT_EXTENSIBLE; - old->cbSize = sizeof(WAVEFORMATEXTENSIBLE) - sizeof(WAVEFORMATEX); - - if ((params->sampleFormat & ~paNonInterleaved) == paFloat32) - wavex->SubFormat = pa_KSDATAFORMAT_SUBTYPE_IEEE_FLOAT; - else - wavex->SubFormat = pa_KSDATAFORMAT_SUBTYPE_PCM; - - wavex->Samples.wValidBitsPerSample = bitsPerSample; - - // Set channel mask - if (channelMask != 0) - { - wavex->dwChannelMask = channelMask; - } - else - { - switch (params->channelCount) - { - case 1: wavex->dwChannelMask = PAWIN_SPEAKER_MONO; break; - case 2: wavex->dwChannelMask = PAWIN_SPEAKER_STEREO; break; - case 3: wavex->dwChannelMask = PAWIN_SPEAKER_STEREO|SPEAKER_LOW_FREQUENCY; break; - case 4: wavex->dwChannelMask = PAWIN_SPEAKER_QUAD; break; - case 5: wavex->dwChannelMask = PAWIN_SPEAKER_QUAD|SPEAKER_LOW_FREQUENCY; break; -#ifdef PAWIN_SPEAKER_5POINT1_SURROUND - case 6: wavex->dwChannelMask = PAWIN_SPEAKER_5POINT1_SURROUND; break; -#else - case 6: wavex->dwChannelMask = PAWIN_SPEAKER_5POINT1; break; -#endif -#ifdef PAWIN_SPEAKER_5POINT1_SURROUND - case 7: wavex->dwChannelMask = PAWIN_SPEAKER_5POINT1_SURROUND|SPEAKER_BACK_CENTER; break; -#else - case 7: wavex->dwChannelMask = PAWIN_SPEAKER_5POINT1|SPEAKER_BACK_CENTER; break; -#endif -#ifdef PAWIN_SPEAKER_7POINT1_SURROUND - case 8: wavex->dwChannelMask = PAWIN_SPEAKER_7POINT1_SURROUND; break; -#else - case 8: wavex->dwChannelMask = PAWIN_SPEAKER_7POINT1; break; -#endif - - default: wavex->dwChannelMask = 0; - } - } - } - - old->nBlockAlign = old->nChannels * (old->wBitsPerSample / 8); - old->nAvgBytesPerSec = old->nSamplesPerSec * old->nBlockAlign; - - return paNoError; -} - -// ------------------------------------------------------------------------------------------ -static HRESULT GetAlternativeSampleFormatExclusive(IAudioClient *client, double sampleRate, - const PaStreamParameters *params, WAVEFORMATEXTENSIBLE *outWavex, BOOL packedSampleFormatOnly) -{ - HRESULT hr = !S_OK; - AUDCLNT_SHAREMODE shareMode = AUDCLNT_SHAREMODE_EXCLUSIVE; - WAVEFORMATEXTENSIBLE testFormat; - PaStreamParameters testParams; - int i; - static const PaSampleFormat bestToWorst[] = { paInt32, paInt24, paFloat32, paInt16 }; - - // Try combination Stereo (2 channels) and then we will use our custom mono-stereo mixer - if (params->channelCount == 1) - { - testParams = (*params); - testParams.channelCount = 2; - - if (MakeWaveFormatFromParams(&testFormat, &testParams, sampleRate, packedSampleFormatOnly) == paNoError) - { - if ((hr = IAudioClient_IsFormatSupported(client, shareMode, &testFormat.Format, NULL)) == S_OK) - { - (*outWavex) = testFormat; - return hr; - } - } - - // Try selecting suitable sample type - for (i = 0; i < STATIC_ARRAY_SIZE(bestToWorst); ++i) - { - testParams.sampleFormat = bestToWorst[i]; - - if (MakeWaveFormatFromParams(&testFormat, &testParams, sampleRate, packedSampleFormatOnly) == paNoError) - { - if ((hr = IAudioClient_IsFormatSupported(client, shareMode, &testFormat.Format, NULL)) == S_OK) - { - (*outWavex) = testFormat; - return hr; - } - } - } - } - - // Try selecting suitable sample type - testParams = (*params); - for (i = 0; i < STATIC_ARRAY_SIZE(bestToWorst); ++i) - { - testParams.sampleFormat = bestToWorst[i]; - - if (MakeWaveFormatFromParams(&testFormat, &testParams, sampleRate, packedSampleFormatOnly) == paNoError) - { - if ((hr = IAudioClient_IsFormatSupported(client, shareMode, &testFormat.Format, NULL)) == S_OK) - { - (*outWavex) = testFormat; - return hr; - } - } - } - - return hr; -} - -// ------------------------------------------------------------------------------------------ -static PaError GetClosestFormat(IAudioClient *client, double sampleRate, const PaStreamParameters *_params, - AUDCLNT_SHAREMODE shareMode, WAVEFORMATEXTENSIBLE *outWavex, BOOL output) -{ - PaWasapiStreamInfo *streamInfo = (PaWasapiStreamInfo *)_params->hostApiSpecificStreamInfo; - WAVEFORMATEX *sharedClosestMatch = NULL; - HRESULT hr = !S_OK; - PaStreamParameters params = (*_params); - const BOOL explicitFormat = (streamInfo != NULL) && ((streamInfo->flags & paWinWasapiExplicitSampleFormat) == paWinWasapiExplicitSampleFormat); - (void)output; - - /* It was not noticed that 24-bit Input producing no output while device accepts this format. - To fix this issue let's ask for 32-bits and let PA converters convert host 32-bit data - to 24-bit for user-space. The bug concerns Vista, if Windows 7 supports 24-bits for Input - please report to PortAudio developers to exclude Windows 7. - */ - /*if ((params.sampleFormat == paInt24) && (output == FALSE)) - params.sampleFormat = paFloat32;*/ // <<< The silence was due to missing Int32_To_Int24_Dither implementation - - // Try standard approach, e.g. if data is > 16 bits it will be packed into 32-bit containers - MakeWaveFormatFromParams(outWavex, ¶ms, sampleRate, FALSE); - - // If built-in PCM converter requested then shared mode format will always succeed - if ((GetWindowsVersion() >= WINDOWS_7_SERVER2008R2) && - (shareMode == AUDCLNT_SHAREMODE_SHARED) && - ((streamInfo != NULL) && (streamInfo->flags & paWinWasapiAutoConvert))) - return paFormatIsSupported; - - hr = IAudioClient_IsFormatSupported(client, shareMode, &outWavex->Format, (shareMode == AUDCLNT_SHAREMODE_SHARED ? &sharedClosestMatch : NULL)); - - // Exclusive mode can require packed format for some devices - if ((hr != S_OK) && (shareMode == AUDCLNT_SHAREMODE_EXCLUSIVE)) - { - // Enforce packed only format, e.g. data bits will not be packed into 32-bit containers in any case - MakeWaveFormatFromParams(outWavex, ¶ms, sampleRate, TRUE); - hr = IAudioClient_IsFormatSupported(client, shareMode, &outWavex->Format, NULL); - } - - if (hr == S_OK) - { - return paFormatIsSupported; - } - else - if (sharedClosestMatch != NULL) - { - WORD bitsPerSample; - - if (sharedClosestMatch->wFormatTag == WAVE_FORMAT_EXTENSIBLE) - memcpy(outWavex, sharedClosestMatch, sizeof(WAVEFORMATEXTENSIBLE)); - else - memcpy(outWavex, sharedClosestMatch, sizeof(WAVEFORMATEX)); - - CoTaskMemFree(sharedClosestMatch); - sharedClosestMatch = NULL; - - // Validate SampleRate - if ((DWORD)sampleRate != outWavex->Format.nSamplesPerSec) - return paInvalidSampleRate; - - // Validate Channel count - if ((WORD)params.channelCount != outWavex->Format.nChannels) - { - // If mono, then driver does not support 1 channel, we use internal workaround - // of tiny software mixing functionality, e.g. we provide to user buffer 1 channel - // but then mix into 2 for device buffer - if ((params.channelCount == 1) && (outWavex->Format.nChannels == 2)) - return paFormatIsSupported; - else - return paInvalidChannelCount; - } - - // Validate Sample format - if ((bitsPerSample = PaSampleFormatToBitsPerSample(params.sampleFormat)) == 0) - return paSampleFormatNotSupported; - - // Accepted format - return paFormatIsSupported; - } - else - if ((shareMode == AUDCLNT_SHAREMODE_EXCLUSIVE) && !explicitFormat) - { - // Try standard approach, e.g. if data is > 16 bits it will be packed into 32-bit containers - if ((hr = GetAlternativeSampleFormatExclusive(client, sampleRate, ¶ms, outWavex, FALSE)) == S_OK) - return paFormatIsSupported; - - // Enforce packed only format, e.g. data bits will not be packed into 32-bit containers in any case - if ((hr = GetAlternativeSampleFormatExclusive(client, sampleRate, ¶ms, outWavex, TRUE)) == S_OK) - return paFormatIsSupported; - - // Log failure - LogHostError(hr); - } - else - { - // Exclusive mode and requested strict format, WASAPI did not accept this sample format - LogHostError(hr); - } - - return paInvalidSampleRate; -} - -// ------------------------------------------------------------------------------------------ -static PaError IsStreamParamsValid(struct PaUtilHostApiRepresentation *hostApi, - const PaStreamParameters *inputParameters, - const PaStreamParameters *outputParameters, - double sampleRate) -{ - if (hostApi == NULL) - return paHostApiNotFound; - if ((UINT32)sampleRate == 0) - return paInvalidSampleRate; - - if (inputParameters != NULL) - { - /* all standard sample formats are supported by the buffer adapter, - this implementation doesn't support any custom sample formats */ - // Note: paCustomFormat is now 8.24 (24-bits in 32-bit containers) - //if (inputParameters->sampleFormat & paCustomFormat) - // return paSampleFormatNotSupported; - - /* unless alternate device specification is supported, reject the use of - paUseHostApiSpecificDeviceSpecification */ - if (inputParameters->device == paUseHostApiSpecificDeviceSpecification) - return paInvalidDevice; - - /* check that input device can support inputChannelCount */ - if (inputParameters->channelCount > hostApi->deviceInfos[ inputParameters->device ]->maxInputChannels) - return paInvalidChannelCount; - - /* validate inputStreamInfo */ - if (inputParameters->hostApiSpecificStreamInfo) - { - PaWasapiStreamInfo *inputStreamInfo = (PaWasapiStreamInfo *)inputParameters->hostApiSpecificStreamInfo; - if ((inputStreamInfo->size != sizeof(PaWasapiStreamInfo)) || - (inputStreamInfo->version != 1) || - (inputStreamInfo->hostApiType != paWASAPI)) - { - return paIncompatibleHostApiSpecificStreamInfo; - } - } - - return paNoError; - } - - if (outputParameters != NULL) - { - /* all standard sample formats are supported by the buffer adapter, - this implementation doesn't support any custom sample formats */ - // Note: paCustomFormat is now 8.24 (24-bits in 32-bit containers) - //if (outputParameters->sampleFormat & paCustomFormat) - // return paSampleFormatNotSupported; - - /* unless alternate device specification is supported, reject the use of - paUseHostApiSpecificDeviceSpecification */ - if (outputParameters->device == paUseHostApiSpecificDeviceSpecification) - return paInvalidDevice; - - /* check that output device can support outputChannelCount */ - if (outputParameters->channelCount > hostApi->deviceInfos[ outputParameters->device ]->maxOutputChannels) - return paInvalidChannelCount; - - /* validate outputStreamInfo */ - if(outputParameters->hostApiSpecificStreamInfo) - { - PaWasapiStreamInfo *outputStreamInfo = (PaWasapiStreamInfo *)outputParameters->hostApiSpecificStreamInfo; - if ((outputStreamInfo->size != sizeof(PaWasapiStreamInfo)) || - (outputStreamInfo->version != 1) || - (outputStreamInfo->hostApiType != paWASAPI)) - { - return paIncompatibleHostApiSpecificStreamInfo; - } - } - - return paNoError; - } - - return (inputParameters || outputParameters ? paNoError : paInternalError); -} - -// ------------------------------------------------------------------------------------------ -static PaError IsFormatSupported( struct PaUtilHostApiRepresentation *hostApi, - const PaStreamParameters *inputParameters, - const PaStreamParameters *outputParameters, - double sampleRate ) -{ - IAudioClient *tmpClient = NULL; - PaWasapiHostApiRepresentation *paWasapi = (PaWasapiHostApiRepresentation*)hostApi; - PaWasapiStreamInfo *inputStreamInfo = NULL, *outputStreamInfo = NULL; - - // Validate PaStreamParameters - PaError error; - if ((error = IsStreamParamsValid(hostApi, inputParameters, outputParameters, sampleRate)) != paNoError) - return error; - - if (inputParameters != NULL) - { - WAVEFORMATEXTENSIBLE wavex; - HRESULT hr; - PaError answer; - AUDCLNT_SHAREMODE shareMode = AUDCLNT_SHAREMODE_SHARED; - inputStreamInfo = (PaWasapiStreamInfo *)inputParameters->hostApiSpecificStreamInfo; - - if (inputStreamInfo && (inputStreamInfo->flags & paWinWasapiExclusive)) - shareMode = AUDCLNT_SHAREMODE_EXCLUSIVE; - - hr = ActivateAudioInterface(&paWasapi->devInfo[inputParameters->device], inputStreamInfo, &tmpClient); - if (hr != S_OK) - { - LogHostError(hr); - return paInvalidDevice; - } - - answer = GetClosestFormat(tmpClient, sampleRate, inputParameters, shareMode, &wavex, FALSE); - SAFE_RELEASE(tmpClient); - - if (answer != paFormatIsSupported) - return answer; - } - - if (outputParameters != NULL) - { - HRESULT hr; - WAVEFORMATEXTENSIBLE wavex; - PaError answer; - AUDCLNT_SHAREMODE shareMode = AUDCLNT_SHAREMODE_SHARED; - outputStreamInfo = (PaWasapiStreamInfo *)outputParameters->hostApiSpecificStreamInfo; - - if (outputStreamInfo && (outputStreamInfo->flags & paWinWasapiExclusive)) - shareMode = AUDCLNT_SHAREMODE_EXCLUSIVE; - - hr = ActivateAudioInterface(&paWasapi->devInfo[outputParameters->device], outputStreamInfo, &tmpClient); - if (hr != S_OK) - { - LogHostError(hr); - return paInvalidDevice; - } - - answer = GetClosestFormat(tmpClient, sampleRate, outputParameters, shareMode, &wavex, TRUE); - SAFE_RELEASE(tmpClient); - - if (answer != paFormatIsSupported) - return answer; - } - - return paFormatIsSupported; -} - -// ------------------------------------------------------------------------------------------ -static PaUint32 _GetFramesPerHostBuffer(PaUint32 userFramesPerBuffer, PaTime suggestedLatency, double sampleRate, PaUint32 TimerJitterMs) -{ - PaUint32 frames = userFramesPerBuffer + max( userFramesPerBuffer, (PaUint32)(suggestedLatency * sampleRate) ); - frames += (PaUint32)((sampleRate * 0.001) * TimerJitterMs); - return frames; -} - -// ------------------------------------------------------------------------------------------ -static void _RecalculateBuffersCount(PaWasapiSubStream *sub, UINT32 userFramesPerBuffer, UINT32 framesPerLatency, - BOOL fullDuplex, BOOL output) -{ - // Count buffers (must be at least 1) - sub->buffers = (userFramesPerBuffer != 0 ? framesPerLatency / userFramesPerBuffer : 1); - if (sub->buffers == 0) - sub->buffers = 1; - - // Determine number of buffers used: - // - Full-duplex mode will lead to period difference, thus only 1 - // - Input mode, only 1, as WASAPI allows extraction of only 1 packet - // - For Shared mode we use double buffering - if ((sub->shareMode == AUDCLNT_SHAREMODE_EXCLUSIVE) || fullDuplex) - { - BOOL eventMode = ((sub->streamFlags & AUDCLNT_STREAMFLAGS_EVENTCALLBACK) == AUDCLNT_STREAMFLAGS_EVENTCALLBACK); - - // Exclusive mode does not allow >1 buffers be used for Event interface, e.g. GetBuffer - // call must acquire max buffer size and it all must be processed. - if (eventMode) - sub->userBufferAndHostMatch = 1; - - // Full-duplex or Event mode: prefer paUtilBoundedHostBufferSize because exclusive mode will starve - // and produce glitchy audio - // Output Polling mode: prefer paUtilFixedHostBufferSize (buffers != 1) for polling mode is it allows - // to consume user data by fixed size data chunks and thus lowers memory movement (less CPU usage) - if (fullDuplex || eventMode || !output) - sub->buffers = 1; - } -} - -// ------------------------------------------------------------------------------------------ -static void _CalculateAlignedPeriod(PaWasapiSubStream *pSub, UINT32 *nFramesPerLatency, ALIGN_FUNC pAlignFunc) -{ - // Align frames to HD Audio packet size of 128 bytes for Exclusive mode only. - // Not aligning on Windows Vista will cause Event timeout, although Windows 7 will - // return AUDCLNT_E_BUFFER_SIZE_NOT_ALIGNED error to realign buffer. Aligning is necessary - // for Exclusive mode only! when audio data is fed directly to hardware. - if (pSub->shareMode == AUDCLNT_SHAREMODE_EXCLUSIVE) - { - (*nFramesPerLatency) = AlignFramesPerBuffer((*nFramesPerLatency), - pSub->wavex.Format.nBlockAlign, pAlignFunc); - } - - // Calculate period - pSub->period = MakeHnsPeriod((*nFramesPerLatency), pSub->wavex.Format.nSamplesPerSec); -} - -// ------------------------------------------------------------------------------------------ -static void _CalculatePeriodicity(PaWasapiSubStream *pSub, BOOL output, REFERENCE_TIME *periodicity) -{ - // Note: according to Microsoft docs for IAudioClient::Initialize we can set periodicity of the buffer - // only for Exclusive mode. By setting periodicity almost equal to the user buffer frames we can - // achieve high quality (less glitchy) low-latency audio. - if (pSub->shareMode == AUDCLNT_SHAREMODE_EXCLUSIVE) - { - const PaWasapiDeviceInfo *pInfo = pSub->params.device_info; - - // By default periodicity equals to the full buffer (legacy PA WASAPI's behavior) - (*periodicity) = pSub->period; - - // Try make buffer ready for I/O once we request the buffer readiness for it. Only Polling mode - // because for Event mode buffer size and periodicity must be equal according to Microsoft - // documentation for IAudioClient::Initialize. - // - // TO-DO: try spread to capture and full-duplex cases (not tested and therefore disabled) - // - if (((pSub->streamFlags & AUDCLNT_STREAMFLAGS_EVENTCALLBACK) == 0) && - (output && !pSub->params.full_duplex)) - { - UINT32 alignedFrames; - REFERENCE_TIME userPeriodicity; - - // Align frames backwards, so device will likely make buffer read ready when we are ready - // to read it (our scheduling will wait for amount of millisoconds of frames_per_buffer) - alignedFrames = AlignFramesPerBuffer(pSub->params.frames_per_buffer, - pSub->wavex.Format.nBlockAlign, ALIGN_BWD); - - userPeriodicity = MakeHnsPeriod(alignedFrames, pSub->wavex.Format.nSamplesPerSec); - - // Must not be larger than buffer size - if (userPeriodicity > pSub->period) - userPeriodicity = pSub->period; - - // Must not be smaller than minimum supported by the device - if (userPeriodicity < pInfo->MinimumDevicePeriod) - userPeriodicity = pInfo->MinimumDevicePeriod; - - (*periodicity) = userPeriodicity; - } - } - else - (*periodicity) = 0; -} - -// ------------------------------------------------------------------------------------------ -static HRESULT CreateAudioClient(PaWasapiStream *pStream, PaWasapiSubStream *pSub, BOOL output, PaError *pa_error) -{ - PaError error; - HRESULT hr; - const PaWasapiDeviceInfo *pInfo = pSub->params.device_info; - const PaStreamParameters *params = &pSub->params.stream_params; - const double sampleRate = pSub->params.sample_rate; - const BOOL fullDuplex = pSub->params.full_duplex; - const UINT32 userFramesPerBuffer = pSub->params.frames_per_buffer; - UINT32 framesPerLatency = userFramesPerBuffer; - IAudioClient *audioClient = NULL; - REFERENCE_TIME eventPeriodicity = 0; - - // Assume default failure due to some reason - (*pa_error) = paInvalidDevice; - - // Validate parameters - if (!pSub || !pInfo || !params) - { - (*pa_error) = paBadStreamPtr; - return E_POINTER; - } - if ((UINT32)sampleRate == 0) - { - (*pa_error) = paInvalidSampleRate; - return E_INVALIDARG; - } - - // Get the audio client - if (FAILED(hr = ActivateAudioInterface(pInfo, &pSub->params.wasapi_params, &audioClient))) - { - (*pa_error) = paInsufficientMemory; - LogHostError(hr); - goto done; - } - - // Get closest format - if ((error = GetClosestFormat(audioClient, sampleRate, params, pSub->shareMode, &pSub->wavex, output)) != paFormatIsSupported) - { - (*pa_error) = error; - LogHostError(hr = AUDCLNT_E_UNSUPPORTED_FORMAT); - goto done; // fail, format not supported - } - - // Check for Mono <<>> Stereo workaround - if ((params->channelCount == 1) && (pSub->wavex.Format.nChannels == 2)) - { - // select mixer - pSub->monoMixer = GetMonoToStereoMixer(&pSub->wavex, (pInfo->flow == eRender ? MIX_DIR__1TO2 : MIX_DIR__2TO1_L)); - if (pSub->monoMixer == NULL) - { - (*pa_error) = paInvalidChannelCount; - LogHostError(hr = AUDCLNT_E_UNSUPPORTED_FORMAT); - goto done; // fail, no mixer for format - } - } - - // Calculate host buffer size - if ((pSub->shareMode != AUDCLNT_SHAREMODE_EXCLUSIVE) && - (!pSub->streamFlags || ((pSub->streamFlags & AUDCLNT_STREAMFLAGS_EVENTCALLBACK) == 0))) - { - framesPerLatency = _GetFramesPerHostBuffer(userFramesPerBuffer, - params->suggestedLatency, pSub->wavex.Format.nSamplesPerSec, 0/*, - (pSub->streamFlags & AUDCLNT_STREAMFLAGS_EVENTCALLBACK ? 0 : 1)*/); - } - else - { - #ifdef PA_WASAPI_FORCE_POLL_IF_LARGE_BUFFER - REFERENCE_TIME overall; - #endif - - // Work 1:1 with user buffer (only polling allows to use >1) - framesPerLatency += MakeFramesFromHns(SecondsTonano100(params->suggestedLatency), pSub->wavex.Format.nSamplesPerSec); - - // Force Polling if overall latency is >= 21.33ms as it allows to use 100% CPU in a callback, - // or user specified latency parameter. - #ifdef PA_WASAPI_FORCE_POLL_IF_LARGE_BUFFER - overall = MakeHnsPeriod(framesPerLatency, pSub->wavex.Format.nSamplesPerSec); - if (overall >= (106667 * 2)/*21.33ms*/) - { - framesPerLatency = _GetFramesPerHostBuffer(userFramesPerBuffer, - params->suggestedLatency, pSub->wavex.Format.nSamplesPerSec, 0/*, - (streamFlags & AUDCLNT_STREAMFLAGS_EVENTCALLBACK ? 0 : 1)*/); - - // Use Polling interface - pSub->streamFlags &= ~AUDCLNT_STREAMFLAGS_EVENTCALLBACK; - PRINT(("WASAPI: CreateAudioClient: forcing POLL mode\n")); - } - #endif - } - - // For full-duplex output resize buffer to be the same as for input - if (output && fullDuplex) - framesPerLatency = pStream->in.framesPerHostCallback; - - // Avoid 0 frames - if (framesPerLatency == 0) - framesPerLatency = MakeFramesFromHns(pInfo->DefaultDevicePeriod, pSub->wavex.Format.nSamplesPerSec); - - // Exclusive Input stream renders data in 6 packets, we must set then the size of - // single packet, total buffer size, e.g. required latency will be PacketSize * 6 - if (!output && (pSub->shareMode == AUDCLNT_SHAREMODE_EXCLUSIVE)) - { - // Do it only for Polling mode - if ((pSub->streamFlags & AUDCLNT_STREAMFLAGS_EVENTCALLBACK) == 0) - framesPerLatency /= WASAPI_PACKETS_PER_INPUT_BUFFER; - } - - // Calculate aligned period - _CalculateAlignedPeriod(pSub, &framesPerLatency, ALIGN_BWD); - - /*! Enforce min/max period for device in Shared mode to avoid bad audio quality. - Avoid doing so for Exclusive mode as alignment will suffer. - */ - if (pSub->shareMode == AUDCLNT_SHAREMODE_SHARED) - { - if (pSub->period < pInfo->DefaultDevicePeriod) - { - pSub->period = pInfo->DefaultDevicePeriod; - - // Recalculate aligned period - framesPerLatency = MakeFramesFromHns(pSub->period, pSub->wavex.Format.nSamplesPerSec); - _CalculateAlignedPeriod(pSub, &framesPerLatency, ALIGN_BWD); - } - } - else - { - if (pSub->period < pInfo->MinimumDevicePeriod) - { - pSub->period = pInfo->MinimumDevicePeriod; - - // Recalculate aligned period - framesPerLatency = MakeFramesFromHns(pSub->period, pSub->wavex.Format.nSamplesPerSec); - _CalculateAlignedPeriod(pSub, &framesPerLatency, ALIGN_FWD); - } - } - - /*! Windows 7 does not allow to set latency lower than minimal device period and will - return error: AUDCLNT_E_INVALID_DEVICE_PERIOD. Under Vista we enforce the same behavior - manually for unified behavior on all platforms. - */ - { - /*! AUDCLNT_E_BUFFER_SIZE_ERROR: Applies to Windows 7 and later. - Indicates that the buffer duration value requested by an exclusive-mode client is - out of range. The requested duration value for pull mode must not be greater than - 500 milliseconds; for push mode the duration value must not be greater than 2 seconds. - */ - if (pSub->shareMode == AUDCLNT_SHAREMODE_EXCLUSIVE) - { - static const REFERENCE_TIME MAX_BUFFER_EVENT_DURATION = 500 * 10000; - static const REFERENCE_TIME MAX_BUFFER_POLL_DURATION = 2000 * 10000; - - // Pull mode, max 500ms - if (pSub->streamFlags & AUDCLNT_STREAMFLAGS_EVENTCALLBACK) - { - if (pSub->period > MAX_BUFFER_EVENT_DURATION) - { - pSub->period = MAX_BUFFER_EVENT_DURATION; - - // Recalculate aligned period - framesPerLatency = MakeFramesFromHns(pSub->period, pSub->wavex.Format.nSamplesPerSec); - _CalculateAlignedPeriod(pSub, &framesPerLatency, ALIGN_BWD); - } - } - // Push mode, max 2000ms - else - { - if (pSub->period > MAX_BUFFER_POLL_DURATION) - { - pSub->period = MAX_BUFFER_POLL_DURATION; - - // Recalculate aligned period - framesPerLatency = MakeFramesFromHns(pSub->period, pSub->wavex.Format.nSamplesPerSec); - _CalculateAlignedPeriod(pSub, &framesPerLatency, ALIGN_BWD); - } - } - } - } - - // Set device scheduling period (always 0 in Shared mode according to Microsoft docs) - _CalculatePeriodicity(pSub, output, &eventPeriodicity); - - // Open the stream and associate it with an audio session - hr = IAudioClient_Initialize(audioClient, - pSub->shareMode, - pSub->streamFlags, - pSub->period, - eventPeriodicity, - &pSub->wavex.Format, - NULL); - - // [Output only] Check if buffer size is the one we requested in Exclusive mode, for UAC1 USB DACs WASAPI - // can allocate internal buffer equal to 8 times of pSub->period that has to be corrected in order to match - // the requested latency - if (output && SUCCEEDED(hr) && (pSub->shareMode == AUDCLNT_SHAREMODE_EXCLUSIVE)) - { - UINT32 maxBufferFrames; - - if (FAILED(hr = IAudioClient_GetBufferSize(audioClient, &maxBufferFrames))) - { - (*pa_error) = paInvalidDevice; - LogHostError(hr); - goto done; - } - - // For Exclusive mode for UAC1 devices maxBufferFrames may be framesPerLatency * 8 but check any difference - // to be able to guarantee the latency user requested and also resulted framesPerLatency may be bigger than - // 2 seconds that will cause audio client not operational (GetCurrentPadding() will return always 0) - if (maxBufferFrames >= (framesPerLatency * 2)) - { - UINT32 ratio = maxBufferFrames / framesPerLatency; - - PRINT(("WASAPI: CreateAudioClient: detected %d times larger buffer than requested, correct to match user latency\n", ratio)); - - // Get new aligned frames lowered by calculated ratio - framesPerLatency = MakeFramesFromHns(pSub->period / ratio, pSub->wavex.Format.nSamplesPerSec); - _CalculateAlignedPeriod(pSub, &framesPerLatency, ALIGN_BWD); - - // Make sure we are not below the minimum period - if (pSub->period < pInfo->MinimumDevicePeriod) - pSub->period = pInfo->MinimumDevicePeriod; - - // Release previous client - SAFE_RELEASE(audioClient); - - // Create a new audio client - if (FAILED(hr = ActivateAudioInterface(pInfo, &pSub->params.wasapi_params, &audioClient))) - { - (*pa_error) = paInsufficientMemory; - LogHostError(hr); - goto done; - } - - // Set device scheduling period (always 0 in Shared mode according to Microsoft docs) - _CalculatePeriodicity(pSub, output, &eventPeriodicity); - - // Open the stream and associate it with an audio session - hr = IAudioClient_Initialize(audioClient, - pSub->shareMode, - pSub->streamFlags, - pSub->period, - eventPeriodicity, - &pSub->wavex.Format, - NULL); - } - } - - /*! WASAPI is tricky on large device buffer, sometimes 2000ms can be allocated sometimes - less. There is no known guaranteed level thus we make subsequent tries by decreasing - buffer by 100ms per try. - */ - while ((hr == E_OUTOFMEMORY) && (pSub->period > (100 * 10000))) - { - PRINT(("WASAPI: CreateAudioClient: decreasing buffer size to %d milliseconds\n", (pSub->period / 10000))); - - // Decrease by 100ms and try again - pSub->period -= (100 * 10000); - - // Recalculate aligned period - framesPerLatency = MakeFramesFromHns(pSub->period, pSub->wavex.Format.nSamplesPerSec); - _CalculateAlignedPeriod(pSub, &framesPerLatency, ALIGN_BWD); - - // Release the previous allocations - SAFE_RELEASE(audioClient); - - // Create a new audio client - if (FAILED(hr = ActivateAudioInterface(pInfo, &pSub->params.wasapi_params, &audioClient))) - { - (*pa_error) = paInsufficientMemory; - LogHostError(hr); - goto done; - } - - // Set device scheduling period (always 0 in Shared mode according to Microsoft docs) - _CalculatePeriodicity(pSub, output, &eventPeriodicity); - - // Open the stream and associate it with an audio session - hr = IAudioClient_Initialize(audioClient, - pSub->shareMode, - pSub->streamFlags, - pSub->period, - eventPeriodicity, - &pSub->wavex.Format, - NULL); - } - - /*! WASAPI buffer size or alignment failure. Fallback to using default size and alignment. - */ - if ((hr == AUDCLNT_E_BUFFER_SIZE_ERROR) || (hr == AUDCLNT_E_BUFFER_SIZE_NOT_ALIGNED)) - { - // Use default - pSub->period = pInfo->DefaultDevicePeriod; - - PRINT(("WASAPI: CreateAudioClient: correcting buffer size/alignment to device default\n")); - - // Release the previous allocations - SAFE_RELEASE(audioClient); - - // Create a new audio client - if (FAILED(hr = ActivateAudioInterface(pInfo, &pSub->params.wasapi_params, &audioClient))) - { - (*pa_error) = paInsufficientMemory; - LogHostError(hr); - goto done; - } - - // Set device scheduling period (always 0 in Shared mode according to Microsoft docs) - _CalculatePeriodicity(pSub, output, &eventPeriodicity); - - // Open the stream and associate it with an audio session - hr = IAudioClient_Initialize(audioClient, - pSub->shareMode, - pSub->streamFlags, - pSub->period, - eventPeriodicity, - &pSub->wavex.Format, - NULL); - } - - // Error has no workaround, fail completely - if (FAILED(hr)) - { - (*pa_error) = paInvalidDevice; - LogHostError(hr); - goto done; - } - - // Set client - pSub->clientParent = audioClient; - IAudioClient_AddRef(pSub->clientParent); - - // Recalculate buffers count - _RecalculateBuffersCount(pSub, userFramesPerBuffer, MakeFramesFromHns(pSub->period, pSub->wavex.Format.nSamplesPerSec), - fullDuplex, output); - - // No error, client is successfully created - (*pa_error) = paNoError; - -done: - - // Clean up - SAFE_RELEASE(audioClient); - return hr; -} - -// ------------------------------------------------------------------------------------------ -static PaError ActivateAudioClientOutput(PaWasapiStream *stream) -{ - HRESULT hr; - PaError result; - UINT32 maxBufferSize; - PaTime bufferLatency; - const UINT32 framesPerBuffer = stream->out.params.frames_per_buffer; - - // Create Audio client - if (FAILED(hr = CreateAudioClient(stream, &stream->out, TRUE, &result))) - { - LogPaError(result); - goto error; - } - LogWAVEFORMATEXTENSIBLE(&stream->out.wavex); - - // Activate volume - stream->outVol = NULL; - /*hr = info->device->Activate( - __uuidof(IAudioEndpointVolume), CLSCTX_INPROC_SERVER, NULL, - (void**)&stream->outVol); - if (hr != S_OK) - return paInvalidDevice;*/ - - // Get max possible buffer size to check if it is not less than that we request - if (FAILED(hr = IAudioClient_GetBufferSize(stream->out.clientParent, &maxBufferSize))) - { - LogHostError(hr); - LogPaError(result = paInvalidDevice); - goto error; - } - - // Correct buffer to max size if it maxed out result of GetBufferSize - stream->out.bufferSize = maxBufferSize; - - // Number of frames that are required at each period - stream->out.framesPerHostCallback = maxBufferSize; - - // Calculate frames per single buffer, if buffers > 1 then always framesPerBuffer - stream->out.framesPerBuffer = - (stream->out.userBufferAndHostMatch ? stream->out.framesPerHostCallback : framesPerBuffer); - - // Calculate buffer latency - bufferLatency = (PaTime)maxBufferSize / stream->out.wavex.Format.nSamplesPerSec; - - // Append buffer latency to interface latency in shared mode (see GetStreamLatency notes) - stream->out.latencySeconds = bufferLatency; - - PRINT(("WASAPI::OpenStream(output): framesPerUser[ %d ] framesPerHost[ %d ] latency[ %.02fms ] exclusive[ %s ] wow64_fix[ %s ] mode[ %s ]\n", (UINT32)framesPerBuffer, (UINT32)stream->out.framesPerHostCallback, (float)(stream->out.latencySeconds*1000.0f), (stream->out.shareMode == AUDCLNT_SHAREMODE_EXCLUSIVE ? "YES" : "NO"), (stream->out.params.wow64_workaround ? "YES" : "NO"), (stream->out.streamFlags & AUDCLNT_STREAMFLAGS_EVENTCALLBACK ? "EVENT" : "POLL"))); - - return paNoError; - -error: - - return result; -} - -// ------------------------------------------------------------------------------------------ -static PaError ActivateAudioClientInput(PaWasapiStream *stream) -{ - HRESULT hr; - PaError result; - UINT32 maxBufferSize; - PaTime bufferLatency; - const UINT32 framesPerBuffer = stream->in.params.frames_per_buffer; - - // Create Audio client - if (FAILED(hr = CreateAudioClient(stream, &stream->in, FALSE, &result))) - { - LogPaError(result); - goto error; - } - LogWAVEFORMATEXTENSIBLE(&stream->in.wavex); - - // Create volume mgr - stream->inVol = NULL; - /*hr = info->device->Activate( - __uuidof(IAudioEndpointVolume), CLSCTX_INPROC_SERVER, NULL, - (void**)&stream->inVol); - if (hr != S_OK) - return paInvalidDevice;*/ - - // Get max possible buffer size to check if it is not less than that we request - if (FAILED(hr = IAudioClient_GetBufferSize(stream->in.clientParent, &maxBufferSize))) - { - LogHostError(hr); - LogPaError(result = paInvalidDevice); - goto error; - } - - // Correct buffer to max size if it maxed out result of GetBufferSize - stream->in.bufferSize = maxBufferSize; - - // Get interface latency (actually unneeded as we calculate latency from the size - // of maxBufferSize). - if (FAILED(hr = IAudioClient_GetStreamLatency(stream->in.clientParent, &stream->in.deviceLatency))) - { - LogHostError(hr); - LogPaError(result = paInvalidDevice); - goto error; - } - //stream->in.latencySeconds = nano100ToSeconds(stream->in.deviceLatency); - - // Number of frames that are required at each period - stream->in.framesPerHostCallback = maxBufferSize; - - // Calculate frames per single buffer, if buffers > 1 then always framesPerBuffer - stream->in.framesPerBuffer = - (stream->in.userBufferAndHostMatch ? stream->in.framesPerHostCallback : framesPerBuffer); - - // Calculate buffer latency - bufferLatency = (PaTime)maxBufferSize / stream->in.wavex.Format.nSamplesPerSec; - - // Append buffer latency to interface latency in shared mode (see GetStreamLatency notes) - stream->in.latencySeconds = bufferLatency; - - PRINT(("WASAPI::OpenStream(input): framesPerUser[ %d ] framesPerHost[ %d ] latency[ %.02fms ] exclusive[ %s ] wow64_fix[ %s ] mode[ %s ]\n", (UINT32)framesPerBuffer, (UINT32)stream->in.framesPerHostCallback, (float)(stream->in.latencySeconds*1000.0f), (stream->in.shareMode == AUDCLNT_SHAREMODE_EXCLUSIVE ? "YES" : "NO"), (stream->in.params.wow64_workaround ? "YES" : "NO"), (stream->in.streamFlags & AUDCLNT_STREAMFLAGS_EVENTCALLBACK ? "EVENT" : "POLL"))); - - return paNoError; - -error: - - return result; -} - -// ------------------------------------------------------------------------------------------ -static PaError OpenStream( struct PaUtilHostApiRepresentation *hostApi, - PaStream** s, - const PaStreamParameters *inputParameters, - const PaStreamParameters *outputParameters, - double sampleRate, - unsigned long framesPerBuffer, - PaStreamFlags streamFlags, - PaStreamCallback *streamCallback, - void *userData ) -{ - PaError result = paNoError; - HRESULT hr; - PaWasapiHostApiRepresentation *paWasapi = (PaWasapiHostApiRepresentation*)hostApi; - PaWasapiStream *stream = NULL; - int inputChannelCount, outputChannelCount; - PaSampleFormat inputSampleFormat, outputSampleFormat; - PaSampleFormat hostInputSampleFormat, hostOutputSampleFormat; - PaWasapiStreamInfo *inputStreamInfo = NULL, *outputStreamInfo = NULL; - PaWasapiDeviceInfo *info = NULL; - ULONG framesPerHostCallback; - PaUtilHostBufferSizeMode bufferMode; - const BOOL fullDuplex = ((inputParameters != NULL) && (outputParameters != NULL)); - BOOL useInputBufferProcessor = (inputParameters != NULL), useOutputBufferProcessor = (outputParameters != NULL); - - // validate PaStreamParameters - if ((result = IsStreamParamsValid(hostApi, inputParameters, outputParameters, sampleRate)) != paNoError) - return LogPaError(result); - - // Validate platform specific flags - if ((streamFlags & paPlatformSpecificFlags) != 0) - { - LogPaError(result = paInvalidFlag); /* unexpected platform specific flag */ - goto error; - } - - // Allocate memory for PaWasapiStream - if ((stream = (PaWasapiStream *)PaUtil_AllocateMemory(sizeof(PaWasapiStream))) == NULL) - { - LogPaError(result = paInsufficientMemory); - goto error; - } - - // Default thread priority is Audio: for exclusive mode we will use Pro Audio. - stream->nThreadPriority = eThreadPriorityAudio; - - // Set default number of frames: paFramesPerBufferUnspecified - if (framesPerBuffer == paFramesPerBufferUnspecified) - { - UINT32 framesPerBufferIn = 0, framesPerBufferOut = 0; - if (inputParameters != NULL) - { - info = &paWasapi->devInfo[inputParameters->device]; - framesPerBufferIn = MakeFramesFromHns(info->DefaultDevicePeriod, (UINT32)sampleRate); - } - if (outputParameters != NULL) - { - info = &paWasapi->devInfo[outputParameters->device]; - framesPerBufferOut = MakeFramesFromHns(info->DefaultDevicePeriod, (UINT32)sampleRate); - } - // choosing maximum default size - framesPerBuffer = max(framesPerBufferIn, framesPerBufferOut); - } - if (framesPerBuffer == 0) - framesPerBuffer = ((UINT32)sampleRate / 100) * 2; - - // Try create device: Input - if (inputParameters != NULL) - { - inputChannelCount = inputParameters->channelCount; - inputSampleFormat = GetSampleFormatForIO(inputParameters->sampleFormat); - info = &paWasapi->devInfo[inputParameters->device]; - - // default Shared Mode - stream->in.shareMode = AUDCLNT_SHAREMODE_SHARED; - - // PaWasapiStreamInfo - if (inputParameters->hostApiSpecificStreamInfo != NULL) - { - memcpy(&stream->in.params.wasapi_params, inputParameters->hostApiSpecificStreamInfo, min(sizeof(stream->in.params.wasapi_params), ((PaWasapiStreamInfo *)inputParameters->hostApiSpecificStreamInfo)->size)); - stream->in.params.wasapi_params.size = sizeof(stream->in.params.wasapi_params); - - stream->in.params.stream_params.hostApiSpecificStreamInfo = &stream->in.params.wasapi_params; - inputStreamInfo = &stream->in.params.wasapi_params; - - stream->in.flags = inputStreamInfo->flags; - - // Exclusive Mode - if (inputStreamInfo->flags & paWinWasapiExclusive) - { - // Boost thread priority - stream->nThreadPriority = eThreadPriorityProAudio; - // Make Exclusive - stream->in.shareMode = AUDCLNT_SHAREMODE_EXCLUSIVE; - } - - // explicit thread priority level - if (inputStreamInfo->flags & paWinWasapiThreadPriority) - { - if ((inputStreamInfo->threadPriority > eThreadPriorityNone) && - (inputStreamInfo->threadPriority <= eThreadPriorityWindowManager)) - stream->nThreadPriority = inputStreamInfo->threadPriority; - } - - // redirect processing to custom user callback, ignore PA buffer processor - useInputBufferProcessor = !(inputStreamInfo->flags & paWinWasapiRedirectHostProcessor); - } - - // Choose processing mode - stream->in.streamFlags = (stream->in.shareMode == AUDCLNT_SHAREMODE_EXCLUSIVE ? AUDCLNT_STREAMFLAGS_EVENTCALLBACK : 0); - if (paWasapi->useWOW64Workaround) - stream->in.streamFlags = 0; // polling interface - else - if (streamCallback == NULL) - stream->in.streamFlags = 0; // polling interface - else - if ((inputStreamInfo != NULL) && (inputStreamInfo->flags & paWinWasapiPolling)) - stream->in.streamFlags = 0; // polling interface - else - if (fullDuplex) - stream->in.streamFlags = 0; // polling interface is implemented for full-duplex mode also - - // Use built-in PCM converter (channel count and sample rate) if requested - if ((GetWindowsVersion() >= WINDOWS_7_SERVER2008R2) && - (stream->in.shareMode == AUDCLNT_SHAREMODE_SHARED) && - ((inputStreamInfo != NULL) && (inputStreamInfo->flags & paWinWasapiAutoConvert))) - stream->in.streamFlags |= (AUDCLNT_STREAMFLAGS_AUTOCONVERTPCM | AUDCLNT_STREAMFLAGS_SRC_DEFAULT_QUALITY); - - // Fill parameters for Audio Client creation - stream->in.params.device_info = info; - stream->in.params.stream_params = (*inputParameters); - stream->in.params.frames_per_buffer = framesPerBuffer; - stream->in.params.sample_rate = sampleRate; - stream->in.params.blocking = (streamCallback == NULL); - stream->in.params.full_duplex = fullDuplex; - stream->in.params.wow64_workaround = paWasapi->useWOW64Workaround; - - // Create and activate audio client - if ((result = ActivateAudioClientInput(stream)) != paNoError) - { - LogPaError(result); - goto error; - } - - // Get closest format - hostInputSampleFormat = PaUtil_SelectClosestAvailableFormat(WaveToPaFormat(&stream->in.wavex), inputSampleFormat); - - // Set user-side custom host processor - if ((inputStreamInfo != NULL) && - (inputStreamInfo->flags & paWinWasapiRedirectHostProcessor)) - { - stream->hostProcessOverrideInput.processor = inputStreamInfo->hostProcessorInput; - stream->hostProcessOverrideInput.userData = userData; - } - - // Only get IAudioCaptureClient input once here instead of getting it at multiple places based on the use - if (FAILED(hr = IAudioClient_GetService(stream->in.clientParent, &pa_IID_IAudioCaptureClient, (void **)&stream->captureClientParent))) - { - LogHostError(hr); - LogPaError(result = paUnanticipatedHostError); - goto error; - } - - // Create ring buffer for blocking mode (It is needed because we fetch Input packets, not frames, - // and thus we have to save partial packet if such remains unread) - if (stream->in.params.blocking == TRUE) - { - UINT32 bufferFrames = ALIGN_NEXT_POW2((stream->in.framesPerHostCallback / WASAPI_PACKETS_PER_INPUT_BUFFER) * 2); - UINT32 frameSize = stream->in.wavex.Format.nBlockAlign; - - // buffer - if ((stream->in.tailBuffer = PaUtil_AllocateMemory(sizeof(PaUtilRingBuffer))) == NULL) - { - LogPaError(result = paInsufficientMemory); - goto error; - } - memset(stream->in.tailBuffer, 0, sizeof(PaUtilRingBuffer)); - - // buffer memory region - stream->in.tailBufferMemory = PaUtil_AllocateMemory(frameSize * bufferFrames); - if (stream->in.tailBufferMemory == NULL) - { - LogPaError(result = paInsufficientMemory); - goto error; - } - - // initialize - if (PaUtil_InitializeRingBuffer(stream->in.tailBuffer, frameSize, bufferFrames, stream->in.tailBufferMemory) != 0) - { - LogPaError(result = paInternalError); - goto error; - } - } - } - else - { - inputChannelCount = 0; - inputSampleFormat = hostInputSampleFormat = paInt16; /* Suppress 'uninitialised var' warnings. */ - } - - // Try create device: Output - if (outputParameters != NULL) - { - outputChannelCount = outputParameters->channelCount; - outputSampleFormat = GetSampleFormatForIO(outputParameters->sampleFormat); - info = &paWasapi->devInfo[outputParameters->device]; - - // default Shared Mode - stream->out.shareMode = AUDCLNT_SHAREMODE_SHARED; - - // set PaWasapiStreamInfo - if (outputParameters->hostApiSpecificStreamInfo != NULL) - { - memcpy(&stream->out.params.wasapi_params, outputParameters->hostApiSpecificStreamInfo, min(sizeof(stream->out.params.wasapi_params), ((PaWasapiStreamInfo *)outputParameters->hostApiSpecificStreamInfo)->size)); - stream->out.params.wasapi_params.size = sizeof(stream->out.params.wasapi_params); - - stream->out.params.stream_params.hostApiSpecificStreamInfo = &stream->out.params.wasapi_params; - outputStreamInfo = &stream->out.params.wasapi_params; - - stream->out.flags = outputStreamInfo->flags; - - // Exclusive Mode - if (outputStreamInfo->flags & paWinWasapiExclusive) - { - // Boost thread priority - stream->nThreadPriority = eThreadPriorityProAudio; - // Make Exclusive - stream->out.shareMode = AUDCLNT_SHAREMODE_EXCLUSIVE; - } - - // explicit thread priority level - if (outputStreamInfo->flags & paWinWasapiThreadPriority) - { - if ((outputStreamInfo->threadPriority > eThreadPriorityNone) && - (outputStreamInfo->threadPriority <= eThreadPriorityWindowManager)) - stream->nThreadPriority = outputStreamInfo->threadPriority; - } - - // redirect processing to custom user callback, ignore PA buffer processor - useOutputBufferProcessor = !(outputStreamInfo->flags & paWinWasapiRedirectHostProcessor); - } - - // Choose processing mode - stream->out.streamFlags = (stream->out.shareMode == AUDCLNT_SHAREMODE_EXCLUSIVE ? AUDCLNT_STREAMFLAGS_EVENTCALLBACK : 0); - if (paWasapi->useWOW64Workaround) - stream->out.streamFlags = 0; // polling interface - else - if (streamCallback == NULL) - stream->out.streamFlags = 0; // polling interface - else - if ((outputStreamInfo != NULL) && (outputStreamInfo->flags & paWinWasapiPolling)) - stream->out.streamFlags = 0; // polling interface - else - if (fullDuplex) - stream->out.streamFlags = 0; // polling interface is implemented for full-duplex mode also - - // Use built-in PCM converter (channel count and sample rate) if requested - if ((GetWindowsVersion() >= WINDOWS_7_SERVER2008R2) && - (stream->out.shareMode == AUDCLNT_SHAREMODE_SHARED) && - ((outputStreamInfo != NULL) && (outputStreamInfo->flags & paWinWasapiAutoConvert))) - stream->out.streamFlags |= (AUDCLNT_STREAMFLAGS_AUTOCONVERTPCM | AUDCLNT_STREAMFLAGS_SRC_DEFAULT_QUALITY); - - // Fill parameters for Audio Client creation - stream->out.params.device_info = info; - stream->out.params.stream_params = (*outputParameters); - stream->out.params.frames_per_buffer = framesPerBuffer; - stream->out.params.sample_rate = sampleRate; - stream->out.params.blocking = (streamCallback == NULL); - stream->out.params.full_duplex = fullDuplex; - stream->out.params.wow64_workaround = paWasapi->useWOW64Workaround; - - // Create and activate audio client - if ((result = ActivateAudioClientOutput(stream)) != paNoError) - { - LogPaError(result); - goto error; - } - - // Get closest format - hostOutputSampleFormat = PaUtil_SelectClosestAvailableFormat(WaveToPaFormat(&stream->out.wavex), outputSampleFormat); - - // Set user-side custom host processor - if ((outputStreamInfo != NULL) && - (outputStreamInfo->flags & paWinWasapiRedirectHostProcessor)) - { - stream->hostProcessOverrideOutput.processor = outputStreamInfo->hostProcessorOutput; - stream->hostProcessOverrideOutput.userData = userData; - } - - // Only get IAudioCaptureClient output once here instead of getting it at multiple places based on the use - if (FAILED(hr = IAudioClient_GetService(stream->out.clientParent, &pa_IID_IAudioRenderClient, (void **)&stream->renderClientParent))) - { - LogHostError(hr); - LogPaError(result = paUnanticipatedHostError); - goto error; - } - } - else - { - outputChannelCount = 0; - outputSampleFormat = hostOutputSampleFormat = paInt16; /* Suppress 'uninitialized var' warnings. */ - } - - // log full-duplex - if (fullDuplex) - PRINT(("WASAPI::OpenStream: full-duplex mode\n")); - - // paWinWasapiPolling must be on/or not on both streams - if ((inputParameters != NULL) && (outputParameters != NULL)) - { - if ((inputStreamInfo != NULL) && (outputStreamInfo != NULL)) - { - if (((inputStreamInfo->flags & paWinWasapiPolling) && - !(outputStreamInfo->flags & paWinWasapiPolling)) - || - (!(inputStreamInfo->flags & paWinWasapiPolling) && - (outputStreamInfo->flags & paWinWasapiPolling))) - { - LogPaError(result = paInvalidFlag); - goto error; - } - } - } - - // Initialize stream representation - if (streamCallback) - { - stream->bBlocking = FALSE; - PaUtil_InitializeStreamRepresentation(&stream->streamRepresentation, - &paWasapi->callbackStreamInterface, - streamCallback, userData); - } - else - { - stream->bBlocking = TRUE; - PaUtil_InitializeStreamRepresentation(&stream->streamRepresentation, - &paWasapi->blockingStreamInterface, - streamCallback, userData); - } - - // Initialize CPU measurer - PaUtil_InitializeCpuLoadMeasurer(&stream->cpuLoadMeasurer, sampleRate); - - if (outputParameters && inputParameters) - { - // serious problem #1 - No, Not a problem, especially concerning Exclusive mode. - // Input device in exclusive mode somehow is getting large buffer always, thus we - // adjust Output latency to reflect it, thus period will differ but playback will be - // normal. - /*if (stream->in.period != stream->out.period) - { - PRINT(("WASAPI: OpenStream: period discrepancy\n")); - LogPaError(result = paBadIODeviceCombination); - goto error; - }*/ - - // serious problem #2 - No, Not a problem, as framesPerHostCallback take into account - // sample size while it is not a problem for PA full-duplex, we must care of - // period only! - /*if (stream->out.framesPerHostCallback != stream->in.framesPerHostCallback) - { - PRINT(("WASAPI: OpenStream: framesPerHostCallback discrepancy\n")); - goto error; - }*/ - } - - // Calculate frames per host for processor - framesPerHostCallback = (outputParameters ? stream->out.framesPerBuffer : stream->in.framesPerBuffer); - - // Choose correct mode of buffer processing: - // Exclusive/Shared non paWinWasapiPolling mode: paUtilFixedHostBufferSize - always fixed - // Exclusive/Shared paWinWasapiPolling mode: paUtilBoundedHostBufferSize - may vary for Exclusive or Full-duplex - bufferMode = paUtilFixedHostBufferSize; - if (inputParameters) // !!! WASAPI IAudioCaptureClient::GetBuffer extracts not number of frames but 1 packet, thus we always must adapt - bufferMode = paUtilBoundedHostBufferSize; - else - if (outputParameters) - { - if ((stream->out.buffers == 1) && - (!stream->out.streamFlags || ((stream->out.streamFlags & AUDCLNT_STREAMFLAGS_EVENTCALLBACK) == 0))) - bufferMode = paUtilBoundedHostBufferSize; - } - stream->bufferMode = bufferMode; - - // Initialize buffer processor - if (useInputBufferProcessor || useOutputBufferProcessor) - { - result = PaUtil_InitializeBufferProcessor( - &stream->bufferProcessor, - inputChannelCount, - inputSampleFormat, - hostInputSampleFormat, - outputChannelCount, - outputSampleFormat, - hostOutputSampleFormat, - sampleRate, - streamFlags, - framesPerBuffer, - framesPerHostCallback, - bufferMode, - streamCallback, - userData); - if (result != paNoError) - { - LogPaError(result); - goto error; - } - } - - // Set Input latency - stream->streamRepresentation.streamInfo.inputLatency = - (useInputBufferProcessor ? PaUtil_GetBufferProcessorInputLatencyFrames(&stream->bufferProcessor) / sampleRate : 0) - + (inputParameters != NULL ? stream->in.latencySeconds : 0); - - // Set Output latency - stream->streamRepresentation.streamInfo.outputLatency = - (useOutputBufferProcessor ? PaUtil_GetBufferProcessorOutputLatencyFrames(&stream->bufferProcessor) / sampleRate : 0) - + (outputParameters != NULL ? stream->out.latencySeconds : 0); - - // Set SR - stream->streamRepresentation.streamInfo.sampleRate = sampleRate; - - (*s) = (PaStream *)stream; - return result; - -error: - - if (stream != NULL) - CloseStream(stream); - - return result; -} - -// ------------------------------------------------------------------------------------------ -static PaError CloseStream( PaStream* s ) -{ - PaError result = paNoError; - PaWasapiStream *stream = (PaWasapiStream*)s; - - // abort active stream - if (IsStreamActive(s)) - { - result = AbortStream(s); - } - - SAFE_RELEASE(stream->captureClientParent); - SAFE_RELEASE(stream->renderClientParent); - SAFE_RELEASE(stream->out.clientParent); - SAFE_RELEASE(stream->in.clientParent); - SAFE_RELEASE(stream->inVol); - SAFE_RELEASE(stream->outVol); - - CloseHandle(stream->event[S_INPUT]); - CloseHandle(stream->event[S_OUTPUT]); - - _StreamCleanup(stream); - - PaWasapi_FreeMemory(stream->in.monoBuffer); - PaWasapi_FreeMemory(stream->out.monoBuffer); - - PaUtil_FreeMemory(stream->in.tailBuffer); - PaUtil_FreeMemory(stream->in.tailBufferMemory); - - PaUtil_FreeMemory(stream->out.tailBuffer); - PaUtil_FreeMemory(stream->out.tailBufferMemory); - - PaUtil_TerminateBufferProcessor(&stream->bufferProcessor); - PaUtil_TerminateStreamRepresentation(&stream->streamRepresentation); - PaUtil_FreeMemory(stream); - - return result; -} - -// ------------------------------------------------------------------------------------------ -HRESULT UnmarshalSubStreamComPointers(PaWasapiSubStream *substream) -{ -#ifndef PA_WINRT - HRESULT hResult = S_OK; - HRESULT hFirstBadResult = S_OK; - substream->clientProc = NULL; - - // IAudioClient - hResult = CoGetInterfaceAndReleaseStream(substream->clientStream, GetAudioClientIID(), (LPVOID*)&substream->clientProc); - substream->clientStream = NULL; - if (hResult != S_OK) - { - hFirstBadResult = (hFirstBadResult == S_OK) ? hResult : hFirstBadResult; - } - - return hFirstBadResult; - -#else - (void)substream; - return S_OK; -#endif -} - -// ------------------------------------------------------------------------------------------ -HRESULT UnmarshalStreamComPointers(PaWasapiStream *stream) -{ -#ifndef PA_WINRT - HRESULT hResult = S_OK; - HRESULT hFirstBadResult = S_OK; - stream->captureClient = NULL; - stream->renderClient = NULL; - stream->in.clientProc = NULL; - stream->out.clientProc = NULL; - - if (NULL != stream->in.clientParent) - { - // SubStream pointers - hResult = UnmarshalSubStreamComPointers(&stream->in); - if (hResult != S_OK) - { - hFirstBadResult = (hFirstBadResult == S_OK) ? hResult : hFirstBadResult; - } - - // IAudioCaptureClient - hResult = CoGetInterfaceAndReleaseStream(stream->captureClientStream, &pa_IID_IAudioCaptureClient, (LPVOID*)&stream->captureClient); - stream->captureClientStream = NULL; - if (hResult != S_OK) - { - hFirstBadResult = (hFirstBadResult == S_OK) ? hResult : hFirstBadResult; - } - } - - if (NULL != stream->out.clientParent) - { - // SubStream pointers - hResult = UnmarshalSubStreamComPointers(&stream->out); - if (hResult != S_OK) - { - hFirstBadResult = (hFirstBadResult == S_OK) ? hResult : hFirstBadResult; - } - - // IAudioRenderClient - hResult = CoGetInterfaceAndReleaseStream(stream->renderClientStream, &pa_IID_IAudioRenderClient, (LPVOID*)&stream->renderClient); - stream->renderClientStream = NULL; - if (hResult != S_OK) - { - hFirstBadResult = (hFirstBadResult == S_OK) ? hResult : hFirstBadResult; - } - } - - return hFirstBadResult; -#else - if (stream->in.clientParent != NULL) - { - stream->in.clientProc = stream->in.clientParent; - IAudioClient_AddRef(stream->in.clientParent); - } - - if (stream->out.clientParent != NULL) - { - stream->out.clientProc = stream->out.clientParent; - IAudioClient_AddRef(stream->out.clientParent); - } - - if (stream->renderClientParent != NULL) - { - stream->renderClient = stream->renderClientParent; - IAudioRenderClient_AddRef(stream->renderClientParent); - } - - if (stream->captureClientParent != NULL) - { - stream->captureClient = stream->captureClientParent; - IAudioCaptureClient_AddRef(stream->captureClientParent); - } - - return S_OK; -#endif -} - -// ----------------------------------------------------------------------------------------- -void ReleaseUnmarshaledSubComPointers(PaWasapiSubStream *substream) -{ - SAFE_RELEASE(substream->clientProc); -} - -// ----------------------------------------------------------------------------------------- -void ReleaseUnmarshaledComPointers(PaWasapiStream *stream) -{ - // Release AudioClient services first - SAFE_RELEASE(stream->captureClient); - SAFE_RELEASE(stream->renderClient); - - // Release AudioClients - ReleaseUnmarshaledSubComPointers(&stream->in); - ReleaseUnmarshaledSubComPointers(&stream->out); -} - -// ------------------------------------------------------------------------------------------ -HRESULT MarshalSubStreamComPointers(PaWasapiSubStream *substream) -{ -#ifndef PA_WINRT - HRESULT hResult; - substream->clientStream = NULL; - - // IAudioClient - hResult = CoMarshalInterThreadInterfaceInStream(GetAudioClientIID(), (LPUNKNOWN)substream->clientParent, &substream->clientStream); - if (hResult != S_OK) - goto marshal_sub_error; - - return hResult; - - // If marshaling error occurred, make sure to release everything. -marshal_sub_error: - - UnmarshalSubStreamComPointers(substream); - ReleaseUnmarshaledSubComPointers(substream); - return hResult; -#else - (void)substream; - return S_OK; -#endif -} - -// ------------------------------------------------------------------------------------------ -HRESULT MarshalStreamComPointers(PaWasapiStream *stream) -{ -#ifndef PA_WINRT - HRESULT hResult = S_OK; - stream->captureClientStream = NULL; - stream->in.clientStream = NULL; - stream->renderClientStream = NULL; - stream->out.clientStream = NULL; - - if (NULL != stream->in.clientParent) - { - // SubStream pointers - hResult = MarshalSubStreamComPointers(&stream->in); - if (hResult != S_OK) - goto marshal_error; - - // IAudioCaptureClient - hResult = CoMarshalInterThreadInterfaceInStream(&pa_IID_IAudioCaptureClient, (LPUNKNOWN)stream->captureClientParent, &stream->captureClientStream); - if (hResult != S_OK) - goto marshal_error; - } - - if (NULL != stream->out.clientParent) - { - // SubStream pointers - hResult = MarshalSubStreamComPointers(&stream->out); - if (hResult != S_OK) - goto marshal_error; - - // IAudioRenderClient - hResult = CoMarshalInterThreadInterfaceInStream(&pa_IID_IAudioRenderClient, (LPUNKNOWN)stream->renderClientParent, &stream->renderClientStream); - if (hResult != S_OK) - goto marshal_error; - } - - return hResult; - - // If marshaling error occurred, make sure to release everything. -marshal_error: - - UnmarshalStreamComPointers(stream); - ReleaseUnmarshaledComPointers(stream); - return hResult; -#else - (void)stream; - return S_OK; -#endif -} - -// ------------------------------------------------------------------------------------------ -static PaError StartStream( PaStream *s ) -{ - HRESULT hr; - PaWasapiStream *stream = (PaWasapiStream*)s; - PaError result = paNoError; - - // check if stream is active already - if (IsStreamActive(s)) - return paStreamIsNotStopped; - - PaUtil_ResetBufferProcessor(&stream->bufferProcessor); - - // Cleanup handles (may be necessary if stream was stopped by itself due to error) - _StreamCleanup(stream); - - // Create close event - if ((stream->hCloseRequest = CreateEvent(NULL, TRUE, FALSE, NULL)) == NULL) - { - result = paInsufficientMemory; - goto start_error; - } - - // Create thread - if (!stream->bBlocking) - { - // Create thread events - stream->hThreadStart = CreateEvent(NULL, TRUE, FALSE, NULL); - stream->hThreadExit = CreateEvent(NULL, TRUE, FALSE, NULL); - if ((stream->hThreadStart == NULL) || (stream->hThreadExit == NULL)) - { - result = paInsufficientMemory; - goto start_error; - } - - // Marshal WASAPI interface pointers for safe use in thread created below. - if ((hr = MarshalStreamComPointers(stream)) != S_OK) - { - PRINT(("Failed marshaling stream COM pointers.")); - result = paUnanticipatedHostError; - goto nonblocking_start_error; - } - - if ((stream->in.clientParent && (stream->in.streamFlags & AUDCLNT_STREAMFLAGS_EVENTCALLBACK)) || - (stream->out.clientParent && (stream->out.streamFlags & AUDCLNT_STREAMFLAGS_EVENTCALLBACK))) - { - if ((stream->hThread = CREATE_THREAD(ProcThreadEvent)) == NULL) - { - PRINT(("Failed creating thread: ProcThreadEvent.")); - result = paUnanticipatedHostError; - goto nonblocking_start_error; - } - } - else - { - if ((stream->hThread = CREATE_THREAD(ProcThreadPoll)) == NULL) - { - PRINT(("Failed creating thread: ProcThreadPoll.")); - result = paUnanticipatedHostError; - goto nonblocking_start_error; - } - } - - // Wait for thread to start - if (WaitForSingleObject(stream->hThreadStart, 60*1000) == WAIT_TIMEOUT) - { - PRINT(("Failed starting thread: timeout.")); - result = paUnanticipatedHostError; - goto nonblocking_start_error; - } - } - else - { - // Create blocking operation events (non-signaled event means - blocking operation is pending) - if (stream->out.clientParent != NULL) - { - if ((stream->hBlockingOpStreamWR = CreateEvent(NULL, TRUE, TRUE, NULL)) == NULL) - { - result = paInsufficientMemory; - goto start_error; - } - } - if (stream->in.clientParent != NULL) - { - if ((stream->hBlockingOpStreamRD = CreateEvent(NULL, TRUE, TRUE, NULL)) == NULL) - { - result = paInsufficientMemory; - goto start_error; - } - } - - // Initialize event & start INPUT stream - if (stream->in.clientParent != NULL) - { - if ((hr = IAudioClient_Start(stream->in.clientParent)) != S_OK) - { - LogHostError(hr); - result = paUnanticipatedHostError; - goto start_error; - } - } - - // Initialize event & start OUTPUT stream - if (stream->out.clientParent != NULL) - { - // Start - if ((hr = IAudioClient_Start(stream->out.clientParent)) != S_OK) - { - LogHostError(hr); - result = paUnanticipatedHostError; - goto start_error; - } - } - - // Set parent to working pointers to use shared functions. - stream->captureClient = stream->captureClientParent; - stream->renderClient = stream->renderClientParent; - stream->in.clientProc = stream->in.clientParent; - stream->out.clientProc = stream->out.clientParent; - - // Signal: stream running. - stream->running = TRUE; - } - - return result; - -nonblocking_start_error: - - // Set hThreadExit event to prevent blocking during cleanup - SetEvent(stream->hThreadExit); - UnmarshalStreamComPointers(stream); - ReleaseUnmarshaledComPointers(stream); - -start_error: - - StopStream(s); - return result; -} - -// ------------------------------------------------------------------------------------------ -void _StreamFinish(PaWasapiStream *stream) -{ - // Issue command to thread to stop processing and wait for thread exit - if (!stream->bBlocking) - { - SignalObjectAndWait(stream->hCloseRequest, stream->hThreadExit, INFINITE, FALSE); - } - else - // Blocking mode does not own thread - { - // Signal close event and wait for each of 2 blocking operations to complete - if (stream->out.clientParent) - SignalObjectAndWait(stream->hCloseRequest, stream->hBlockingOpStreamWR, INFINITE, TRUE); - if (stream->out.clientParent) - SignalObjectAndWait(stream->hCloseRequest, stream->hBlockingOpStreamRD, INFINITE, TRUE); - - // Process stop - _StreamOnStop(stream); - } - - // Cleanup handles - _StreamCleanup(stream); - - stream->running = FALSE; -} - -// ------------------------------------------------------------------------------------------ -void _StreamCleanup(PaWasapiStream *stream) -{ - // Close thread handles to allow restart - SAFE_CLOSE(stream->hThread); - SAFE_CLOSE(stream->hThreadStart); - SAFE_CLOSE(stream->hThreadExit); - SAFE_CLOSE(stream->hCloseRequest); - SAFE_CLOSE(stream->hBlockingOpStreamRD); - SAFE_CLOSE(stream->hBlockingOpStreamWR); -} - -// ------------------------------------------------------------------------------------------ -static PaError StopStream( PaStream *s ) -{ - // Finish stream - _StreamFinish((PaWasapiStream *)s); - return paNoError; -} - -// ------------------------------------------------------------------------------------------ -static PaError AbortStream( PaStream *s ) -{ - // Finish stream - _StreamFinish((PaWasapiStream *)s); - return paNoError; -} - -// ------------------------------------------------------------------------------------------ -static PaError IsStreamStopped( PaStream *s ) -{ - return !((PaWasapiStream *)s)->running; -} - -// ------------------------------------------------------------------------------------------ -static PaError IsStreamActive( PaStream *s ) -{ - return ((PaWasapiStream *)s)->running; -} - -// ------------------------------------------------------------------------------------------ -static PaTime GetStreamTime( PaStream *s ) -{ - PaWasapiStream *stream = (PaWasapiStream*)s; - - /* suppress unused variable warnings */ - (void) stream; - - return PaUtil_GetTime(); -} - -// ------------------------------------------------------------------------------------------ -static double GetStreamCpuLoad( PaStream* s ) -{ - return PaUtil_GetCpuLoad(&((PaWasapiStream *)s)->cpuLoadMeasurer); -} - -// ------------------------------------------------------------------------------------------ -static PaError ReadStream( PaStream* s, void *_buffer, unsigned long frames ) -{ - PaWasapiStream *stream = (PaWasapiStream*)s; - - HRESULT hr = S_OK; - BYTE *user_buffer = (BYTE *)_buffer; - BYTE *wasapi_buffer = NULL; - DWORD flags = 0; - UINT32 i, available, sleep = 0; - unsigned long processed; - ThreadIdleScheduler sched; - - // validate - if (!stream->running) - return paStreamIsStopped; - if (stream->captureClient == NULL) - return paBadStreamPtr; - - // Notify blocking op has begun - ResetEvent(stream->hBlockingOpStreamRD); - - // Use thread scheduling for 500 microseconds (emulated) when wait time for frames is less than - // 1 milliseconds, emulation helps to normalize CPU consumption and avoids too busy waiting - ThreadIdleScheduler_Setup(&sched, 1, 250/* microseconds */); - - // Make a local copy of the user buffer pointer(s), this is necessary - // because PaUtil_CopyOutput() advances these pointers every time it is called - if (!stream->bufferProcessor.userInputIsInterleaved) - { - user_buffer = (BYTE *)alloca(sizeof(BYTE *) * stream->bufferProcessor.inputChannelCount); - if (user_buffer == NULL) - return paInsufficientMemory; - - for (i = 0; i < stream->bufferProcessor.inputChannelCount; ++i) - ((BYTE **)user_buffer)[i] = ((BYTE **)_buffer)[i]; - } - - // Find out if there are tail frames, flush them all before reading hardware - if ((available = PaUtil_GetRingBufferReadAvailable(stream->in.tailBuffer)) != 0) - { - ring_buffer_size_t buf1_size = 0, buf2_size = 0, read, desired; - void *buf1 = NULL, *buf2 = NULL; - - // Limit desired to amount of requested frames - desired = available; - if ((UINT32)desired > frames) - desired = frames; - - // Get pointers to read regions - read = PaUtil_GetRingBufferReadRegions(stream->in.tailBuffer, desired, &buf1, &buf1_size, &buf2, &buf2_size); - - if (buf1 != NULL) - { - // Register available frames to processor - PaUtil_SetInputFrameCount(&stream->bufferProcessor, buf1_size); - - // Register host buffer pointer to processor - PaUtil_SetInterleavedInputChannels(&stream->bufferProcessor, 0, buf1, stream->bufferProcessor.inputChannelCount); - - // Copy user data to host buffer (with conversion if applicable) - processed = PaUtil_CopyInput(&stream->bufferProcessor, (void **)&user_buffer, buf1_size); - frames -= processed; - } - - if (buf2 != NULL) - { - // Register available frames to processor - PaUtil_SetInputFrameCount(&stream->bufferProcessor, buf2_size); - - // Register host buffer pointer to processor - PaUtil_SetInterleavedInputChannels(&stream->bufferProcessor, 0, buf2, stream->bufferProcessor.inputChannelCount); - - // Copy user data to host buffer (with conversion if applicable) - processed = PaUtil_CopyInput(&stream->bufferProcessor, (void **)&user_buffer, buf2_size); - frames -= processed; - } - - // Advance - PaUtil_AdvanceRingBufferReadIndex(stream->in.tailBuffer, read); - } - - // Read hardware - while (frames != 0) - { - // Check if blocking call must be interrupted - if (WaitForSingleObject(stream->hCloseRequest, sleep) != WAIT_TIMEOUT) - break; - - // Get available frames (must be finding out available frames before call to IAudioCaptureClient_GetBuffer - // othervise audio glitches will occur inExclusive mode as it seems that WASAPI has some scheduling/ - // processing problems when such busy polling with IAudioCaptureClient_GetBuffer occurs) - if ((hr = _PollGetInputFramesAvailable(stream, &available)) != S_OK) - { - LogHostError(hr); - return paUnanticipatedHostError; - } - - // Wait for more frames to become available - if (available == 0) - { - // Exclusive mode may require latency of 1 millisecond, thus we shall sleep - // around 500 microseconds (emulated) to collect packets in time - if (stream->in.shareMode != AUDCLNT_SHAREMODE_EXCLUSIVE) - { - UINT32 sleep_frames = (frames < stream->in.framesPerHostCallback ? frames : stream->in.framesPerHostCallback); - - sleep = GetFramesSleepTime(sleep_frames, stream->in.wavex.Format.nSamplesPerSec); - sleep /= 4; // wait only for 1/4 of the buffer - - // WASAPI input provides packets, thus expiring packet will result in bad audio - // limit waiting time to 2 seconds (will always work for smallest buffer in Shared) - if (sleep > 2) - sleep = 2; - - // Avoid busy waiting, schedule next 1 millesecond wait - if (sleep == 0) - sleep = ThreadIdleScheduler_NextSleep(&sched); - } - else - { - if ((sleep = ThreadIdleScheduler_NextSleep(&sched)) != 0) - { - Sleep(sleep); - sleep = 0; - } - } - - continue; - } - - // Get the available data in the shared buffer. - if ((hr = IAudioCaptureClient_GetBuffer(stream->captureClient, &wasapi_buffer, &available, &flags, NULL, NULL)) != S_OK) - { - // Buffer size is too small, waiting - if (hr != AUDCLNT_S_BUFFER_EMPTY) - { - LogHostError(hr); - goto end; - } - - continue; - } - - // Register available frames to processor - PaUtil_SetInputFrameCount(&stream->bufferProcessor, available); - - // Register host buffer pointer to processor - PaUtil_SetInterleavedInputChannels(&stream->bufferProcessor, 0, wasapi_buffer, stream->bufferProcessor.inputChannelCount); - - // Copy user data to host buffer (with conversion if applicable) - processed = PaUtil_CopyInput(&stream->bufferProcessor, (void **)&user_buffer, frames); - frames -= processed; - - // Save tail into buffer - if ((frames == 0) && (available > processed)) - { - UINT32 bytes_processed = processed * stream->in.wavex.Format.nBlockAlign; - UINT32 frames_to_save = available - processed; - - PaUtil_WriteRingBuffer(stream->in.tailBuffer, wasapi_buffer + bytes_processed, frames_to_save); - } - - // Release host buffer - if ((hr = IAudioCaptureClient_ReleaseBuffer(stream->captureClient, available)) != S_OK) - { - LogHostError(hr); - goto end; - } - } - -end: - - // Notify blocking op has ended - SetEvent(stream->hBlockingOpStreamRD); - - return (hr != S_OK ? paUnanticipatedHostError : paNoError); -} - -// ------------------------------------------------------------------------------------------ -static PaError WriteStream( PaStream* s, const void *_buffer, unsigned long frames ) -{ - PaWasapiStream *stream = (PaWasapiStream*)s; - - //UINT32 frames; - const BYTE *user_buffer = (const BYTE *)_buffer; - BYTE *wasapi_buffer; - HRESULT hr = S_OK; - UINT32 i, available, sleep = 0; - unsigned long processed; - ThreadIdleScheduler sched; - - // validate - if (!stream->running) - return paStreamIsStopped; - if (stream->renderClient == NULL) - return paBadStreamPtr; - - // Notify blocking op has begun - ResetEvent(stream->hBlockingOpStreamWR); - - // Use thread scheduling for 500 microseconds (emulated) when wait time for frames is less than - // 1 milliseconds, emulation helps to normalize CPU consumption and avoids too busy waiting - ThreadIdleScheduler_Setup(&sched, 1, 500/* microseconds */); - - // Make a local copy of the user buffer pointer(s), this is necessary - // because PaUtil_CopyOutput() advances these pointers every time it is called - if (!stream->bufferProcessor.userOutputIsInterleaved) - { - user_buffer = (const BYTE *)alloca(sizeof(const BYTE *) * stream->bufferProcessor.outputChannelCount); - if (user_buffer == NULL) - return paInsufficientMemory; - - for (i = 0; i < stream->bufferProcessor.outputChannelCount; ++i) - ((const BYTE **)user_buffer)[i] = ((const BYTE **)_buffer)[i]; - } - - // Blocking (potentially, until 'frames' are consumed) loop - while (frames != 0) - { - // Check if blocking call must be interrupted - if (WaitForSingleObject(stream->hCloseRequest, sleep) != WAIT_TIMEOUT) - break; - - // Get frames available - if ((hr = _PollGetOutputFramesAvailable(stream, &available)) != S_OK) - { - LogHostError(hr); - goto end; - } - - // Wait for more frames to become available - if (available == 0) - { - UINT32 sleep_frames = (frames < stream->out.framesPerHostCallback ? frames : stream->out.framesPerHostCallback); - - sleep = GetFramesSleepTime(sleep_frames, stream->out.wavex.Format.nSamplesPerSec); - sleep /= 2; // wait only for half of the buffer - - // Avoid busy waiting, schedule next 1 millesecond wait - if (sleep == 0) - sleep = ThreadIdleScheduler_NextSleep(&sched); - - continue; - } - - // Keep in 'frames' range - if (available > frames) - available = frames; - - // Get pointer to host buffer - if ((hr = IAudioRenderClient_GetBuffer(stream->renderClient, available, &wasapi_buffer)) != S_OK) - { - // Buffer size is too big, waiting - if (hr == AUDCLNT_E_BUFFER_TOO_LARGE) - continue; - - LogHostError(hr); - goto end; - } - - // Keep waiting again (on Vista it was noticed that WASAPI could SOMETIMES return NULL pointer - // to buffer without returning AUDCLNT_E_BUFFER_TOO_LARGE instead) - if (wasapi_buffer == NULL) - continue; - - // Register available frames to processor - PaUtil_SetOutputFrameCount(&stream->bufferProcessor, available); - - // Register host buffer pointer to processor - PaUtil_SetInterleavedOutputChannels(&stream->bufferProcessor, 0, wasapi_buffer, stream->bufferProcessor.outputChannelCount); - - // Copy user data to host buffer (with conversion if applicable), this call will advance - // pointer 'user_buffer' to consumed portion of data - processed = PaUtil_CopyOutput(&stream->bufferProcessor, (const void **)&user_buffer, frames); - frames -= processed; - - // Release host buffer - if ((hr = IAudioRenderClient_ReleaseBuffer(stream->renderClient, available, 0)) != S_OK) - { - LogHostError(hr); - goto end; - } - } - -end: - - // Notify blocking op has ended - SetEvent(stream->hBlockingOpStreamWR); - - return (hr != S_OK ? paUnanticipatedHostError : paNoError); -} - -unsigned long PaUtil_GetOutputFrameCount( PaUtilBufferProcessor* bp ) -{ - return bp->hostOutputFrameCount[0]; -} - -// ------------------------------------------------------------------------------------------ -static signed long GetStreamReadAvailable( PaStream* s ) -{ - PaWasapiStream *stream = (PaWasapiStream*)s; - - HRESULT hr; - UINT32 available = 0; - - // validate - if (!stream->running) - return paStreamIsStopped; - if (stream->captureClient == NULL) - return paBadStreamPtr; - - // available in hardware buffer - if ((hr = _PollGetInputFramesAvailable(stream, &available)) != S_OK) - { - LogHostError(hr); - return paUnanticipatedHostError; - } - - // available in software tail buffer - available += PaUtil_GetRingBufferReadAvailable(stream->in.tailBuffer); - - return available; -} - -// ------------------------------------------------------------------------------------------ -static signed long GetStreamWriteAvailable( PaStream* s ) -{ - PaWasapiStream *stream = (PaWasapiStream*)s; - HRESULT hr; - UINT32 available = 0; - - // validate - if (!stream->running) - return paStreamIsStopped; - if (stream->renderClient == NULL) - return paBadStreamPtr; - - if ((hr = _PollGetOutputFramesAvailable(stream, &available)) != S_OK) - { - LogHostError(hr); - return paUnanticipatedHostError; - } - - return (signed long)available; -} - - -// ------------------------------------------------------------------------------------------ -static void WaspiHostProcessingLoop( void *inputBuffer, long inputFrames, - void *outputBuffer, long outputFrames, - void *userData ) -{ - PaWasapiStream *stream = (PaWasapiStream*)userData; - PaStreamCallbackTimeInfo timeInfo = {0,0,0}; - PaStreamCallbackFlags flags = 0; - int callbackResult; - unsigned long framesProcessed; - HRESULT hr; - UINT32 pending; - - PaUtil_BeginCpuLoadMeasurement( &stream->cpuLoadMeasurer ); - - /* - Pa_GetStreamTime: - - generate timing information - - handle buffer slips - */ - timeInfo.currentTime = PaUtil_GetTime(); - // Query input latency - if (stream->in.clientProc != NULL) - { - PaTime pending_time; - if ((hr = IAudioClient_GetCurrentPadding(stream->in.clientProc, &pending)) == S_OK) - pending_time = (PaTime)pending / (PaTime)stream->in.wavex.Format.nSamplesPerSec; - else - pending_time = (PaTime)stream->in.latencySeconds; - - timeInfo.inputBufferAdcTime = timeInfo.currentTime + pending_time; - } - // Query output current latency - if (stream->out.clientProc != NULL) - { - PaTime pending_time; - if ((hr = IAudioClient_GetCurrentPadding(stream->out.clientProc, &pending)) == S_OK) - pending_time = (PaTime)pending / (PaTime)stream->out.wavex.Format.nSamplesPerSec; - else - pending_time = (PaTime)stream->out.latencySeconds; - - timeInfo.outputBufferDacTime = timeInfo.currentTime + pending_time; - } - - /* - If you need to byte swap or shift inputBuffer to convert it into a - portaudio format, do it here. - */ - - PaUtil_BeginBufferProcessing( &stream->bufferProcessor, &timeInfo, flags ); - - /* - depending on whether the host buffers are interleaved, non-interleaved - or a mixture, you will want to call PaUtil_SetInterleaved*Channels(), - PaUtil_SetNonInterleaved*Channel() or PaUtil_Set*Channel() here. - */ - - if (stream->bufferProcessor.inputChannelCount > 0) - { - PaUtil_SetInputFrameCount( &stream->bufferProcessor, inputFrames ); - PaUtil_SetInterleavedInputChannels( &stream->bufferProcessor, - 0, /* first channel of inputBuffer is channel 0 */ - inputBuffer, - 0 ); /* 0 - use inputChannelCount passed to init buffer processor */ - } - - if (stream->bufferProcessor.outputChannelCount > 0) - { - PaUtil_SetOutputFrameCount( &stream->bufferProcessor, outputFrames); - PaUtil_SetInterleavedOutputChannels( &stream->bufferProcessor, - 0, /* first channel of outputBuffer is channel 0 */ - outputBuffer, - 0 ); /* 0 - use outputChannelCount passed to init buffer processor */ - } - - /* you must pass a valid value of callback result to PaUtil_EndBufferProcessing() - in general you would pass paContinue for normal operation, and - paComplete to drain the buffer processor's internal output buffer. - You can check whether the buffer processor's output buffer is empty - using PaUtil_IsBufferProcessorOuputEmpty( bufferProcessor ) - */ - callbackResult = paContinue; - framesProcessed = PaUtil_EndBufferProcessing( &stream->bufferProcessor, &callbackResult ); - - /* - If you need to byte swap or shift outputBuffer to convert it to - host format, do it here. - */ - - PaUtil_EndCpuLoadMeasurement( &stream->cpuLoadMeasurer, framesProcessed ); - - if (callbackResult == paContinue) - { - /* nothing special to do */ - } - else - if (callbackResult == paAbort) - { - // stop stream - SetEvent(stream->hCloseRequest); - } - else - { - // stop stream - SetEvent(stream->hCloseRequest); - } -} - -// ------------------------------------------------------------------------------------------ -#ifndef PA_WINRT -static PaError MMCSS_activate(PaWasapiThreadPriority nPriorityClass, HANDLE *ret) -{ - static const char *mmcs_name[] = - { - NULL, - "Audio", - "Capture", - "Distribution", - "Games", - "Playback", - "Pro Audio", - "Window Manager" - }; - - DWORD task_idx = 0; - HANDLE hTask; - - if ((UINT32)nPriorityClass >= STATIC_ARRAY_SIZE(mmcs_name)) - return paUnanticipatedHostError; - - if ((hTask = pAvSetMmThreadCharacteristics(mmcs_name[nPriorityClass], &task_idx)) == NULL) - { - PRINT(("WASAPI: AvSetMmThreadCharacteristics failed: error[%d]\n", GetLastError())); - return paUnanticipatedHostError; - } - - /*BOOL priority_ok = pAvSetMmThreadPriority(hTask, AVRT_PRIORITY_NORMAL); - if (priority_ok == FALSE) - { - PRINT(("WASAPI: AvSetMmThreadPriority failed!\n")); - }*/ - - // debug - { - int cur_priority = GetThreadPriority(GetCurrentThread()); - DWORD cur_priority_class = GetPriorityClass(GetCurrentProcess()); - PRINT(("WASAPI: thread[ priority-0x%X class-0x%X ]\n", cur_priority, cur_priority_class)); - } - - (*ret) = hTask; - return paNoError; -} -#endif - -// ------------------------------------------------------------------------------------------ -#ifndef PA_WINRT -static void MMCSS_deactivate(HANDLE hTask) -{ - if (pAvRevertMmThreadCharacteristics(hTask) == FALSE) - { - PRINT(("WASAPI: AvRevertMmThreadCharacteristics failed!\n")); - } -} -#endif - -// ------------------------------------------------------------------------------------------ -PaError PaWasapi_ThreadPriorityBoost(void **pTask, PaWasapiThreadPriority priorityClass) -{ - HANDLE task; - PaError ret; - - if (pTask == NULL) - return paUnanticipatedHostError; - -#ifndef PA_WINRT - if ((ret = MMCSS_activate(priorityClass, &task)) != paNoError) - return ret; -#else - switch (priorityClass) - { - case eThreadPriorityAudio: - case eThreadPriorityProAudio: { - - // Save previous thread priority - intptr_t priority_prev = GetThreadPriority(GetCurrentThread()); - - // Try set new thread priority - if (SetThreadPriority(GetCurrentThread(), THREAD_PRIORITY_HIGHEST) == FALSE) - return paUnanticipatedHostError; - - // Memorize prev priority (pretend to be non NULL pointer by adding 0x80000000 mask) - task = (HANDLE)(priority_prev | 0x80000000); - - ret = paNoError; - - break; } - - default: - return paUnanticipatedHostError; - } -#endif - - (*pTask) = task; - return ret; -} - -// ------------------------------------------------------------------------------------------ -PaError PaWasapi_ThreadPriorityRevert(void *pTask) -{ - if (pTask == NULL) - return paUnanticipatedHostError; - -#ifndef PA_WINRT - MMCSS_deactivate((HANDLE)pTask); -#else - // Revert previous priority by removing 0x80000000 mask - if (SetThreadPriority(GetCurrentThread(), (int)((intptr_t)pTask & ~0x80000000)) == FALSE) - return paUnanticipatedHostError; -#endif - - return paNoError; -} - -// ------------------------------------------------------------------------------------------ -// Described at: -// http://msdn.microsoft.com/en-us/library/dd371387(v=VS.85).aspx - -PaError PaWasapi_GetJackCount(PaDeviceIndex device, int *pJackCount) -{ -#ifndef PA_WINRT - PaError ret; - HRESULT hr = S_OK; - PaWasapiDeviceInfo *deviceInfo; - IDeviceTopology *pDeviceTopology = NULL; - IConnector *pConnFrom = NULL; - IConnector *pConnTo = NULL; - IPart *pPart = NULL; - IKsJackDescription *pJackDesc = NULL; - UINT jackCount = 0; - - if (pJackCount == NULL) - return paUnanticipatedHostError; - - if ((ret = _GetWasapiDeviceInfoByDeviceIndex(&deviceInfo, device)) != paNoError) - return ret; - - // Get the endpoint device's IDeviceTopology interface - hr = IMMDevice_Activate(deviceInfo->device, &pa_IID_IDeviceTopology, - CLSCTX_INPROC_SERVER, NULL, (void**)&pDeviceTopology); - IF_FAILED_JUMP(hr, error); - - // The device topology for an endpoint device always contains just one connector (connector number 0) - hr = IDeviceTopology_GetConnector(pDeviceTopology, 0, &pConnFrom); - IF_FAILED_JUMP(hr, error); - - // Step across the connection to the jack on the adapter - hr = IConnector_GetConnectedTo(pConnFrom, &pConnTo); - if (HRESULT_FROM_WIN32(ERROR_PATH_NOT_FOUND) == hr) - { - // The adapter device is not currently active - hr = E_NOINTERFACE; - } - IF_FAILED_JUMP(hr, error); - - // Get the connector's IPart interface - hr = IConnector_QueryInterface(pConnTo, &pa_IID_IPart, (void**)&pPart); - IF_FAILED_JUMP(hr, error); - - // Activate the connector's IKsJackDescription interface - hr = IPart_Activate(pPart, CLSCTX_INPROC_SERVER, &pa_IID_IKsJackDescription, (void**)&pJackDesc); - IF_FAILED_JUMP(hr, error); - - // Return jack count for this device - hr = IKsJackDescription_GetJackCount(pJackDesc, &jackCount); - IF_FAILED_JUMP(hr, error); - - // Set. - (*pJackCount) = jackCount; - - // Ok. - ret = paNoError; - -error: - - SAFE_RELEASE(pDeviceTopology); - SAFE_RELEASE(pConnFrom); - SAFE_RELEASE(pConnTo); - SAFE_RELEASE(pPart); - SAFE_RELEASE(pJackDesc); - - LogHostError(hr); - return paNoError; -#else - (void)device; - (void)pJackCount; - return paUnanticipatedHostError; -#endif -} - -// ------------------------------------------------------------------------------------------ -#ifndef PA_WINRT -static PaWasapiJackConnectionType _ConvertJackConnectionTypeWASAPIToPA(int connType) -{ - switch (connType) - { - case eConnTypeUnknown: return eJackConnTypeUnknown; -#ifdef _KS_ - case eConnType3Point5mm: return eJackConnType3Point5mm; -#else - case eConnTypeEighth: return eJackConnType3Point5mm; -#endif - case eConnTypeQuarter: return eJackConnTypeQuarter; - case eConnTypeAtapiInternal: return eJackConnTypeAtapiInternal; - case eConnTypeRCA: return eJackConnTypeRCA; - case eConnTypeOptical: return eJackConnTypeOptical; - case eConnTypeOtherDigital: return eJackConnTypeOtherDigital; - case eConnTypeOtherAnalog: return eJackConnTypeOtherAnalog; - case eConnTypeMultichannelAnalogDIN: return eJackConnTypeMultichannelAnalogDIN; - case eConnTypeXlrProfessional: return eJackConnTypeXlrProfessional; - case eConnTypeRJ11Modem: return eJackConnTypeRJ11Modem; - case eConnTypeCombination: return eJackConnTypeCombination; - } - return eJackConnTypeUnknown; -} -#endif - -// ------------------------------------------------------------------------------------------ -#ifndef PA_WINRT -static PaWasapiJackGeoLocation _ConvertJackGeoLocationWASAPIToPA(int geoLoc) -{ - switch (geoLoc) - { - case eGeoLocRear: return eJackGeoLocRear; - case eGeoLocFront: return eJackGeoLocFront; - case eGeoLocLeft: return eJackGeoLocLeft; - case eGeoLocRight: return eJackGeoLocRight; - case eGeoLocTop: return eJackGeoLocTop; - case eGeoLocBottom: return eJackGeoLocBottom; -#ifdef _KS_ - case eGeoLocRearPanel: return eJackGeoLocRearPanel; -#else - case eGeoLocRearOPanel: return eJackGeoLocRearPanel; -#endif - case eGeoLocRiser: return eJackGeoLocRiser; - case eGeoLocInsideMobileLid: return eJackGeoLocInsideMobileLid; - case eGeoLocDrivebay: return eJackGeoLocDrivebay; - case eGeoLocHDMI: return eJackGeoLocHDMI; - case eGeoLocOutsideMobileLid: return eJackGeoLocOutsideMobileLid; - case eGeoLocATAPI: return eJackGeoLocATAPI; - } - return eJackGeoLocUnk; -} -#endif - -// ------------------------------------------------------------------------------------------ -#ifndef PA_WINRT -static PaWasapiJackGenLocation _ConvertJackGenLocationWASAPIToPA(int genLoc) -{ - switch (genLoc) - { - case eGenLocPrimaryBox: return eJackGenLocPrimaryBox; - case eGenLocInternal: return eJackGenLocInternal; -#ifdef _KS_ - case eGenLocSeparate: return eJackGenLocSeparate; -#else - case eGenLocSeperate: return eJackGenLocSeparate; -#endif - case eGenLocOther: return eJackGenLocOther; - } - return eJackGenLocPrimaryBox; -} -#endif - -// ------------------------------------------------------------------------------------------ -#ifndef PA_WINRT -static PaWasapiJackPortConnection _ConvertJackPortConnectionWASAPIToPA(int portConn) -{ - switch (portConn) - { - case ePortConnJack: return eJackPortConnJack; - case ePortConnIntegratedDevice: return eJackPortConnIntegratedDevice; - case ePortConnBothIntegratedAndJack: return eJackPortConnBothIntegratedAndJack; - case ePortConnUnknown: return eJackPortConnUnknown; - } - return eJackPortConnJack; -} -#endif - -// ------------------------------------------------------------------------------------------ -// Described at: -// http://msdn.microsoft.com/en-us/library/dd371387(v=VS.85).aspx - -PaError PaWasapi_GetJackDescription(PaDeviceIndex device, int jackIndex, PaWasapiJackDescription *pJackDescription) -{ -#ifndef PA_WINRT - PaError ret; - HRESULT hr = S_OK; - PaWasapiDeviceInfo *deviceInfo; - IDeviceTopology *pDeviceTopology = NULL; - IConnector *pConnFrom = NULL; - IConnector *pConnTo = NULL; - IPart *pPart = NULL; - IKsJackDescription *pJackDesc = NULL; - KSJACK_DESCRIPTION jack = { 0 }; - - if ((ret = _GetWasapiDeviceInfoByDeviceIndex(&deviceInfo, device)) != paNoError) - return ret; - - // Get the endpoint device's IDeviceTopology interface - hr = IMMDevice_Activate(deviceInfo->device, &pa_IID_IDeviceTopology, - CLSCTX_INPROC_SERVER, NULL, (void**)&pDeviceTopology); - IF_FAILED_JUMP(hr, error); - - // The device topology for an endpoint device always contains just one connector (connector number 0) - hr = IDeviceTopology_GetConnector(pDeviceTopology, 0, &pConnFrom); - IF_FAILED_JUMP(hr, error); - - // Step across the connection to the jack on the adapter - hr = IConnector_GetConnectedTo(pConnFrom, &pConnTo); - if (HRESULT_FROM_WIN32(ERROR_PATH_NOT_FOUND) == hr) - { - // The adapter device is not currently active - hr = E_NOINTERFACE; - } - IF_FAILED_JUMP(hr, error); - - // Get the connector's IPart interface - hr = IConnector_QueryInterface(pConnTo, &pa_IID_IPart, (void**)&pPart); - IF_FAILED_JUMP(hr, error); - - // Activate the connector's IKsJackDescription interface - hr = IPart_Activate(pPart, CLSCTX_INPROC_SERVER, &pa_IID_IKsJackDescription, (void**)&pJackDesc); - IF_FAILED_JUMP(hr, error); - - // Test to return jack description struct for index 0 - hr = IKsJackDescription_GetJackDescription(pJackDesc, jackIndex, &jack); - IF_FAILED_JUMP(hr, error); - - // Convert WASAPI values to PA format - pJackDescription->channelMapping = jack.ChannelMapping; - pJackDescription->color = jack.Color; - pJackDescription->connectionType = _ConvertJackConnectionTypeWASAPIToPA(jack.ConnectionType); - pJackDescription->genLocation = _ConvertJackGenLocationWASAPIToPA(jack.GenLocation); - pJackDescription->geoLocation = _ConvertJackGeoLocationWASAPIToPA(jack.GeoLocation); - pJackDescription->isConnected = jack.IsConnected; - pJackDescription->portConnection = _ConvertJackPortConnectionWASAPIToPA(jack.PortConnection); - - // Ok - ret = paNoError; - -error: - - SAFE_RELEASE(pDeviceTopology); - SAFE_RELEASE(pConnFrom); - SAFE_RELEASE(pConnTo); - SAFE_RELEASE(pPart); - SAFE_RELEASE(pJackDesc); - - LogHostError(hr); - return ret; - -#else - (void)device; - (void)jackIndex; - (void)pJackDescription; - return paUnanticipatedHostError; -#endif -} - -// ------------------------------------------------------------------------------------------ -PaError PaWasapi_GetAudioClient(PaStream *pStream, void **pAudioClient, int bOutput) -{ - PaWasapiStream *stream = (PaWasapiStream *)pStream; - if (stream == NULL) - return paBadStreamPtr; - - if (pAudioClient == NULL) - return paUnanticipatedHostError; - - (*pAudioClient) = (bOutput == TRUE ? stream->out.clientParent : stream->in.clientParent); - - return paNoError; -} - -// ------------------------------------------------------------------------------------------ -#ifdef PA_WINRT -static void CopyNameOrIdString(WCHAR *dst, const UINT32 dstMaxCount, const WCHAR *src) -{ - UINT32 i; - - for (i = 0; i < dstMaxCount; ++i) - dst[i] = 0; - - if (src != NULL) - { - for (i = 0; (src[i] != 0) && (i < dstMaxCount); ++i) - dst[i] = src[i]; - } -} -#endif - -// ------------------------------------------------------------------------------------------ -PaError PaWasapiWinrt_SetDefaultDeviceId( const unsigned short *pId, int bOutput ) -{ -#ifdef PA_WINRT - INT32 i; - PaWasapiWinrtDeviceListRole *role = (bOutput ? &g_DeviceListInfo.render : &g_DeviceListInfo.capture); - - assert(STATIC_ARRAY_SIZE(role->defaultId) == PA_WASAPI_DEVICE_ID_LEN); - - // Validate Id length - if (pId != NULL) - { - for (i = 0; pId[i] != 0; ++i) - { - if (i >= PA_WASAPI_DEVICE_ID_LEN) - return paBufferTooBig; - } - } - - // Set Id (or reset to all 0 if NULL is provided) - CopyNameOrIdString(role->defaultId, STATIC_ARRAY_SIZE(role->defaultId), pId); - - return paNoError; -#else - return paIncompatibleStreamHostApi; -#endif -} - -// ------------------------------------------------------------------------------------------ -PaError PaWasapiWinrt_PopulateDeviceList( const unsigned short **pId, const unsigned short **pName, - const PaWasapiDeviceRole *pRole, unsigned int count, int bOutput ) -{ -#ifdef PA_WINRT - UINT32 i, j; - PaWasapiWinrtDeviceListRole *role = (bOutput ? &g_DeviceListInfo.render : &g_DeviceListInfo.capture); - - memset(&role->devices, 0, sizeof(role->devices)); - role->deviceCount = 0; - - if (count == 0) - return paNoError; - else - if (count > PA_WASAPI_DEVICE_MAX_COUNT) - return paBufferTooBig; - - // pName or pRole are optional - if (pId == NULL) - return paInsufficientMemory; - - // Validate Id and Name lengths - for (i = 0; i < count; ++i) - { - const unsigned short *id = pId[i]; - const unsigned short *name = pName[i]; - - for (j = 0; id[j] != 0; ++j) - { - if (j >= PA_WASAPI_DEVICE_ID_LEN) - return paBufferTooBig; - } - - for (j = 0; name[j] != 0; ++j) - { - if (j >= PA_WASAPI_DEVICE_NAME_LEN) - return paBufferTooBig; - } - } - - // Set Id and Name (or reset to all 0 if NULL is provided) - for (i = 0; i < count; ++i) - { - CopyNameOrIdString(role->devices[i].id, STATIC_ARRAY_SIZE(role->devices[i].id), pId[i]); - CopyNameOrIdString(role->devices[i].name, STATIC_ARRAY_SIZE(role->devices[i].name), pName[i]); - role->devices[i].formFactor = (pRole != NULL ? (EndpointFormFactor)pRole[i] : UnknownFormFactor); - - // Count device if it has at least the Id - role->deviceCount += (role->devices[i].id[0] != 0); - } - - return paNoError; -#else - return paIncompatibleStreamHostApi; -#endif -} - -// ------------------------------------------------------------------------------------------ -PaError PaWasapi_SetStreamStateHandler( PaStream *pStream, PaWasapiStreamStateCallback fnStateHandler, void *pUserData ) -{ - PaWasapiStream *stream = (PaWasapiStream *)pStream; - if (stream == NULL) - return paBadStreamPtr; - - stream->fnStateHandler = fnStateHandler; - stream->pStateHandlerUserData = pUserData; - - return paNoError; -} - -// ------------------------------------------------------------------------------------------ -HRESULT _PollGetOutputFramesAvailable(PaWasapiStream *stream, UINT32 *available) -{ - HRESULT hr; - UINT32 frames = stream->out.framesPerHostCallback, - padding = 0; - - (*available) = 0; - - // get read position - if ((hr = IAudioClient_GetCurrentPadding(stream->out.clientProc, &padding)) != S_OK) - return LogHostError(hr); - - // get available - frames -= padding; - - // set - (*available) = frames; - return hr; -} - -// ------------------------------------------------------------------------------------------ -HRESULT _PollGetInputFramesAvailable(PaWasapiStream *stream, UINT32 *available) -{ - HRESULT hr; - - (*available) = 0; - - // GetCurrentPadding() has opposite meaning to Output stream - if ((hr = IAudioClient_GetCurrentPadding(stream->in.clientProc, available)) != S_OK) - return LogHostError(hr); - - return hr; -} - -// ------------------------------------------------------------------------------------------ -static HRESULT ProcessOutputBuffer(PaWasapiStream *stream, PaWasapiHostProcessor *processor, UINT32 frames) -{ - HRESULT hr; - BYTE *data = NULL; - - // Get buffer - if ((hr = IAudioRenderClient_GetBuffer(stream->renderClient, frames, &data)) != S_OK) - { - // Both modes, Shared and Exclusive, can fail with AUDCLNT_E_BUFFER_TOO_LARGE error - #if 0 - if (stream->out.shareMode == AUDCLNT_SHAREMODE_SHARED) - { - // Using GetCurrentPadding to overcome AUDCLNT_E_BUFFER_TOO_LARGE in - // shared mode results in no sound in Event-driven mode (MSDN does not - // document this, or is it WASAPI bug?), thus we better - // try to acquire buffer next time when GetBuffer allows to do so. - #if 0 - // Get Read position - UINT32 padding = 0; - hr = IAudioClient_GetCurrentPadding(stream->out.clientProc, &padding); - if (hr != S_OK) - return LogHostError(hr); - - // Get frames to write - frames -= padding; - if (frames == 0) - return S_OK; - - if ((hr = IAudioRenderClient_GetBuffer(stream->renderClient, frames, &data)) != S_OK) - return LogHostError(hr); - #else - if (hr == AUDCLNT_E_BUFFER_TOO_LARGE) - return S_OK; // be silent in shared mode, try again next time - #endif - } - else - return LogHostError(hr); - #else - if (hr == AUDCLNT_E_BUFFER_TOO_LARGE) - return S_OK; // try again next time - - return LogHostError(hr); - #endif - } - - // Process data - if (stream->out.monoMixer != NULL) - { - // expand buffer - UINT32 mono_frames_size = frames * (stream->out.wavex.Format.wBitsPerSample / 8); - if (mono_frames_size > stream->out.monoBufferSize) - { - stream->out.monoBuffer = PaWasapi_ReallocateMemory(stream->out.monoBuffer, (stream->out.monoBufferSize = mono_frames_size)); - if (stream->out.monoBuffer == NULL) - { - hr = E_OUTOFMEMORY; - LogHostError(hr); - return hr; - } - } - - // process - processor[S_OUTPUT].processor(NULL, 0, (BYTE *)stream->out.monoBuffer, frames, processor[S_OUTPUT].userData); - - // mix 1 to 2 channels - stream->out.monoMixer(data, stream->out.monoBuffer, frames); - } - else - { - processor[S_OUTPUT].processor(NULL, 0, data, frames, processor[S_OUTPUT].userData); - } - - // Release buffer - if ((hr = IAudioRenderClient_ReleaseBuffer(stream->renderClient, frames, 0)) != S_OK) - LogHostError(hr); - - return hr; -} - -// ------------------------------------------------------------------------------------------ -static HRESULT ProcessInputBuffer(PaWasapiStream *stream, PaWasapiHostProcessor *processor) -{ - HRESULT hr = S_OK; - UINT32 frames; - BYTE *data = NULL; - DWORD flags = 0; - - for (;;) - { - // Check if blocking call must be interrupted - if (WaitForSingleObject(stream->hCloseRequest, 0) != WAIT_TIMEOUT) - break; - - // Find out if any frames available - frames = 0; - if ((hr = _PollGetInputFramesAvailable(stream, &frames)) != S_OK) - return hr; - - // Empty/consumed buffer - if (frames == 0) - break; - - // Get the available data in the shared buffer. - if ((hr = IAudioCaptureClient_GetBuffer(stream->captureClient, &data, &frames, &flags, NULL, NULL)) != S_OK) - { - if (hr == AUDCLNT_S_BUFFER_EMPTY) - { - hr = S_OK; - break; // Empty/consumed buffer - } - - return LogHostError(hr); - break; - } - - // Detect silence - // if (flags & AUDCLNT_BUFFERFLAGS_SILENT) - // data = NULL; - - // Process data - if (stream->in.monoMixer != NULL) - { - // expand buffer - UINT32 mono_frames_size = frames * (stream->in.wavex.Format.wBitsPerSample / 8); - if (mono_frames_size > stream->in.monoBufferSize) - { - stream->in.monoBuffer = PaWasapi_ReallocateMemory(stream->in.monoBuffer, (stream->in.monoBufferSize = mono_frames_size)); - if (stream->in.monoBuffer == NULL) - { - hr = E_OUTOFMEMORY; - LogHostError(hr); - return hr; - } - } - - // mix 1 to 2 channels - stream->in.monoMixer(stream->in.monoBuffer, data, frames); - - // process - processor[S_INPUT].processor((BYTE *)stream->in.monoBuffer, frames, NULL, 0, processor[S_INPUT].userData); - } - else - { - processor[S_INPUT].processor(data, frames, NULL, 0, processor[S_INPUT].userData); - } - - // Release buffer - if ((hr = IAudioCaptureClient_ReleaseBuffer(stream->captureClient, frames)) != S_OK) - return LogHostError(hr); - - //break; - } - - return hr; -} - -// ------------------------------------------------------------------------------------------ -void _StreamOnStop(PaWasapiStream *stream) -{ - // Stop INPUT/OUTPUT clients - if (!stream->bBlocking) - { - if (stream->in.clientProc != NULL) - IAudioClient_Stop(stream->in.clientProc); - if (stream->out.clientProc != NULL) - IAudioClient_Stop(stream->out.clientProc); - } - else - { - if (stream->in.clientParent != NULL) - IAudioClient_Stop(stream->in.clientParent); - if (stream->out.clientParent != NULL) - IAudioClient_Stop(stream->out.clientParent); - } - - // Restore thread priority - if (stream->hAvTask != NULL) - { - PaWasapi_ThreadPriorityRevert(stream->hAvTask); - stream->hAvTask = NULL; - } - - // Notify - if (stream->streamRepresentation.streamFinishedCallback != NULL) - stream->streamRepresentation.streamFinishedCallback(stream->streamRepresentation.userData); -} - -// ------------------------------------------------------------------------------------------ -static BOOL PrepareComPointers(PaWasapiStream *stream, BOOL *threadComInitialized) -{ - HRESULT hr; - - /* - If COM is already initialized CoInitialize will either return - FALSE, or RPC_E_CHANGED_MODE if it was initialized in a different - threading mode. In either case we shouldn't consider it an error - but we need to be careful to not call CoUninitialize() if - RPC_E_CHANGED_MODE was returned. - */ - hr = CoInitializeEx(NULL, COINIT_APARTMENTTHREADED); - if (FAILED(hr) && (hr != RPC_E_CHANGED_MODE)) - { - PRINT(("WASAPI: failed ProcThreadEvent CoInitialize")); - return FALSE; - } - if (hr != RPC_E_CHANGED_MODE) - *threadComInitialized = TRUE; - - // Unmarshal stream pointers for safe COM operation - hr = UnmarshalStreamComPointers(stream); - if (hr != S_OK) - { - PRINT(("WASAPI: Error unmarshaling stream COM pointers. HRESULT: %i\n", hr)); - CoUninitialize(); - return FALSE; - } - - return TRUE; -} - -// ------------------------------------------------------------------------------------------ -static void FinishComPointers(PaWasapiStream *stream, BOOL threadComInitialized) -{ - // Release unmarshaled COM pointers - ReleaseUnmarshaledComPointers(stream); - - // Cleanup COM for this thread - if (threadComInitialized == TRUE) - CoUninitialize(); -} - -// ------------------------------------------------------------------------------------------ -PA_THREAD_FUNC ProcThreadEvent(void *param) -{ - PaWasapiHostProcessor processor[S_COUNT]; - HRESULT hr = S_OK; - DWORD dwResult; - PaWasapiStream *stream = (PaWasapiStream *)param; - PaWasapiHostProcessor defaultProcessor; - BOOL setEvent[S_COUNT] = { FALSE, FALSE }; - BOOL waitAllEvents = FALSE; - BOOL threadComInitialized = FALSE; - SystemTimer timer; - - // Notify: state - NotifyStateChanged(stream, paWasapiStreamStateThreadPrepare, ERROR_SUCCESS); - - // Prepare COM pointers - if (!PrepareComPointers(stream, &threadComInitialized)) - return (UINT32)paUnanticipatedHostError; - - // Request fine (1 ms) granularity of the system timer functions for precise operation of waitable timers - SystemTimer_SetGranularity(&timer, 1); - - // Waiting on all events in case of Full-Duplex/Exclusive mode. - if ((stream->in.clientProc != NULL) && (stream->out.clientProc != NULL)) - { - waitAllEvents = (stream->in.shareMode == AUDCLNT_SHAREMODE_EXCLUSIVE) && - (stream->out.shareMode == AUDCLNT_SHAREMODE_EXCLUSIVE); - } - - // Setup data processors - defaultProcessor.processor = WaspiHostProcessingLoop; - defaultProcessor.userData = stream; - processor[S_INPUT] = (stream->hostProcessOverrideInput.processor != NULL ? stream->hostProcessOverrideInput : defaultProcessor); - processor[S_OUTPUT] = (stream->hostProcessOverrideOutput.processor != NULL ? stream->hostProcessOverrideOutput : defaultProcessor); - - // Boost thread priority - PaWasapi_ThreadPriorityBoost((void **)&stream->hAvTask, stream->nThreadPriority); - - // Create events - if (stream->event[S_OUTPUT] == NULL) - { - stream->event[S_OUTPUT] = CreateEvent(NULL, FALSE, FALSE, NULL); - setEvent[S_OUTPUT] = TRUE; - } - if (stream->event[S_INPUT] == NULL) - { - stream->event[S_INPUT] = CreateEvent(NULL, FALSE, FALSE, NULL); - setEvent[S_INPUT] = TRUE; - } - if ((stream->event[S_OUTPUT] == NULL) || (stream->event[S_INPUT] == NULL)) - { - PRINT(("WASAPI Thread: failed creating Input/Output event handle\n")); - goto thread_error; - } - - // Signal: stream running - stream->running = TRUE; - - // Notify: thread started - SetEvent(stream->hThreadStart); - - // Initialize event & start INPUT stream - if (stream->in.clientProc) - { - // Create & set handle - if (setEvent[S_INPUT]) - { - if ((hr = IAudioClient_SetEventHandle(stream->in.clientProc, stream->event[S_INPUT])) != S_OK) - { - LogHostError(hr); - goto thread_error; - } - } - - // Start - if ((hr = IAudioClient_Start(stream->in.clientProc)) != S_OK) - { - LogHostError(hr); - goto thread_error; - } - } - - // Initialize event & start OUTPUT stream - if (stream->out.clientProc) - { - // Create & set handle - if (setEvent[S_OUTPUT]) - { - if ((hr = IAudioClient_SetEventHandle(stream->out.clientProc, stream->event[S_OUTPUT])) != S_OK) - { - LogHostError(hr); - goto thread_error; - } - } - - // Preload buffer before start - if ((hr = ProcessOutputBuffer(stream, processor, stream->out.framesPerBuffer)) != S_OK) - { - LogHostError(hr); - goto thread_error; - } - - // Start - if ((hr = IAudioClient_Start(stream->out.clientProc)) != S_OK) - { - LogHostError(hr); - goto thread_error; - } - - } - - // Notify: state - NotifyStateChanged(stream, paWasapiStreamStateThreadStart, ERROR_SUCCESS); - - // Processing Loop - for (;;) - { - // 10 sec timeout (on timeout stream will auto-stop when processed by WAIT_TIMEOUT case) - dwResult = WaitForMultipleObjects(S_COUNT, stream->event, waitAllEvents, 10*1000); - - // Check for close event (after wait for buffers to avoid any calls to user - // callback when hCloseRequest was set) - if (WaitForSingleObject(stream->hCloseRequest, 0) != WAIT_TIMEOUT) - break; - - // Process S_INPUT/S_OUTPUT - switch (dwResult) - { - case WAIT_TIMEOUT: { - PRINT(("WASAPI Thread: WAIT_TIMEOUT - probably bad audio driver or Vista x64 bug: use paWinWasapiPolling instead\n")); - goto thread_end; - break; } - - // Input stream - case WAIT_OBJECT_0 + S_INPUT: { - - if (stream->captureClient == NULL) - break; - - if ((hr = ProcessInputBuffer(stream, processor)) != S_OK) - { - LogHostError(hr); - goto thread_error; - } - - break; } - - // Output stream - case WAIT_OBJECT_0 + S_OUTPUT: { - - if (stream->renderClient == NULL) - break; - - if ((hr = ProcessOutputBuffer(stream, processor, stream->out.framesPerBuffer)) != S_OK) - { - LogHostError(hr); - goto thread_error; - } - - break; } - } - } - -thread_end: - - // Process stop - _StreamOnStop(stream); - - // Release unmarshaled COM pointers - FinishComPointers(stream, threadComInitialized); - - // Restore system timer granularity - SystemTimer_RestoreGranularity(&timer); - - // Notify: not running - stream->running = FALSE; - - // Notify: thread exited - SetEvent(stream->hThreadExit); - - // Notify: state - NotifyStateChanged(stream, paWasapiStreamStateThreadStop, hr); - - return 0; - -thread_error: - - // Prevent deadlocking in Pa_StreamStart - SetEvent(stream->hThreadStart); - - // Exit - goto thread_end; -} - -// ------------------------------------------------------------------------------------------ -static UINT32 GetSleepTime(PaWasapiStream *stream, UINT32 sleepTimeIn, UINT32 sleepTimeOut, UINT32 userFramesOut) -{ - UINT32 sleepTime; - - // According to the issue [https://github.com/PortAudio/portaudio/issues/303] glitches may occur when user frames - // equal to 1/2 of the host buffer frames, therefore the empirical workaround for this problem is to lower - // the sleep time by 2 - if (userFramesOut != 0) - { - UINT32 chunks = stream->out.framesPerHostCallback / userFramesOut; - if (chunks <= 2) - { - sleepTimeOut /= 2; - PRINT(("WASAPI: underrun workaround, sleep [%d] ms - 1/2 of the user buffer[%d] | host buffer[%d]\n", sleepTimeOut, userFramesOut, stream->out.framesPerHostCallback)); - } - } - - // Choose the smallest - if ((sleepTimeIn != 0) && (sleepTimeOut != 0)) - sleepTime = min(sleepTimeIn, sleepTimeOut); - else - sleepTime = (sleepTimeIn ? sleepTimeIn : sleepTimeOut); - - return sleepTime; -} - -// ------------------------------------------------------------------------------------------ -static UINT32 ConfigureLoopSleepTimeAndScheduler(PaWasapiStream *stream, ThreadIdleScheduler *scheduler) -{ - UINT32 sleepTime, sleepTimeIn, sleepTimeOut; - UINT32 userFramesIn = stream->in.framesPerHostCallback / WASAPI_PACKETS_PER_INPUT_BUFFER; - UINT32 userFramesOut = stream->out.framesPerBuffer; - - // Adjust polling time for non-paUtilFixedHostBufferSize, input stream is not adjustable as it is being - // polled according to its packet length - if (stream->bufferMode != paUtilFixedHostBufferSize) - { - userFramesOut = (stream->bufferProcessor.framesPerUserBuffer ? stream->bufferProcessor.framesPerUserBuffer : - stream->out.params.frames_per_buffer); - } - - // Calculate timeout for the next polling attempt - sleepTimeIn = GetFramesSleepTime(userFramesIn, stream->in.wavex.Format.nSamplesPerSec); - sleepTimeOut = GetFramesSleepTime(userFramesOut, stream->out.wavex.Format.nSamplesPerSec); - - // WASAPI input packets tend to expire very easily, let's limit sleep time to 2 milliseconds - // for all cases. Please propose better solution if any - if (sleepTimeIn > 2) - sleepTimeIn = 2; - - sleepTime = GetSleepTime(stream, sleepTimeIn, sleepTimeOut, userFramesOut); - - // Make sure not 0, othervise use ThreadIdleScheduler to bounce between [0, 1] ms to avoid too busy loop - if (sleepTime == 0) - { - sleepTimeIn = GetFramesSleepTimeMicroseconds(userFramesIn, stream->in.wavex.Format.nSamplesPerSec); - sleepTimeOut = GetFramesSleepTimeMicroseconds(userFramesOut, stream->out.wavex.Format.nSamplesPerSec); - - sleepTime = GetSleepTime(stream, sleepTimeIn, sleepTimeOut, userFramesOut); - - // Setup thread sleep scheduler - ThreadIdleScheduler_Setup(scheduler, 1, sleepTime/* microseconds here */); - sleepTime = 0; - } - - return sleepTime; -} - -// ------------------------------------------------------------------------------------------ -static inline INT32 GetNextSleepTime(SystemTimer *timer, ThreadIdleScheduler *scheduler, LONGLONG startTime, - UINT32 sleepTime) -{ - INT32 nextSleepTime; - INT32 procTime; - - // Get next sleep time - if (sleepTime == 0) - nextSleepTime = ThreadIdleScheduler_NextSleep(scheduler); - else - nextSleepTime = sleepTime; - - // Adjust next sleep time dynamically depending on how much time was spent in ProcessOutputBuffer/ProcessInputBuffer - // therefore periodicity will not jitter or be increased for the amount of time spent in processing; - // example when sleepTime is 10 ms where [] is polling time slot, {} processing time slot: - // - // [9],{2},[8],{1},[9],{1},[9],{3},[7],{2},[8],{3},[7],{2},[8],{2},[8],{3},[7],{2},[8],... - // - procTime = (INT32)(SystemTimer_GetTime(timer) - startTime); - nextSleepTime -= procTime; - if (nextSleepTime < timer->granularity) - nextSleepTime = 0; - else - if (timer->granularity > 1) - nextSleepTime = ALIGN_BWD(nextSleepTime, timer->granularity); - -#ifdef PA_WASAPI_LOG_TIME_SLOTS - printf("{%d},", procTime); -#endif - - return nextSleepTime; -} - -// ------------------------------------------------------------------------------------------ -PA_THREAD_FUNC ProcThreadPoll(void *param) -{ - PaWasapiHostProcessor processor[S_COUNT]; - HRESULT hr = S_OK; - PaWasapiStream *stream = (PaWasapiStream *)param; - PaWasapiHostProcessor defaultProcessor; - INT32 i; - ThreadIdleScheduler scheduler; - SystemTimer timer; - LONGLONG startTime; - UINT32 sleepTime; - INT32 nextSleepTime = 0; //! Do first loop without waiting as time could be spent when calling other APIs before ProcessXXXBuffer. - BOOL threadComInitialized = FALSE; -#ifdef PA_WASAPI_LOG_TIME_SLOTS - LONGLONG startWaitTime; -#endif - - // Notify: state - NotifyStateChanged(stream, paWasapiStreamStateThreadPrepare, ERROR_SUCCESS); - - // Prepare COM pointers - if (!PrepareComPointers(stream, &threadComInitialized)) - return (UINT32)paUnanticipatedHostError; - - // Request fine (1 ms) granularity of the system timer functions to guarantee correct logic around WaitForSingleObject - SystemTimer_SetGranularity(&timer, 1); - - // Calculate sleep time of the processing loop (inside WaitForSingleObject) - sleepTime = ConfigureLoopSleepTimeAndScheduler(stream, &scheduler); - - // Setup data processors - defaultProcessor.processor = WaspiHostProcessingLoop; - defaultProcessor.userData = stream; - processor[S_INPUT] = (stream->hostProcessOverrideInput.processor != NULL ? stream->hostProcessOverrideInput : defaultProcessor); - processor[S_OUTPUT] = (stream->hostProcessOverrideOutput.processor != NULL ? stream->hostProcessOverrideOutput : defaultProcessor); - - // Boost thread priority - PaWasapi_ThreadPriorityBoost((void **)&stream->hAvTask, stream->nThreadPriority); - - // Signal: stream running - stream->running = TRUE; - - // Notify: thread started - SetEvent(stream->hThreadStart); - - // Initialize event & start INPUT stream - if (stream->in.clientProc) - { - if ((hr = IAudioClient_Start(stream->in.clientProc)) != S_OK) - { - LogHostError(hr); - goto thread_error; - } - } - - // Initialize event & start OUTPUT stream - if (stream->out.clientProc) - { - // Preload buffer (obligatory, othervise ->Start() will fail), avoid processing - // when in full-duplex mode as it requires input processing as well - if (!PA_WASAPI__IS_FULLDUPLEX(stream)) - { - UINT32 frames = 0; - if ((hr = _PollGetOutputFramesAvailable(stream, &frames)) == S_OK) - { - if (stream->bufferMode == paUtilFixedHostBufferSize) - { - // It is important to preload whole host buffer to avoid underruns/glitches when stream is started, - // for more details see the discussion: https://github.com/PortAudio/portaudio/issues/303 - while (frames >= stream->out.framesPerBuffer) - { - if ((hr = ProcessOutputBuffer(stream, processor, stream->out.framesPerBuffer)) != S_OK) - { - LogHostError(hr); // not fatal, just log - break; - } - - frames -= stream->out.framesPerBuffer; - } - } - else - { - // Some devices may not start (will get stuck with 0 ready frames) if data not prefetched - if (frames == 0) - frames = stream->out.framesPerBuffer; - - // USB DACs report large buffer in Exclusive mode and if it is filled fully will stuck in - // non playing state, e.g. IAudioClient_GetCurrentPadding() will start reporting max buffer size - // constantly, thus preload data size equal to the user buffer to allow process going - if ((stream->out.shareMode == AUDCLNT_SHAREMODE_EXCLUSIVE) && (frames >= (stream->out.framesPerBuffer * 2))) - frames -= stream->out.framesPerBuffer; - - if ((hr = ProcessOutputBuffer(stream, processor, frames)) != S_OK) - { - LogHostError(hr); // not fatal, just log - } - } - } - else - { - LogHostError(hr); // not fatal, just log - } - } - - // Start - if ((hr = IAudioClient_Start(stream->out.clientProc)) != S_OK) - { - LogHostError(hr); - goto thread_error; - } - } - - // Notify: state - NotifyStateChanged(stream, paWasapiStreamStateThreadStart, ERROR_SUCCESS); - -#ifdef PA_WASAPI_LOG_TIME_SLOTS - startWaitTime = SystemTimer_GetTime(&timer); -#endif - - if (!PA_WASAPI__IS_FULLDUPLEX(stream)) - { - // Processing Loop - while (WaitForSingleObject(stream->hCloseRequest, nextSleepTime) == WAIT_TIMEOUT) - { - startTime = SystemTimer_GetTime(&timer); - - #ifdef PA_WASAPI_LOG_TIME_SLOTS - printf("[%d|%d],", nextSleepTime, (INT32)(startTime - startWaitTime)); - #endif - - for (i = 0; i < S_COUNT; ++i) - { - // Process S_INPUT/S_OUTPUT - switch (i) - { - // Input stream - case S_INPUT: { - - if (stream->captureClient == NULL) - break; - - if ((hr = ProcessInputBuffer(stream, processor)) != S_OK) - { - LogHostError(hr); - goto thread_error; - } - - break; } - - // Output stream - case S_OUTPUT: { - - UINT32 framesAvail; - - if (stream->renderClient == NULL) - break; - - // Get available frames - if ((hr = _PollGetOutputFramesAvailable(stream, &framesAvail)) != S_OK) - { - LogHostError(hr); - goto thread_error; - } - - // Output data to the user callback - if (stream->bufferMode == paUtilFixedHostBufferSize) - { - UINT32 framesProc = stream->out.framesPerBuffer; - - // If we got less frames avoid sleeping again as it might be the corner case and buffer - // has sufficient number of frames now, in case 'out.framesPerBuffer' is 1/2 of the host - // buffer sleeping again may cause underruns. Do short busy waiting (normally might take - // 1-2 iterations) - if (framesAvail < framesProc) - { - nextSleepTime = 0; - continue; - } - - while (framesAvail >= framesProc) - { - if ((hr = ProcessOutputBuffer(stream, processor, framesProc)) != S_OK) - { - LogHostError(hr); - goto thread_error; - } - - framesAvail -= framesProc; - } - } - else - if (framesAvail != 0) - { - if ((hr = ProcessOutputBuffer(stream, processor, framesAvail)) != S_OK) - { - LogHostError(hr); - goto thread_error; - } - } - - break; } - } - } - - // Get next sleep time - nextSleepTime = GetNextSleepTime(&timer, &scheduler, startTime, sleepTime); - - #ifdef PA_WASAPI_LOG_TIME_SLOTS - startWaitTime = SystemTimer_GetTime(&timer); - #endif - } - } - else - { - // Processing Loop (full-duplex) - while (WaitForSingleObject(stream->hCloseRequest, nextSleepTime) == WAIT_TIMEOUT) - { - UINT32 i_frames = 0, i_processed = 0, o_frames = 0; - BYTE *i_data = NULL, *o_data = NULL, *o_data_host = NULL; - DWORD i_flags = 0; - - startTime = SystemTimer_GetTime(&timer); - - #ifdef PA_WASAPI_LOG_TIME_SLOTS - printf("[%d|%d],", nextSleepTime, (INT32)(startTime - startWaitTime)); - #endif - - // get available frames - if ((hr = _PollGetOutputFramesAvailable(stream, &o_frames)) != S_OK) - { - LogHostError(hr); - break; - } - - while (o_frames != 0) - { - // get host input buffer - if ((hr = IAudioCaptureClient_GetBuffer(stream->captureClient, &i_data, &i_frames, &i_flags, NULL, NULL)) != S_OK) - { - if (hr == AUDCLNT_S_BUFFER_EMPTY) - break; // no data in capture buffer - - LogHostError(hr); - break; - } - - // process equal amount of frames - if (o_frames >= i_frames) - { - // process input amount of frames - UINT32 o_processed = i_frames; - - // get host output buffer - if ((hr = IAudioRenderClient_GetBuffer(stream->renderClient, o_processed, &o_data)) == S_OK) - { - // processed amount of i_frames - i_processed = i_frames; - o_data_host = o_data; - - // convert output mono - if (stream->out.monoMixer) - { - UINT32 mono_frames_size = o_processed * (stream->out.wavex.Format.wBitsPerSample / 8); - // expand buffer - if (mono_frames_size > stream->out.monoBufferSize) - { - stream->out.monoBuffer = PaWasapi_ReallocateMemory(stream->out.monoBuffer, (stream->out.monoBufferSize = mono_frames_size)); - if (stream->out.monoBuffer == NULL) - { - // release input buffer - IAudioCaptureClient_ReleaseBuffer(stream->captureClient, 0); - // release output buffer - IAudioRenderClient_ReleaseBuffer(stream->renderClient, 0, 0); - - LogPaError(paInsufficientMemory); - goto thread_error; - } - } - - // replace buffer pointer - o_data = (BYTE *)stream->out.monoBuffer; - } - - // convert input mono - if (stream->in.monoMixer) - { - UINT32 mono_frames_size = i_processed * (stream->in.wavex.Format.wBitsPerSample / 8); - // expand buffer - if (mono_frames_size > stream->in.monoBufferSize) - { - stream->in.monoBuffer = PaWasapi_ReallocateMemory(stream->in.monoBuffer, (stream->in.monoBufferSize = mono_frames_size)); - if (stream->in.monoBuffer == NULL) - { - // release input buffer - IAudioCaptureClient_ReleaseBuffer(stream->captureClient, 0); - // release output buffer - IAudioRenderClient_ReleaseBuffer(stream->renderClient, 0, 0); - - LogPaError(paInsufficientMemory); - goto thread_error; - } - } - - // mix 2 to 1 input channels - stream->in.monoMixer(stream->in.monoBuffer, i_data, i_processed); - - // replace buffer pointer - i_data = (BYTE *)stream->in.monoBuffer; - } - - // process - processor[S_FULLDUPLEX].processor(i_data, i_processed, o_data, o_processed, processor[S_FULLDUPLEX].userData); - - // mix 1 to 2 output channels - if (stream->out.monoBuffer) - stream->out.monoMixer(o_data_host, stream->out.monoBuffer, o_processed); - - // release host output buffer - if ((hr = IAudioRenderClient_ReleaseBuffer(stream->renderClient, o_processed, 0)) != S_OK) - LogHostError(hr); - - o_frames -= o_processed; - } - else - { - if (stream->out.shareMode != AUDCLNT_SHAREMODE_SHARED) - LogHostError(hr); // be silent in shared mode, try again next time - } - } - else - { - i_processed = 0; - goto fd_release_buffer_in; - } - -fd_release_buffer_in: - - // release host input buffer - if ((hr = IAudioCaptureClient_ReleaseBuffer(stream->captureClient, i_processed)) != S_OK) - { - LogHostError(hr); - break; - } - - // break processing, input hasn't been accumulated yet - if (i_processed == 0) - break; - } - - // Get next sleep time - nextSleepTime = GetNextSleepTime(&timer, &scheduler, startTime, sleepTime); - - #ifdef PA_WASAPI_LOG_TIME_SLOTS - startWaitTime = SystemTimer_GetTime(&timer); - #endif - } - } - -thread_end: - - // Process stop - _StreamOnStop(stream); - - // Release unmarshaled COM pointers - FinishComPointers(stream, threadComInitialized); - - // Restore system timer granularity - SystemTimer_RestoreGranularity(&timer); - - // Notify: not running - stream->running = FALSE; - - // Notify: thread exited - SetEvent(stream->hThreadExit); - - // Notify: state - NotifyStateChanged(stream, paWasapiStreamStateThreadStop, hr); - - return 0; - -thread_error: - - // Prevent deadlocking in Pa_StreamStart - SetEvent(stream->hThreadStart); - - // Exit - goto thread_end; -} - -// ------------------------------------------------------------------------------------------ -void *PaWasapi_ReallocateMemory(void *prev, size_t size) -{ - void *ret = realloc(prev, size); - if (ret == NULL) - { - PaWasapi_FreeMemory(prev); - return NULL; - } - return ret; -} - -// ------------------------------------------------------------------------------------------ -void PaWasapi_FreeMemory(void *ptr) -{ - free(ptr); -} diff --git a/portaudio/src/hostapi/wasapi/readme.txt b/portaudio/src/hostapi/wasapi/readme.txt deleted file mode 100644 index 0cfa0fa..0000000 --- a/portaudio/src/hostapi/wasapi/readme.txt +++ /dev/null @@ -1,22 +0,0 @@ -************** -* WASAPI API * -************** - -------------------------------------------- -Microsoft Visual Studio 2005 SP1 and higher -------------------------------------------- -No specific action is required to compile WASAPI API under Visual Studio. -You are only required to install min. Windows Vista SDK (v6.0A) prior -the compilation. To compile with WASAPI specific functionality for Windows 8 -and higher the min. Windows 8 SDK is required. - ----------------------------------------- -MinGW (GCC 32/64-bit) ----------------------------------------- -To compile with MinGW you are required to include 'mingw-include' directory -which contains necessary files with WASAPI API. These files are modified -for the compatibility with MinGW compiler. These files are taken from -the Windows Vista SDK (v6.0A). MinGW compilation is tested and proved to be -fully working. -MinGW (32-bit) tested min. version: gcc version 4.4.0 (GCC) -MinGW64 (64-bit) tested min. version: gcc version 4.4.4 20100226 (prerelease) (GCC)
\ No newline at end of file |