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...
this->guid = GUIDToNGuid(&tempGuid);
//if(FAILED(CoCreateInstance(__uuidof(CPolicyConfigClient),
// NULL, CLSCTX_ALL, __uuidof(IPolicyConfig10), (LPVOID *)&policyConfig))) {exit(-1);}
HRESULT hre = CoCreateInstance(__uuidof(CPolicyConfigClient),
NULL, CLSCTX_ALL,
__uuidof(IPolicyConfig7), (LPVOID *)&policyConfig);
if (hre != S_OK) exit(-1);
//TODO: Release lpguid?
//TODO: Uninitialize COM
@ -606,6 +608,14 @@ void Overseer::reloadEndpoints(Flows flow) {
}
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

View file

@ -136,6 +136,7 @@ class Overseer {
std::vector<Endpoint*> playbackDevices;
std::vector<Endpoint*> captureDevices;
void initCOMLibrary();
IPolicyConfig7* policyConfig;
//IMMDeviceCollection *deviceCollection;
//int numCaptureEndpoints;
//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
#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")
IPolicyConfig10;
#ifndef __CPolicyConfigClient_FWD_DEFINED__
#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")
IPolicyConfig7;
DEFINE_GUID(CLSID_CPolicyConfigClient, 0x870af99c, 0x171d, 0x4f9e, 0xaf,0x0d, 0xe6,0x3d,0xf4,0x0c,0x2b,0xc9);
#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;
class DECLSPEC_UUID("870af99c-171d-4f9e-af0d-e63df40c2bc9")
CPolicyConfigClient;
// ----------------------------------------------------------------------------
// class CPolicyConfigClient
// {870af99c-171d-4f9e-af0d-e63df40c2bc9}
//
// interface IPolicyConfig
// {f8679f50-850a-41cf-9c72-430f290290c8}
//
// Query interface:
// CComPtr<IPolicyConfig> PolicyConfig;
// PolicyConfig.CoCreateInstance(__uuidof(CPolicyConfigClient));
//
// @compatible: Windows 7 and Later
// ----------------------------------------------------------------------------
interface IPolicyConfig : public IUnknown
{
/*****************************************************************************
* IPolicyConfig7 interface
*/
#ifndef __IPolicyConfig7_INTERFACE_DEFINED__
#define __IPolicyConfig7_INTERFACE_DEFINED__
DEFINE_GUID(IID_IPolicyConfig7, 0xf8679f50, 0x850a, 0x41cf, 0x9c,0x72, 0x43,0x0f,0x29,0x02,0x90,0xc8);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("f8679f50-850a-41cf-9c72-430f290290c8")
IPolicyConfig7 : public IUnknown {
public:
virtual HRESULT GetMixFormat(
PCWSTR,
WAVEFORMATEX **
@ -107,32 +102,69 @@ public:
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 */
/* // {294935CE-F637-4E7C-A41B-AB255460B862} */
/* // PolicyConfig.h */
/* // 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 */
/* // {568b9108-44bf-40b4-9006-86afe5b5a620} */
/* // interface IPolicyConfig */
/* // {f8679f50-850a-41cf-9c72-430f290290c8} */
/* // */
/* // Query interface: */
/* // CComPtr<IPolicyConfigVista> PolicyConfig; */
/* // PolicyConfig.CoCreateInstance(__uuidof(CPolicyConfigVistaClient)); */
/* // CComPtr<IPolicyConfig> PolicyConfig; */
/* // PolicyConfig.CoCreateInstance(__uuidof(CPolicyConfigClient)); */
/* // */
/* // @compatible: Windows Vista and Later */
/* // @compatible: Windows 7 and Later */
/* // ---------------------------------------------------------------------------- */
/* interface IPolicyConfigVista : public IUnknown */
/* interface IPolicyConfig : public IUnknown */
/* { */
/* public: */
/* virtual HRESULT GetMixFormat( */
/* PCWSTR, */
/* WAVEFORMATEX ** */
/* ); // not available on Windows 7, use method from IPolicyConfig */
/* ); */
/* virtual HRESULT STDMETHODCALLTYPE GetDeviceFormat( */
/* PCWSTR, */
@ -140,6 +172,10 @@ public:
/* WAVEFORMATEX ** */
/* ); */
/* virtual HRESULT STDMETHODCALLTYPE ResetDeviceFormat( */
/* PCWSTR */
/* ); */
/* virtual HRESULT STDMETHODCALLTYPE SetDeviceFormat( */
/* PCWSTR, */
/* WAVEFORMATEX *, */
@ -151,22 +187,22 @@ public:
/* 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, */
@ -181,12 +217,95 @@ public:
/* ); */
/* virtual HRESULT STDMETHODCALLTYPE SetDefaultEndpoint( */
/* __in PCWSTR wszDeviceId, */
/* __in ERole eRole */
/* PCWSTR wszDeviceId, */
/* ERole eRole */
/* ); */
/* virtual HRESULT STDMETHODCALLTYPE SetEndpointVisibility( */
/* PCWSTR, */
/* 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 <Winerror.h>
#include <stringapiset.h>
#include "ipolicyconfig.h"
#include <Mmreg.h>
#include <tlhelp32.h>
#include "ipolicyconfig.h"
#include "audiometerinfo.h"
// IAudioMeterInformation