📄 mstscax.cpp
字号:
assert(m_IDispatch);
return m_IDispatch;
}
IMsTscAdvancedSettings * getIMsTscAdvancedSettings()
{
if(m_IMsTscAdvancedSettings)
return m_IMsTscAdvancedSettings;
else if(m_IMsRdpClientAdvancedSettings)
m_IMsTscAdvancedSettings = m_IMsRdpClientAdvancedSettings;
else if(m_IMsRdpClientAdvancedSettings2)
m_IMsTscAdvancedSettings = m_IMsRdpClientAdvancedSettings2;
else if(m_IMsRdpClientAdvancedSettings3)
m_IMsTscAdvancedSettings = m_IMsRdpClientAdvancedSettings3;
else if(m_IMsRdpClientAdvancedSettings4)
m_IMsTscAdvancedSettings = m_IMsRdpClientAdvancedSettings4;
if(m_IMsTscAdvancedSettings)
{
m_IMsTscAdvancedSettings->AddRef();
return m_IMsTscAdvancedSettings;
}
m_IUnknown->QueryInterface(&m_IMsTscAdvancedSettings);
return m_IMsTscAdvancedSettings;
}
IMsRdpClientAdvancedSettings * getIMsRdpClientAdvancedSettings()
{
if(m_IMsRdpClientAdvancedSettings)
return m_IMsRdpClientAdvancedSettings;
else if(m_IMsRdpClientAdvancedSettings2)
m_IMsRdpClientAdvancedSettings = m_IMsRdpClientAdvancedSettings2;
else if(m_IMsRdpClientAdvancedSettings3)
m_IMsRdpClientAdvancedSettings = m_IMsRdpClientAdvancedSettings3;
else if(m_IMsRdpClientAdvancedSettings4)
m_IMsRdpClientAdvancedSettings = m_IMsRdpClientAdvancedSettings4;
if(m_IMsRdpClientAdvancedSettings)
{
m_IMsRdpClientAdvancedSettings->AddRef();
return m_IMsRdpClientAdvancedSettings;
}
m_IUnknown->QueryInterface(&m_IMsRdpClientAdvancedSettings);
return m_IMsRdpClientAdvancedSettings;
}
IMsRdpClientAdvancedSettings2 * getIMsRdpClientAdvancedSettings2()
{
if(m_IMsRdpClientAdvancedSettings2)
return m_IMsRdpClientAdvancedSettings2;
else if(m_IMsRdpClientAdvancedSettings3)
m_IMsRdpClientAdvancedSettings2 = m_IMsRdpClientAdvancedSettings3;
else if(m_IMsRdpClientAdvancedSettings4)
m_IMsRdpClientAdvancedSettings2 = m_IMsRdpClientAdvancedSettings4;
if(m_IMsRdpClientAdvancedSettings2)
{
m_IMsRdpClientAdvancedSettings2->AddRef();
return m_IMsRdpClientAdvancedSettings2;
}
m_IUnknown->QueryInterface(&m_IMsRdpClientAdvancedSettings2);
return m_IMsRdpClientAdvancedSettings2;
}
IMsRdpClientAdvancedSettings3 * getIMsRdpClientAdvancedSettings3()
{
if(m_IMsRdpClientAdvancedSettings3)
return m_IMsRdpClientAdvancedSettings3;
else if(m_IMsRdpClientAdvancedSettings4)
m_IMsRdpClientAdvancedSettings3 = m_IMsRdpClientAdvancedSettings4;
if(m_IMsRdpClientAdvancedSettings3)
{
m_IMsRdpClientAdvancedSettings3->AddRef();
return m_IMsRdpClientAdvancedSettings3;
}
m_IUnknown->QueryInterface(&m_IMsRdpClientAdvancedSettings3);
return m_IMsRdpClientAdvancedSettings3;
}
IMsRdpClientAdvancedSettings4 * getIMsRdpClientAdvancedSettings4()
{
if(m_IMsRdpClientAdvancedSettings4)
return m_IMsRdpClientAdvancedSettings4;
if(m_IMsRdpClientAdvancedSettings4)
{
m_IMsRdpClientAdvancedSettings4->AddRef();
return m_IMsRdpClientAdvancedSettings4;
}
m_IUnknown->QueryInterface(&m_IMsRdpClientAdvancedSettings4);
return m_IMsRdpClientAdvancedSettings4;
}
~CAdvancedSettings()
{
m_IUnknown->Release();
m_IDispatch->Release();
if(m_IMsTscAdvancedSettings)
m_IMsTscAdvancedSettings->Release();
if(m_IMsRdpClientAdvancedSettings)
m_IMsRdpClientAdvancedSettings->Release();
if(m_IMsRdpClientAdvancedSettings2)
m_IMsRdpClientAdvancedSettings2->Release();
if(m_IMsRdpClientAdvancedSettings3)
m_IMsRdpClientAdvancedSettings3->Release();
if(m_IMsRdpClientAdvancedSettings4)
m_IMsRdpClientAdvancedSettings4->Release();
}
void Init(IMsTscAdvancedSettings * p)
{
m_IMsTscAdvancedSettings = p;
}
void Init(IMsRdpClientAdvancedSettings * p)
{
m_IMsRdpClientAdvancedSettings = p;
}
void Init(IMsRdpClientAdvancedSettings2 * p)
{
m_IMsRdpClientAdvancedSettings2 = p;
}
void Init(IMsRdpClientAdvancedSettings3 * p)
{
m_IMsRdpClientAdvancedSettings3 = p;
}
void Init(IMsRdpClientAdvancedSettings4 * p)
{
m_IMsRdpClientAdvancedSettings4 = p;
}
public:
template<class Interface> CAdvancedSettings(Interface * p):
m_refCount(1),
m_IUnknown(p),
m_IDispatch(p),
m_IMsTscAdvancedSettings(NULL),
m_IMsRdpClientAdvancedSettings(NULL),
m_IMsRdpClientAdvancedSettings2(NULL),
m_IMsRdpClientAdvancedSettings3(NULL),
m_IMsRdpClientAdvancedSettings4(NULL)
{
assert(p);
p->AddRef();
p->AddRef();
Init(p);
}
/* IUnknown */
virtual HRESULT STDMETHODCALLTYPE QueryInterface(REFIID riid, void ** ppvObject)
{
HRESULT hr;
IUnknown * pvObject;
dbgprintf(TEXT("CAdvancedSettings::QueryInterface(%ls, %p)"), UUIDToString(riid).c_str(), ppvObject);
#define QIBEGIN() \
if(riid == IID_IUnknown) \
{ \
hr = S_OK; \
pvObject = (IUnknown *)(this); \
}
#define QI(I) \
else if(riid == IID_ ## I) \
{ \
if(m_ ## I) \
{ \
m_ ## I->AddRef(); \
hr = S_OK; \
} \
else \
{ \
hr = m_IUnknown->QueryInterface(&m_ ## I); \
} \
\
if(SUCCEEDED(hr)) \
pvObject = static_cast<I *>(this); \
}
#define QIEND() \
else \
{ \
hr = E_NOINTERFACE; \
pvObject = NULL; \
}
QIBEGIN()
QI(IDispatch)
QI(IMsTscAdvancedSettings)
QI(IMsRdpClientAdvancedSettings)
QI(IMsRdpClientAdvancedSettings2)
QI(IMsRdpClientAdvancedSettings3)
QI(IMsRdpClientAdvancedSettings4)
QIEND()
#undef QIBEGIN
#undef QIEND
#undef QI
if(SUCCEEDED(hr))
{
assert(pvObject);
pvObject->AddRef();
}
else
{
assert(pvObject == NULL);
}
*ppvObject = pvObject;
dbgprintf(TEXT("CAdvancedSettings::QueryInterface -> %08X, ppvObject = %p"), hr, *ppvObject);
return hr;
}
virtual ULONG STDMETHODCALLTYPE AddRef(void)
{
return InterlockedIncrement(&m_refCount);
}
virtual ULONG STDMETHODCALLTYPE Release(void)
{
LONG n = InterlockedDecrement(&m_refCount);
if(n == 0)
delete this;
return n;
}
/* IDispatch */
/*
* p = get();
dbgprintf(TEXT("CAdvancedSettings::()"), );
HRESULT hr = p->();
dbgprintf(TEXT("CAdvancedSettings:: -> %08X, "), hr, );
return hr;
*/
virtual STDMETHODIMP IDispatch::GetTypeInfoCount(UINT * pctinfo)
{
IDispatch * pIDispatch = getIDispatch();
dbgprintf(TEXT("CAdvancedSettings::GetTypeInfoCount(%p)"), pctinfo);
HRESULT hr = pIDispatch->GetTypeInfoCount(pctinfo);
dbgprintf(TEXT("CAdvancedSettings::GetTypeInfoCount -> %08X, ctinfo = %u"), hr, *pctinfo);
return hr;
}
virtual STDMETHODIMP IDispatch::GetTypeInfo(UINT iTInfo, LCID lcid, ITypeInfo ** ppTInfo)
{
IDispatch * pIDispatch = getIDispatch();
dbgprintf(TEXT("CAdvancedSettings::GetTypeInfo(%u, %lu, %p)"), iTInfo, lcid, ppTInfo);
HRESULT hr = pIDispatch->GetTypeInfo(iTInfo, lcid, ppTInfo);
dbgprintf(TEXT("CAdvancedSettings::GetTypeInfo -> %08X, pTInfo = %p"), hr, *ppTInfo);
return hr;
}
virtual STDMETHODIMP IDispatch::GetIDsOfNames(REFIID riid, LPOLESTR * rgszNames, UINT cNames, LCID lcid, DISPID * rgDispId)
{
IDispatch * pIDispatch = getIDispatch();
dbgprintf(TEXT("CAdvancedSettings::GetIDsOfNames(%ls, %ls, %d, %lu, %p)"), UUIDToString(riid).c_str(), *rgszNames, cNames, lcid, rgDispId);
HRESULT hr = pIDispatch->GetIDsOfNames(riid, rgszNames, cNames, lcid, rgDispId);
dbgprintf(TEXT("CAdvancedSettings::GetIDsOfNames -> %08X, rgDispId = %ld"), hr, *rgDispId);
return hr;
}
virtual STDMETHODIMP IDispatch::Invoke(DISPID dispIdMember, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS * pDispParams, VARIANT * pVarResult, EXCEPINFO * pExcepInfo, UINT * puArgErr)
{
// TODO
IDispatch * pIDispatch = getIDispatch();
dbgprintf(TEXT("CAdvancedSettings::Invoke()")/*, */);
HRESULT hr = pIDispatch->Invoke(dispIdMember, riid, lcid, wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr);
dbgprintf(TEXT("CAdvancedSettings::Invoke -> %08X, "), hr/*, */);
return hr;
}
/* IMsTscAdvancedSettings */
virtual STDMETHODIMP IMsTscAdvancedSettings::put_Compress(long pcompress)
{
IMsTscAdvancedSettings * pIMsTscAdvancedSettings = getIMsTscAdvancedSettings();
dbgprintf(TEXT("CAdvancedSettings::put_Compress(%ld)"), pcompress);
HRESULT hr = pIMsTscAdvancedSettings->put_Compress(pcompress);
dbgprintf(TEXT("CAdvancedSettings::put_Compress -> %08X"), hr);
return hr;
}
virtual STDMETHODIMP IMsTscAdvancedSettings::get_Compress(long * pcompress)
{
IMsTscAdvancedSettings * pIMsTscAdvancedSettings = getIMsTscAdvancedSettings();
dbgprintf(TEXT("CAdvancedSettings::get_Compress(%p)"), pcompress);
HRESULT hr = pIMsTscAdvancedSettings->get_Compress(pcompress);
dbgprintf(TEXT("CAdvancedSettings::get_Compress -> %08X, compress = %ld"), hr, *pcompress);
return hr;
}
virtual STDMETHODIMP IMsTscAdvancedSettings::put_BitmapPeristence(long pbitmapPeristence)
{
IMsTscAdvancedSettings * pIMsTscAdvancedSettings = getIMsTscAdvancedSettings();
dbgprintf(TEXT("CAdvancedSettings::put_BitmapPeristence(%ld)"), pbitmapPeristence);
HRESULT hr = pIMsTscAdvancedSettings->put_BitmapPeristence(pbitmapPeristence);
dbgprintf(TEXT("CAdvancedSettings::put_BitmapPeristence -> %08X"), hr);
return hr;
}
virtual STDMETHODIMP IMsTscAdvancedSettings::get_BitmapPeristence(long * pbitmapPeristence)
{
IMsTscAdvancedSettings * pIMsTscAdvancedSettings = getIMsTscAdvancedSettings();
dbgprintf(TEXT("CAdvancedSettings::get_BitmapPeristence(%p)"), pbitmapPeristence);
HRESULT hr = pIMsTscAdvancedSettings->get_BitmapPeristence(pbitmapPeristence);
dbgprintf(TEXT("CAdvancedSettings::get_BitmapPeristence -> %08X, bitmapPeristence = %ld"), hr, *pbitmapPeristence);
return hr;
}
virtual STDMETHODIMP IMsTscAdvancedSettings::put_allowBackgroundInput(long pallowBackgroundInput)
{
IMsTscAdvancedSettings * pIMsTscAdvancedSettings = getIMsTscAdvancedSettings();
dbgprintf(TEXT("CAdvancedSettings::put_allowBackgroundInput(%ld)"), pallowBackgroundInput);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -