File indexing completed on 2024-04-28 08:49:12

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 // ----------------------------------------------------------------------------