File indexing completed on 2025-04-27 04:36:17
0001 /* 0002 * SPDX-License-Identifier: MIT 0003 * SPDX-FileCopyrightText: 2015 EreTIk 0004 */ 0005 0006 // ---------------------------------------------------------------------------- 0007 // PolicyConfig.h 0008 // Undocumented COM-interface IPolicyConfig. 0009 // Use for set default audio render endpoint 0010 // @author EreTIk 0011 // ---------------------------------------------------------------------------- 0012 0013 #pragma once 0014 #include "mmreg.h" 0015 0016 interface DECLSPEC_UUID("f8679f50-850a-41cf-9c72-430f290290c8") IPolicyConfig; 0017 class DECLSPEC_UUID("870af99c-171d-4f9e-af0d-e63df40c2bc9") CPolicyConfigClient; 0018 // ---------------------------------------------------------------------------- 0019 // class CPolicyConfigClient 0020 // {870af99c-171d-4f9e-af0d-e63df40c2bc9} 0021 // 0022 // interface IPolicyConfig 0023 // {f8679f50-850a-41cf-9c72-430f290290c8} 0024 // 0025 // Query interface: 0026 // CComPtr<IPolicyConfig> PolicyConfig; 0027 // PolicyConfig.CoCreateInstance(__uuidof(CPolicyConfigClient)); 0028 // 0029 // @compatible: Windows 7 and Later 0030 // ---------------------------------------------------------------------------- 0031 interface IPolicyConfig : public IUnknown 0032 { 0033 public: 0034 virtual HRESULT GetMixFormat(PCWSTR, WAVEFORMATEX **); 0035 0036 virtual HRESULT STDMETHODCALLTYPE GetDeviceFormat(PCWSTR, INT, WAVEFORMATEX **); 0037 0038 virtual HRESULT STDMETHODCALLTYPE ResetDeviceFormat(PCWSTR); 0039 0040 virtual HRESULT STDMETHODCALLTYPE SetDeviceFormat(PCWSTR, WAVEFORMATEX *, WAVEFORMATEX *); 0041 0042 virtual HRESULT STDMETHODCALLTYPE GetProcessingPeriod(PCWSTR, INT, PINT64, PINT64); 0043 0044 virtual HRESULT STDMETHODCALLTYPE SetProcessingPeriod(PCWSTR, PINT64); 0045 0046 virtual HRESULT STDMETHODCALLTYPE GetShareMode(PCWSTR, struct DeviceShareMode *); 0047 0048 virtual HRESULT STDMETHODCALLTYPE SetShareMode(PCWSTR, struct DeviceShareMode *); 0049 0050 virtual HRESULT STDMETHODCALLTYPE GetPropertyValue(PCWSTR, const PROPERTYKEY &, PROPVARIANT *); 0051 0052 virtual HRESULT STDMETHODCALLTYPE SetPropertyValue(PCWSTR, const PROPERTYKEY &, PROPVARIANT *); 0053 0054 virtual HRESULT STDMETHODCALLTYPE SetDefaultEndpoint(__in PCWSTR wszDeviceId, __in ERole eRole); 0055 0056 virtual HRESULT STDMETHODCALLTYPE SetEndpointVisibility(PCWSTR, INT); 0057 }; 0058 0059 interface DECLSPEC_UUID("568b9108-44bf-40b4-9006-86afe5b5a620") IPolicyConfigVista; 0060 class DECLSPEC_UUID("294935CE-F637-4E7C-A41B-AB255460B862") CPolicyConfigVistaClient; 0061 // ---------------------------------------------------------------------------- 0062 // class CPolicyConfigVistaClient 0063 // {294935CE-F637-4E7C-A41B-AB255460B862} 0064 // 0065 // interface IPolicyConfigVista 0066 // {568b9108-44bf-40b4-9006-86afe5b5a620} 0067 // 0068 // Query interface: 0069 // CComPtr<IPolicyConfigVista> PolicyConfig; 0070 // PolicyConfig.CoCreateInstance(__uuidof(CPolicyConfigVistaClient)); 0071 // 0072 // @compatible: Windows Vista and Later 0073 // ---------------------------------------------------------------------------- 0074 interface IPolicyConfigVista : public IUnknown 0075 { 0076 public: 0077 virtual HRESULT GetMixFormat(PCWSTR, 0078 WAVEFORMATEX **); // not available on Windows 7, use method from IPolicyConfig 0079 0080 virtual HRESULT STDMETHODCALLTYPE GetDeviceFormat(PCWSTR, INT, WAVEFORMATEX **); 0081 0082 virtual HRESULT STDMETHODCALLTYPE SetDeviceFormat(PCWSTR, WAVEFORMATEX *, WAVEFORMATEX *); 0083 0084 virtual HRESULT STDMETHODCALLTYPE GetProcessingPeriod(PCWSTR, INT, PINT64, 0085 PINT64); // not available on Windows 7, use method from IPolicyConfig 0086 0087 virtual HRESULT STDMETHODCALLTYPE SetProcessingPeriod(PCWSTR, 0088 PINT64); // not available on Windows 7, use method from IPolicyConfig 0089 0090 virtual HRESULT STDMETHODCALLTYPE GetShareMode(PCWSTR, 0091 struct DeviceShareMode *); // not available on Windows 7, use method from IPolicyConfig 0092 0093 virtual HRESULT STDMETHODCALLTYPE SetShareMode(PCWSTR, 0094 struct DeviceShareMode *); // not available on Windows 7, use method from IPolicyConfig 0095 0096 virtual HRESULT STDMETHODCALLTYPE GetPropertyValue(PCWSTR, const PROPERTYKEY &, PROPVARIANT *); 0097 0098 virtual HRESULT STDMETHODCALLTYPE SetPropertyValue(PCWSTR, const PROPERTYKEY &, PROPVARIANT *); 0099 0100 virtual HRESULT STDMETHODCALLTYPE SetDefaultEndpoint(__in PCWSTR wszDeviceId, __in ERole eRole); 0101 0102 virtual HRESULT STDMETHODCALLTYPE SetEndpointVisibility(PCWSTR, 0103 INT); // not available on Windows 7, use method from IPolicyConfig 0104 }; 0105 0106 // ----------------------------------------------------------------------------