Created
May 4, 2024 19:11
-
-
Save u130b8/dd4fa4c9084a7a4c0749c54d44af3a7c to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#define IUnknown_Parent(_type) \ | |
HRESULT(STDMETHODCALLTYPE* QueryInterface)(_type* self, const GUID* riid, void** object); \ | |
ULONG(STDMETHODCALLTYPE* AddRef)(_type* self); \ | |
ULONG(STDMETHODCALLTYPE* Release)(_type* self) | |
typedef struct IPolicyConfig IPolicyConfig; | |
typedef struct IPolicyConfigVista IPolicyConfigVista; | |
DEFINE_GUID(IID_IPolicyConfig, 0xf8679f50, 0x850a, 0x41cf, 0x9c, 0x72, 0x43, 0x0f, 0x29, 0x02, 0x90, 0xc8); | |
DEFINE_GUID(CLSID_PolicyConfigClient, 0x870af99c, 0x171d, 0x4f9e, 0xaf, 0x0d, 0xe6, 0x3d, 0xf4, 0x0c, 0x2b, 0xc9); | |
DEFINE_GUID(IID_IPolicyConfigVista, 0x568b9108, 0x44bf, 0x40b4, 0x90, 0x06, 0x86, 0xaf, 0xe5, 0xb5, 0xa6, 0x20); | |
DEFINE_GUID(CLSID_PolicyConfigClientVista, 0x294935CE, 0xF637, 0x4E7C, 0xA4, 0x1B, 0xAB, 0x25, 0x54, 0x60, 0xB8, 0x62); | |
struct IPolicyConfigVtbl { | |
IUnknown_Parent(IPolicyConfig); | |
HRESULT(STDMETHODCALLTYPE* GetMixFormat)(IPolicyConfig* this, PCWSTR id, WAVEFORMATEX** format); | |
HRESULT(STDMETHODCALLTYPE* GetDeviceFormat)(IPolicyConfig* this, PCWSTR id, BOOL is_default, WAVEFORMATEX** format); | |
HRESULT(STDMETHODCALLTYPE* ResetDeviceFormat)(IPolicyConfig* this, PCWSTR id); | |
HRESULT(STDMETHODCALLTYPE* SetDeviceFormat)(IPolicyConfig* this, PCWSTR id, WAVEFORMATEX* endpoint_format, WAVEFORMATEX* mix_format); | |
HRESULT(STDMETHODCALLTYPE* GetProcessingPeriod)(IPolicyConfig* this, PCWSTR id, BOOL is_default, PINT64 default_period, PINT64 minimum_period); | |
HRESULT(STDMETHODCALLTYPE* SetProcessingPeriod)(IPolicyConfig* this, PCWSTR id, PINT64 period); | |
HRESULT(STDMETHODCALLTYPE* GetShareMode)(IPolicyConfig* this, PCWSTR id, struct DeviceShareMode * mode); | |
HRESULT(STDMETHODCALLTYPE* SetShareMode)(IPolicyConfig* this, PCWSTR id, struct DeviceShareMode * mode); | |
HRESULT(STDMETHODCALLTYPE* GetPropertyValue)(IPolicyConfig* this, PCWSTR id, PROPERTYKEY* key, PROPVARIANT* value); | |
HRESULT(STDMETHODCALLTYPE* SetPropertyValue)(IPolicyConfig* this, PCWSTR id, PROPERTYKEY* key, PROPVARIANT* value); | |
HRESULT(STDMETHODCALLTYPE* SetDefaultEndpoint)(IPolicyConfig* this, PCWSTR id, ERole role); | |
HRESULT(STDMETHODCALLTYPE* SetEndpointVisibility)(IPolicyConfig* this, PCWSTR id, BOOL is_visible); | |
}; | |
struct IPolicyConfig { const struct IPolicyConfigVtbl* vtbl; }; | |
#define IPolicyConfig_GetMixFormat(this, id, format) this->vtbl->GetMixFormat(this, id, format) | |
#define IPolicyConfig_GetDeviceFormat(this, id, is_default, format) this->vtbl->GetDeviceFormat(this, id, is_default, format) | |
#define IPolicyConfig_ResetDeviceFormat(this, id) this->vtbl->ResetDeviceFormat(this, id) | |
#define IPolicyConfig_SetDeviceFormat(this, id, endpoint_format, mix_format) this->vtbl->SetDeviceFormat(this, id, endpoint_format, mix_format) | |
#define IPolicyConfig_GetProcessingPeriod(this, id, is_default, default_period, minimum_period) this->vtbl->GetProcessingPeriod(this, id, is_default, default_period, minimum_period) | |
#define IPolicyConfig_SetProcessingPeriod(this, id, period) this->vtbl->SetProcessingPeriod(this, id, period) | |
#define IPolicyConfig_GetShareMode(this, id, mode) this->vtbl->GetShareMode(this, id, mode) | |
#define IPolicyConfig_SetShareMode(this, id, mode) this->vtbl->SetShareMode(this, id, mode) | |
#define IPolicyConfig_GetPropertyValue(this, id, key, value) this->vtbl->GetPropertyValue(this, id, key, value) | |
#define IPolicyConfig_SetPropertyValue(this, id, key, value) this->vtbl->SetPropertyValue(this, id, key, value) | |
#define IPolicyConfig_SetDefaultEndpoint(this, id, role) this->vtbl->SetDefaultEndpoint(this, id, role) | |
#define IPolicyConfig_SetEndpointVisibility(this, id, is_visible) this->vtbl->SetEndpointVisibility(this, id, is_visible) | |
struct IPolicyConfigVistaVtbl { | |
IUnknown_Parent(IPolicyConfigVista); | |
HRESULT(STDMETHODCALLTYPE* GetMixFormat)(IPolicyConfigVista* this, PCWSTR id, WAVEFORMATEX** format); | |
HRESULT(STDMETHODCALLTYPE* GetDeviceFormat)(IPolicyConfigVista* this, PCWSTR id, BOOL is_default, WAVEFORMATEX** format); | |
HRESULT(STDMETHODCALLTYPE* SetDeviceFormat)(IPolicyConfigVista* this, PCWSTR id, WAVEFORMATEX* endpoint_format, WAVEFORMATEX* mix_format); | |
HRESULT(STDMETHODCALLTYPE* GetProcessingPeriod)(IPolicyConfigVista* this, PCWSTR id, BOOL is_default, PINT64 default_period, PINT64 minimum_period); | |
HRESULT(STDMETHODCALLTYPE* SetProcessingPeriod)(IPolicyConfigVista* this, PCWSTR id, PINT64 period); | |
HRESULT(STDMETHODCALLTYPE* GetShareMode)(IPolicyConfigVista* this, PCWSTR id, struct DeviceShareMode * mode); | |
HRESULT(STDMETHODCALLTYPE* SetShareMode)(IPolicyConfigVista* this, PCWSTR id, struct DeviceShareMode * mode); | |
HRESULT(STDMETHODCALLTYPE* GetPropertyValue)(IPolicyConfigVista* this, PCWSTR id, PROPERTYKEY* key, PROPVARIANT* value); | |
HRESULT(STDMETHODCALLTYPE* SetPropertyValue)(IPolicyConfigVista* this, PCWSTR id, PROPERTYKEY* key, PROPVARIANT* value); | |
HRESULT(STDMETHODCALLTYPE* SetDefaultEndpoint)(IPolicyConfigVista* this, PCWSTR id, ERole role); | |
HRESULT(STDMETHODCALLTYPE* SetEndpointVisibility)(IPolicyConfigVista* this, PCWSTR id, BOOL visible); | |
}; | |
struct IPolicyConfigVista { const struct IPolicyConfigVistaVtbl* vtbl; }; | |
#define IPolicyConfigVista_GetMixFormat(this, id, format) this->vtbl->GetMixFormat(this, id, format) | |
#define IPolicyConfigVista_GetDeviceFormat(this, id, is_default, format) this->vtbl->GetDeviceFormat(this, id, is_default, format) | |
#define IPolicyConfigVista_SetDeviceFormat(this, id, endpoint_format, mix_format) this->vtbl->SetDeviceFormat(this, id, endpoint_format, mix_format) | |
#define IPolicyConfigVista_GetProcessingPeriod(this, id, is_default, default_period, minimum_period) this->vtbl->GetProcessingPeriod(this, id, is_default, default_period, minimum_period) | |
#define IPolicyConfigVista_SetProcessingPeriod(this, id, period) this->vtbl->SetProcessingPeriod(this, id, period) | |
#define IPolicyConfigVista_GetShareMode(this, id, mode) this->vtbl->GetShareMode(this, id, mode) | |
#define IPolicyConfigVista_SetShareMode(this, id, mode) this->vtbl->SetShareMode(this, id, mode) | |
#define IPolicyConfigVista_GetPropertyValue(this, id, key, value) this->vtbl->GetPropertyValue(this, id, key, value) | |
#define IPolicyConfigVista_SetPropertyValue(this, id, key, value) this->vtbl->SetPropertyValue(this, id, key, value) | |
#define IPolicyConfigVista_SetDefaultEndpoint(this, id, role) this->vtbl->SetDefaultEndpoint(this, id, role) | |
#define IPolicyConfigVista_SetEndpointVisibility(this, id, is_visible) this->vtbl->SetEndpointVisibility(this, id, is_visible) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment