change defaults poc
This commit is contained in:
parent
cb320da8cd
commit
33f3d8216f
5 changed files with 197 additions and 67 deletions
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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;
|
||||||
|
|
|
||||||
|
|
@ -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 *\/ */
|
||||||
|
/* /\* }; *\/ */
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue