change defaults poc

This commit is contained in:
Hane 2024-05-10 19:51:48 +02:00
commit 33f3d8216f
5 changed files with 197 additions and 67 deletions

View file

@ -569,8 +569,10 @@ void Overseer::initCOMLibrary() {
//todo: wtf? why is it working? floats are ptrs... //todo: wtf? why is it working? floats are ptrs...
this->guid = GUIDToNGuid(&tempGuid); this->guid = GUIDToNGuid(&tempGuid);
//if(FAILED(CoCreateInstance(__uuidof(CPolicyConfigClient), HRESULT hre = CoCreateInstance(__uuidof(CPolicyConfigClient),
// NULL, CLSCTX_ALL, __uuidof(IPolicyConfig10), (LPVOID *)&policyConfig))) {exit(-1);} NULL, CLSCTX_ALL,
__uuidof(IPolicyConfig7), (LPVOID *)&policyConfig);
if (hre != S_OK) exit(-1);
//TODO: Release lpguid? //TODO: Release lpguid?
//TODO: Uninitialize COM //TODO: Uninitialize COM
@ -606,6 +608,14 @@ void Overseer::reloadEndpoints(Flows flow) {
} }
deviceCollection->Release(); deviceCollection->Release();
//IPolicyConfig7 test
deviceEnumerator->GetDefaultAudioEndpoint(MSflow, ERole::eCommunications, &temp);
LPWSTR tempString = nullptr;
temp->GetId(&tempString);
HRESULT hre = policyConfig->SetDefaultEndpoint(
tempString,
ERole::eMultimedia
);
/* /*
* Discerning default endpoints per role * Discerning default endpoints per role

View file

@ -136,6 +136,7 @@ class Overseer {
std::vector<Endpoint*> playbackDevices; std::vector<Endpoint*> playbackDevices;
std::vector<Endpoint*> captureDevices; std::vector<Endpoint*> captureDevices;
void initCOMLibrary(); void initCOMLibrary();
IPolicyConfig7* policyConfig;
//IMMDeviceCollection *deviceCollection; //IMMDeviceCollection *deviceCollection;
//int numCaptureEndpoints; //int numCaptureEndpoints;
//std::vector<Endpoint*> *captureDevices; //std::vector<Endpoint*> *captureDevices;

View file

@ -1,47 +1,42 @@
// ----------------------------------------------------------------------------
// PolicyConfig.h
// Undocumented COM-interface IPolicyConfig.
// Use for set default audio render endpoint
// @author EreTIk
// ----------------------------------------------------------------------------
#pragma once #pragma once
#ifndef __IPolicyConfig7_FWD_DEFINED__
#define __IPolicyConfig7_FWD_DEFINED__
typedef interface IPolicyConfig7 IPolicyConfig7;
#ifdef __cplusplus
interface IPolicyConfig7;
#endif
#endif /* __IPolicyConfig7_FWD_DEFINED__ */
interface DECLSPEC_UUID("CA286FC3-91FD-42C3-8E9B-CAAFA66242E3") #ifndef __CPolicyConfigClient_FWD_DEFINED__
IPolicyConfig10; #define __CPolicyConfigClient_FWD_DEFINED__
typedef class CPolicyConfigClient CPolicyConfigClient;
#endif /* __CPolicyConfigClient_FWD_DEFINED__ */
interface DECLSPEC_UUID("00000000-0000-0000-C000-000000000046") /*****************************************************************************
IPolicyConfig10_1; * CPolicyConfigClient coclass
*/
interface DECLSPEC_UUID("F8679F50-850A-41CF-9C72-430F290290C8") DEFINE_GUID(CLSID_CPolicyConfigClient, 0x870af99c, 0x171d, 0x4f9e, 0xaf,0x0d, 0xe6,0x3d,0xf4,0x0c,0x2b,0xc9);
IPolicyConfig7; #ifdef __cplusplus
class DECLSPEC_UUID("870af99c-171d-4f9e-af0d-e63df40c2bc9") CPolicyConfigClient;
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(CPolicyConfigClient, 0x870af99c, 0x171d, 0x4f9e, 0xaf,0x0d, 0xe6,0x3d,0xf4,0x0c,0x2b,0xc9)
#endif
#endif
/* interface DECLSPEC_UUID("568B9108-44BF-40B4-9006-86AFE5B5A620") */
/* IPolicyConfigVista; */
interface DECLSPEC_UUID("f8679f50-850a-41cf-9c72-430f290290c8") /*****************************************************************************
IPolicyConfig; * IPolicyConfig7 interface
class DECLSPEC_UUID("870af99c-171d-4f9e-af0d-e63df40c2bc9") */
CPolicyConfigClient; #ifndef __IPolicyConfig7_INTERFACE_DEFINED__
// ---------------------------------------------------------------------------- #define __IPolicyConfig7_INTERFACE_DEFINED__
// class CPolicyConfigClient DEFINE_GUID(IID_IPolicyConfig7, 0xf8679f50, 0x850a, 0x41cf, 0x9c,0x72, 0x43,0x0f,0x29,0x02,0x90,0xc8);
// {870af99c-171d-4f9e-af0d-e63df40c2bc9} #if defined(__cplusplus) && !defined(CINTERFACE)
// MIDL_INTERFACE("f8679f50-850a-41cf-9c72-430f290290c8")
// interface IPolicyConfig IPolicyConfig7 : public IUnknown {
// {f8679f50-850a-41cf-9c72-430f290290c8}
//
// Query interface:
// CComPtr<IPolicyConfig> PolicyConfig;
// PolicyConfig.CoCreateInstance(__uuidof(CPolicyConfigClient));
//
// @compatible: Windows 7 and Later
// ----------------------------------------------------------------------------
interface IPolicyConfig : public IUnknown
{
public: public:
virtual HRESULT GetMixFormat( virtual HRESULT GetMixFormat(
PCWSTR, PCWSTR,
WAVEFORMATEX ** WAVEFORMATEX **
@ -107,32 +102,69 @@ public:
INT INT
); );
}; };
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IPolicyConfig7, 0xf8679f50, 0x850a, 0x41cf, 0x9c,0x72, 0x43,0x0f,0x29,0x02,0x90,0xc8)
#endif
#endif
#endif /* __IPolicyConfig7_INTERFACE_DEFINED__ */
/* __CRT_UUID_DECL(IPolicyConfig10, 0xca286fc3, 0x91fd, 0x42c3, 0x8e,0x9b, 0xca,0xaf,0xa6,0x62,0x42,0xe3) */
/* __CRT_UUID_DECL(CPolicyConfigClient, 0x870af99c, 0x171d, 0x4f9e, 0xaf,0x0d, 0xe6,0x3d,0xf4,0x0c,0x2b,0xc9) */
/* interface DECLSPEC_UUID("568b9108-44bf-40b4-9006-86afe5b5a620") */
/* IPolicyConfigVista; */
/* class DECLSPEC_UUID("294935CE-F637-4E7C-A41B-AB255460B862") */
/* CPolicyConfigVistaClient; */
/* // ---------------------------------------------------------------------------- */ /* // ---------------------------------------------------------------------------- */
/* // class CPolicyConfigVistaClient */ /* // PolicyConfig.h */
/* // {294935CE-F637-4E7C-A41B-AB255460B862} */ /* // Undocumented COM-interface IPolicyConfig. */
/* // Use for set default audio render endpoint */
/* // @author EreTIk */
/* // ---------------------------------------------------------------------------- */
/* #pragma once */
/* interface DECLSPEC_UUID("CA286FC3-91FD-42C3-8E9B-CAAFA66242E3") */
/* IPolicyConfig10; */
/* interface DECLSPEC_UUID("00000000-0000-0000-C000-000000000046") */
/* IPolicyConfig10_1; */
/* interface DECLSPEC_UUID("F8679F50-850A-41CF-9C72-430F290290C8") */
/* IPolicyConfig7; */
/* /\* interface DECLSPEC_UUID("568B9108-44BF-40B4-9006-86AFE5B5A620") *\/ */
/* /\* IPolicyConfigVista; *\/ */
/* interface DECLSPEC_UUID("f8679f50-850a-41cf-9c72-430f290290c8") */
/* IPolicyConfig; */
/* class DECLSPEC_UUID("870af99c-171d-4f9e-af0d-e63df40c2bc9") */
/* CPolicyConfigClient; */
/* // ---------------------------------------------------------------------------- */
/* // class CPolicyConfigClient */
/* // {870af99c-171d-4f9e-af0d-e63df40c2bc9} */
/* // */ /* // */
/* // interface IPolicyConfigVista */ /* // interface IPolicyConfig */
/* // {568b9108-44bf-40b4-9006-86afe5b5a620} */ /* // {f8679f50-850a-41cf-9c72-430f290290c8} */
/* // */ /* // */
/* // Query interface: */ /* // Query interface: */
/* // CComPtr<IPolicyConfigVista> PolicyConfig; */ /* // CComPtr<IPolicyConfig> PolicyConfig; */
/* // PolicyConfig.CoCreateInstance(__uuidof(CPolicyConfigVistaClient)); */ /* // PolicyConfig.CoCreateInstance(__uuidof(CPolicyConfigClient)); */
/* // */ /* // */
/* // @compatible: Windows Vista and Later */ /* // @compatible: Windows 7 and Later */
/* // ---------------------------------------------------------------------------- */ /* // ---------------------------------------------------------------------------- */
/* interface IPolicyConfigVista : public IUnknown */ /* interface IPolicyConfig : public IUnknown */
/* { */ /* { */
/* public: */ /* public: */
/* virtual HRESULT GetMixFormat( */ /* virtual HRESULT GetMixFormat( */
/* PCWSTR, */ /* PCWSTR, */
/* WAVEFORMATEX ** */ /* WAVEFORMATEX ** */
/* ); // not available on Windows 7, use method from IPolicyConfig */ /* ); */
/* virtual HRESULT STDMETHODCALLTYPE GetDeviceFormat( */ /* virtual HRESULT STDMETHODCALLTYPE GetDeviceFormat( */
/* PCWSTR, */ /* PCWSTR, */
@ -140,6 +172,10 @@ public:
/* WAVEFORMATEX ** */ /* WAVEFORMATEX ** */
/* ); */ /* ); */
/* virtual HRESULT STDMETHODCALLTYPE ResetDeviceFormat( */
/* PCWSTR */
/* ); */
/* virtual HRESULT STDMETHODCALLTYPE SetDeviceFormat( */ /* virtual HRESULT STDMETHODCALLTYPE SetDeviceFormat( */
/* PCWSTR, */ /* PCWSTR, */
/* WAVEFORMATEX *, */ /* WAVEFORMATEX *, */
@ -151,22 +187,22 @@ public:
/* INT, */ /* INT, */
/* PINT64, */ /* PINT64, */
/* PINT64 */ /* PINT64 */
/* ); // not available on Windows 7, use method from IPolicyConfig */ /* ); */
/* virtual HRESULT STDMETHODCALLTYPE SetProcessingPeriod( */ /* virtual HRESULT STDMETHODCALLTYPE SetProcessingPeriod( */
/* PCWSTR, */ /* PCWSTR, */
/* PINT64 */ /* PINT64 */
/* ); // not available on Windows 7, use method from IPolicyConfig */ /* ); */
/* virtual HRESULT STDMETHODCALLTYPE GetShareMode( */ /* virtual HRESULT STDMETHODCALLTYPE GetShareMode( */
/* PCWSTR, */ /* PCWSTR, */
/* struct DeviceShareMode * */ /* struct DeviceShareMode * */
/* ); // not available on Windows 7, use method from IPolicyConfig */ /* ); */
/* virtual HRESULT STDMETHODCALLTYPE SetShareMode( */ /* virtual HRESULT STDMETHODCALLTYPE SetShareMode( */
/* PCWSTR, */ /* PCWSTR, */
/* struct DeviceShareMode * */ /* struct DeviceShareMode * */
/* ); // not available on Windows 7, use method from IPolicyConfig */ /* ); */
/* virtual HRESULT STDMETHODCALLTYPE GetPropertyValue( */ /* virtual HRESULT STDMETHODCALLTYPE GetPropertyValue( */
/* PCWSTR, */ /* PCWSTR, */
@ -181,12 +217,95 @@ public:
/* ); */ /* ); */
/* virtual HRESULT STDMETHODCALLTYPE SetDefaultEndpoint( */ /* virtual HRESULT STDMETHODCALLTYPE SetDefaultEndpoint( */
/* __in PCWSTR wszDeviceId, */ /* PCWSTR wszDeviceId, */
/* __in ERole eRole */ /* ERole eRole */
/* ); */ /* ); */
/* virtual HRESULT STDMETHODCALLTYPE SetEndpointVisibility( */ /* virtual HRESULT STDMETHODCALLTYPE SetEndpointVisibility( */
/* PCWSTR, */ /* PCWSTR, */
/* INT */ /* INT */
/* ); // not available on Windows 7, use method from IPolicyConfig */ /* ); */
/* }; */ /* }; */
/* /\* interface DECLSPEC_UUID("568b9108-44bf-40b4-9006-86afe5b5a620") *\/ */
/* /\* IPolicyConfigVista; *\/ */
/* /\* class DECLSPEC_UUID("294935CE-F637-4E7C-A41B-AB255460B862") *\/ */
/* /\* CPolicyConfigVistaClient; *\/ */
/* /\* // ---------------------------------------------------------------------------- *\/ */
/* /\* // class CPolicyConfigVistaClient *\/ */
/* /\* // {294935CE-F637-4E7C-A41B-AB255460B862} *\/ */
/* /\* // *\/ */
/* /\* // interface IPolicyConfigVista *\/ */
/* /\* // {568b9108-44bf-40b4-9006-86afe5b5a620} *\/ */
/* /\* // *\/ */
/* /\* // Query interface: *\/ */
/* /\* // CComPtr<IPolicyConfigVista> PolicyConfig; *\/ */
/* /\* // PolicyConfig.CoCreateInstance(__uuidof(CPolicyConfigVistaClient)); *\/ */
/* /\* // *\/ */
/* /\* // @compatible: Windows Vista and Later *\/ */
/* /\* // ---------------------------------------------------------------------------- *\/ */
/* /\* interface IPolicyConfigVista : public IUnknown *\/ */
/* /\* { *\/ */
/* /\* public: *\/ */
/* /\* virtual HRESULT GetMixFormat( *\/ */
/* /\* PCWSTR, *\/ */
/* /\* WAVEFORMATEX ** *\/ */
/* /\* ); // not available on Windows 7, use method from IPolicyConfig *\/ */
/* /\* virtual HRESULT STDMETHODCALLTYPE GetDeviceFormat( *\/ */
/* /\* PCWSTR, *\/ */
/* /\* INT, *\/ */
/* /\* WAVEFORMATEX ** *\/ */
/* /\* ); *\/ */
/* /\* virtual HRESULT STDMETHODCALLTYPE SetDeviceFormat( *\/ */
/* /\* PCWSTR, *\/ */
/* /\* WAVEFORMATEX *, *\/ */
/* /\* WAVEFORMATEX * *\/ */
/* /\* ); *\/ */
/* /\* virtual HRESULT STDMETHODCALLTYPE GetProcessingPeriod( *\/ */
/* /\* PCWSTR, *\/ */
/* /\* INT, *\/ */
/* /\* PINT64, *\/ */
/* /\* PINT64 *\/ */
/* /\* ); // not available on Windows 7, use method from IPolicyConfig *\/ */
/* /\* virtual HRESULT STDMETHODCALLTYPE SetProcessingPeriod( *\/ */
/* /\* PCWSTR, *\/ */
/* /\* PINT64 *\/ */
/* /\* ); // not available on Windows 7, use method from IPolicyConfig *\/ */
/* /\* virtual HRESULT STDMETHODCALLTYPE GetShareMode( *\/ */
/* /\* PCWSTR, *\/ */
/* /\* struct DeviceShareMode * *\/ */
/* /\* ); // not available on Windows 7, use method from IPolicyConfig *\/ */
/* /\* virtual HRESULT STDMETHODCALLTYPE SetShareMode( *\/ */
/* /\* PCWSTR, *\/ */
/* /\* struct DeviceShareMode * *\/ */
/* /\* ); // not available on Windows 7, use method from IPolicyConfig *\/ */
/* /\* virtual HRESULT STDMETHODCALLTYPE GetPropertyValue( *\/ */
/* /\* PCWSTR, *\/ */
/* /\* const PROPERTYKEY &, *\/ */
/* /\* PROPVARIANT * *\/ */
/* /\* ); *\/ */
/* /\* virtual HRESULT STDMETHODCALLTYPE SetPropertyValue( *\/ */
/* /\* PCWSTR, *\/ */
/* /\* const PROPERTYKEY &, *\/ */
/* /\* PROPVARIANT * *\/ */
/* /\* ); *\/ */
/* /\* virtual HRESULT STDMETHODCALLTYPE SetDefaultEndpoint( *\/ */
/* /\* __in PCWSTR wszDeviceId, *\/ */
/* /\* __in ERole eRole *\/ */
/* /\* ); *\/ */
/* /\* virtual HRESULT STDMETHODCALLTYPE SetEndpointVisibility( *\/ */
/* /\* PCWSTR, *\/ */
/* /\* INT *\/ */
/* /\* ); // not available on Windows 7, use method from IPolicyConfig *\/ */
/* /\* }; *\/ */

View file

@ -23,10 +23,10 @@
//#include <comip.h> //#include <comip.h>
#include <Winerror.h> #include <Winerror.h>
#include <stringapiset.h> #include <stringapiset.h>
#include "ipolicyconfig.h"
#include <Mmreg.h> #include <Mmreg.h>
#include <tlhelp32.h> #include <tlhelp32.h>
#include "ipolicyconfig.h"
#include "audiometerinfo.h" #include "audiometerinfo.h"
// IAudioMeterInformation // IAudioMeterInformation