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...
|
||||
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
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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__ */
|
||||
|
||||
#ifndef __CPolicyConfigClient_FWD_DEFINED__
|
||||
#define __CPolicyConfigClient_FWD_DEFINED__
|
||||
typedef class CPolicyConfigClient CPolicyConfigClient;
|
||||
#endif /* __CPolicyConfigClient_FWD_DEFINED__ */
|
||||
|
||||
/*****************************************************************************
|
||||
* CPolicyConfigClient coclass
|
||||
*/
|
||||
|
||||
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
|
||||
|
||||
|
||||
#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 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 *\/ */
|
||||
/* /\* }; *\/ */
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue