Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

1326 lines
36 KiB

//
// mstub.cpp
//
#include "private.h"
#include "mstub.h"
#include "mproxy.h"
#include "ithdmshl.h"
#include "transmit.h"
//////////////////////////////////////////////////////////////////////////////
//
// StubCreator
//
//////////////////////////////////////////////////////////////////////////////
#define CREATENEWSTUB(interface_name) \
if (IsEqualIID(riid, IID_ ## interface_name ## )) \
{ \
CStub *pStub = new CStub ## interface_name ## ; \
if (!pStub) \
return NULL; \
pStub->_iid = riid; \
pStub->_ulStubId = ulStubId; \
pStub->_dwStubTime = dwStubTime; \
pStub->_dwStubThreadId = dwCurThreadId; \
pStub->_dwStubProcessId = dwCurProcessId; \
pStub->_dwSrcThreadId = dwSrcThreadId; \
pStub->_punk = punk; \
pStub->_punk->AddRef(); \
return pStub; \
}
CStub *StubCreator(REFIID riid, IUnknown *punk, ULONG ulStubId, DWORD dwStubTime, DWORD dwCurThreadId, DWORD dwCurProcessId, DWORD dwSrcThreadId)
{
Assert(dwCurThreadId != dwSrcThreadId);
CREATENEWSTUB(ITfLangBarMgr);
CREATENEWSTUB(ITfLangBarItemMgr);
CREATENEWSTUB(ITfLangBarItemSink);
CREATENEWSTUB(IEnumTfLangBarItems);
CREATENEWSTUB(ITfLangBarItem);
CREATENEWSTUB(ITfLangBarItemButton);
CREATENEWSTUB(ITfLangBarItemBitmapButton);
CREATENEWSTUB(ITfLangBarItemBitmap);
CREATENEWSTUB(ITfLangBarItemBalloon);
CREATENEWSTUB(ITfMenu);
CREATENEWSTUB(ITfInputProcessorProfiles);
return NULL;
}
void StubPointerToParam(MARSHALPARAM *pParam, void *pv)
{
Assert(pParam->dwFlags & MPARAM_OUT);
Assert(pParam->cbBufSize >= sizeof(void *));
void **ppv = (void **)ParamToBufferPointer(pParam);
*ppv = pv;
}
void StubParamPointerToParam(MARSHALPARAM *pParam, void *pv)
{
Assert(pParam->dwFlags & MPARAM_OUT);
Assert(pParam->cbBufSize >= sizeof(void *));
void *pBuf = ParamToBufferPointer(pParam);
memcpy(pBuf, pv, pParam->cbBufSize);
}
void *ParamToMarshaledPointer(MARSHALMSG *pMsg, REFIID riid, ULONG ulParam, BOOL *pfNULLStack = NULL)
{
MARSHALINTERFACEPARAM *pmiparam = (MARSHALINTERFACEPARAM *)ParamToBufferPointer(pMsg, ulParam);
void *pv = NULL;
Assert(pfNULLStack || !pmiparam->fNULLStack);
if (pfNULLStack)
*pfNULLStack = pmiparam->fNULLStack;
if (pmiparam->fNULLPointer)
return NULL;
CicCoUnmarshalInterface(riid, pMsg->dwSrcThreadId, pmiparam->ulStubId, pmiparam->dwStubTime, &pv);
return pv;
}
BOOL ParamToArrayMarshaledPointer(ULONG ulCount, void **ppv, MARSHALMSG *pMsg, REFIID riid, ULONG ulParam, BOOL *pfNULLStack = NULL)
{
MARSHALINTERFACEPARAM *pmiparam = (MARSHALINTERFACEPARAM *)ParamToBufferPointer(pMsg, ulParam);
Assert(pfNULLStack || !pmiparam->fNULLStack);
if (pfNULLStack)
*pfNULLStack = pmiparam->fNULLStack;
if (pmiparam->fNULLPointer)
return FALSE;
ULONG ul;
for (ul = 0; ul < ulCount; ul++)
{
CicCoUnmarshalInterface(riid, pMsg->dwSrcThreadId, pmiparam->ulStubId, pmiparam->dwStubTime, ppv);
ppv++;
pmiparam++;
}
return TRUE;
}
void ClearMarshaledPointer(IUnknown *punk)
{
if (!punk)
return;
CProxyIUnknown *pProxy = GetCProxyIUnknown(punk);
if (!pProxy)
return;
if (pProxy->InternalRelease())
pProxy->InternalRelease();
else
Assert(0);
}
HBITMAP ParamToHBITMAP(MARSHALMSG *pMsg , ULONG ulParam)
{
MARSHALPARAM *pParam = GetMarshalParam(pMsg, ulParam);
HBITMAP hbmp = NULL;
if (pParam->cbBufSize)
{
BYTE *pBuf = (BYTE *)ParamToBufferPointer(pParam);
Cic_HBITMAP_UserUnmarshal(pBuf, &hbmp);
}
return hbmp;
}
#define PREPARE_PARAM_START() \
if (!psb->GetMutex()->Enter()) \
return E_FAIL; \
_try \
{
#define PREPARE_PARAM_END() \
} \
_except(1) \
{ \
Assert(0); \
psb->GetMutex()->Leave(); \
return E_FAIL; \
} \
psb->GetMutex()->Leave();
//////////////////////////////////////////////////////////////////////////////
//
// CStubIUnknown
//
//////////////////////////////////////////////////////////////////////////////
MSTUBCALL CStubIUnknown::_StubTbl[] =
{
stub_QueryInterface,
stub_AddRef,
stub_Release
};
HRESULT CStubIUnknown::stub_QueryInterface(CStub *_this, MARSHALMSG *pMsg, CSharedBlock *psb)
{
IID iid;
void *pv;
Assert(pMsg->ulParamNum == 2);
PREPARE_PARAM_START()
iid = *(IID *)ParamToBufferPointer(pMsg, 0);
PREPARE_PARAM_END()
HRESULT hrRet = _this->_punk->QueryInterface(iid, &pv);
if (SUCCEEDED(hrRet))
{
_this->_AddRef();
}
else
{
pv = NULL;
}
CSTUB_PARAM_START()
CSTUB_PARAM_POINTER_IN(&iid)
CSTUB_PARAM_INTERFACE_OUT(&pv, iid)
CSTUB_PARAM_END()
CSTUB_PARAM_CALL(pMsg, hrRet, psb);
CSTUB_PARAM_INTERFACE_OUT_RELEASE(pv)
CSTUB_PARAM_RETURN()
}
HRESULT CStubIUnknown::stub_AddRef(CStub *_this, MARSHALMSG *pMsg, CSharedBlock *psb)
{
Assert(pMsg->ulParamNum == 0);
pMsg->ulRet = _this->_punk->AddRef();
_this->_AddRef();
return S_OK;
}
HRESULT CStubIUnknown::stub_Release(CStub *_this, MARSHALMSG *pMsg, CSharedBlock *psb)
{
Assert(pMsg->ulParamNum == 0);
pMsg->ulRet = _this->_punk->Release();
if (!pMsg->ulRet)
_this->_punk = NULL;
_this->_Release();
return S_OK;
}
//////////////////////////////////////////////////////////////////////////////
//
// CStubITfLangBarMgr
//
//////////////////////////////////////////////////////////////////////////////
MSTUBCALL CStubITfLangBarMgr::_StubTbl[] =
{
stub_QueryInterface,
stub_AddRef,
stub_Release,
stub_AdviseEventSink,
stub_UnadviseEventSink,
stub_GetThreadMarshalInterface,
stub_GetThreadLangBarItemMgr,
stub_GetInputProcessorProfiles,
stub_RestoreLastFocus,
stub_SetModalInput,
stub_ShowFloating,
stub_GetShowFloatingStatus,
};
HRESULT CStubITfLangBarMgr::stub_AdviseEventSink(CStub *_this, MARSHALMSG *pMsg, CSharedBlock *psb)
{
CSTUB_NOT_IMPL()
}
HRESULT CStubITfLangBarMgr::stub_UnadviseEventSink(CStub *_this, MARSHALMSG *pMsg, CSharedBlock *psb)
{
CSTUB_NOT_IMPL()
}
HRESULT CStubITfLangBarMgr::stub_GetThreadMarshalInterface(CStub *_this, MARSHALMSG *pMsg, CSharedBlock *psb)
{
CSTUB_NOT_IMPL()
}
HRESULT CStubITfLangBarMgr::stub_GetThreadLangBarItemMgr(CStub *_this, MARSHALMSG *pMsg, CSharedBlock *psb)
{
CSTUB_NOT_IMPL()
}
HRESULT CStubITfLangBarMgr::stub_GetInputProcessorProfiles(CStub *_this, MARSHALMSG *pMsg, CSharedBlock *psb)
{
CSTUB_NOT_IMPL()
}
HRESULT CStubITfLangBarMgr::stub_RestoreLastFocus(CStub *_this, MARSHALMSG *pMsg, CSharedBlock *psb)
{
CSTUB_NOT_IMPL()
}
HRESULT CStubITfLangBarMgr::stub_SetModalInput(CStub *_this, MARSHALMSG *pMsg, CSharedBlock *psb)
{
CSTUB_NOT_IMPL()
}
HRESULT CStubITfLangBarMgr::stub_ShowFloating(CStub *_this, MARSHALMSG *pMsg, CSharedBlock *psb)
{
CSTUB_NOT_IMPL()
}
HRESULT CStubITfLangBarMgr::stub_GetShowFloatingStatus(CStub *_this, MARSHALMSG *pMsg, CSharedBlock *psb)
{
CSTUB_NOT_IMPL()
}
//////////////////////////////////////////////////////////////////////////////
//
// CStubITfLangBarItemMgr
//
//////////////////////////////////////////////////////////////////////////////
MSTUBCALL CStubITfLangBarItemMgr::_StubTbl[] =
{
stub_QueryInterface,
stub_AddRef,
stub_Release,
stub_EnumItems,
stub_GetItem,
stub_AddItem,
stub_RemoveItem,
stub_AdviseItemSink,
stub_UnadviseItemSink,
stub_GetItemFloatingRect,
stub_GetItemsStatus,
stub_GetItemNum,
stub_GetItems,
stub_AdviseItemsSink,
stub_UnadviseItemsSink,
};
HRESULT CStubITfLangBarItemMgr::stub_EnumItems(CStub *_this, MARSHALMSG *pMsg, CSharedBlock *psb)
{
HRESULT hrRet;
void *pv = NULL;
Assert(pMsg->ulParamNum == 1);
hrRet = ((ITfLangBarItemMgr *)_this->_punk)->EnumItems((IEnumTfLangBarItems **)&pv);
CSTUB_PARAM_START()
CSTUB_PARAM_INTERFACE_OUT(&pv, IID_IEnumTfLangBarItems)
CSTUB_PARAM_END()
CSTUB_PARAM_CALL(pMsg, hrRet, psb);
CSTUB_PARAM_INTERFACE_OUT_RELEASE(pv)
CSTUB_PARAM_RETURN()
}
HRESULT CStubITfLangBarItemMgr::stub_GetItem(CStub *_this, MARSHALMSG *pMsg, CSharedBlock *psb)
{
CSTUB_NOT_IMPL()
}
HRESULT CStubITfLangBarItemMgr::stub_AddItem(CStub *_this, MARSHALMSG *pMsg, CSharedBlock *psb)
{
CSTUB_NOT_IMPL()
}
HRESULT CStubITfLangBarItemMgr::stub_RemoveItem(CStub *_this, MARSHALMSG *pMsg, CSharedBlock *psb)
{
CSTUB_NOT_IMPL()
}
HRESULT CStubITfLangBarItemMgr::stub_AdviseItemSink(CStub *_this, MARSHALMSG *pMsg, CSharedBlock *psb)
{
TraceMsg(TF_FUNC, "CStubITfLangbarItemMgr::AdviseItemSink");
ITfLangBarItemSink *punk = NULL;
DWORD dwCookie = 0;
GUID guid = {0};
PREPARE_PARAM_START()
punk = (ITfLangBarItemSink *)ParamToMarshaledPointer(pMsg, IID_ITfLangBarItemSink, 0);
guid = *(GUID *)ParamToBufferPointer(pMsg, 2);
PREPARE_PARAM_END()
HRESULT hrRet = ((ITfLangBarItemMgr *)_this->_punk)->AdviseItemSink(punk, &dwCookie, (REFGUID)guid);
ClearMarshaledPointer(punk);
CSTUB_PARAM_START()
CSTUB_PARAM_INTERFACE_IN(NULL, IID_ITfLangBarItemSink)
CSTUB_PARAM_POINTER_OUT(&dwCookie)
CSTUB_PARAM_POINTER_IN(&guid)
CSTUB_PARAM_END()
CSTUB_PARAM_CALL(pMsg, hrRet, psb);
CSTUB_PARAM_RETURN()
}
HRESULT CStubITfLangBarItemMgr::stub_UnadviseItemSink(CStub *_this, MARSHALMSG *pMsg, CSharedBlock *psb)
{
DWORD dwCookie = 0;
PREPARE_PARAM_START()
dwCookie = (DWORD)ParamToULONG(pMsg, 0);
PREPARE_PARAM_END()
pMsg->hrRet = ((ITfLangBarItemMgr *)_this->_punk)->UnadviseItemSink(dwCookie);
return S_OK;
}
HRESULT CStubITfLangBarItemMgr::stub_GetItemFloatingRect(CStub *_this, MARSHALMSG *pMsg, CSharedBlock *psb)
{
DWORD dwThreadId = 0;
GUID guid = {0};
PREPARE_PARAM_START()
dwThreadId = (DWORD)ParamToULONG(pMsg, 0);
guid = *(GUID *)ParamToBufferPointer(pMsg, 1);
PREPARE_PARAM_END()
RECT rc;
HRESULT hrRet = ((ITfLangBarItemMgr *)_this->_punk)->GetItemFloatingRect(dwThreadId, guid, &rc);
CSTUB_PARAM_START()
CSTUB_PARAM_ULONG_IN(dwThreadId)
CSTUB_PARAM_POINTER_IN(&guid)
CSTUB_PARAM_POINTER_OUT(&rc)
CSTUB_PARAM_END()
CSTUB_PARAM_CALL(pMsg, hrRet, psb)
CSTUB_PARAM_RETURN()
return S_OK;
}
HRESULT CStubITfLangBarItemMgr::stub_GetItemsStatus(CStub *_this, MARSHALMSG *pMsg, CSharedBlock *psb)
{
ULONG ulCount = 0;
GUID *pguid = NULL;
PREPARE_PARAM_START()
ulCount = (ULONG)ParamToULONG(pMsg, 0);
pguid = new GUID[ulCount];
if (pguid)
memcpy(pguid, ParamToBufferPointer(pMsg, 1), sizeof(GUID) * ulCount);
PREPARE_PARAM_END()
if (!pguid)
return E_OUTOFMEMORY;
DWORD *pdwStatus;
pdwStatus = new DWORD[ulCount];
if (!pdwStatus)
{
delete pguid;
return E_OUTOFMEMORY;
}
HRESULT hrRet = ((ITfLangBarItemMgr *)_this->_punk)->GetItemsStatus(ulCount, pguid, pdwStatus);
CSTUB_PARAM_START()
CSTUB_PARAM_ULONG_IN(ulCount)
CSTUB_PARAM_POINTER_ARRAY_IN(pguid, ulCount)
CSTUB_PARAM_POINTER_ARRAY_OUT(pdwStatus, ulCount)
CSTUB_PARAM_END()
CSTUB_PARAM_CALL(pMsg, hrRet, psb)
delete pdwStatus;
delete pguid;
CSTUB_PARAM_RETURN()
return S_OK;
}
HRESULT CStubITfLangBarItemMgr::stub_GetItemNum(CStub *_this, MARSHALMSG *pMsg, CSharedBlock *psb)
{
HRESULT hrRet;
DWORD dw;
hrRet = ((ITfLangBarItemMgr *)_this->_punk)->GetItemNum(&dw);
CSTUB_PARAM_START()
CSTUB_PARAM_POINTER_OUT(&dw)
CSTUB_PARAM_END()
CSTUB_PARAM_CALL(pMsg, hrRet, psb)
CSTUB_PARAM_RETURN()
}
HRESULT CStubITfLangBarItemMgr::stub_GetItems(CStub *_this, MARSHALMSG *pMsg, CSharedBlock *psb)
{
ULONG ulCount;
ULONG ulFetched;
HRESULT hrRet;
IUnknown **ppunk;
TF_LANGBARITEMINFO *pInfo;
DWORD *pdwStatus;
PREPARE_PARAM_START()
ulCount = ParamToULONG(pMsg, 0);
PREPARE_PARAM_END()
ppunk = new IUnknown*[ulCount];
if (!ppunk)
return E_OUTOFMEMORY;
pInfo = new TF_LANGBARITEMINFO[ulCount];
if (!pInfo)
{
delete ppunk;
return E_OUTOFMEMORY;
}
pdwStatus = new DWORD[ulCount];
if (!pdwStatus)
{
delete ppunk;
delete pInfo;
return E_OUTOFMEMORY;
}
hrRet = ((ITfLangBarItemMgr *)_this->_punk)->GetItems(ulCount, (ITfLangBarItem **)ppunk, pInfo, pdwStatus, &ulFetched);
CSTUB_PARAM_START()
CSTUB_PARAM_ULONG_IN(ulCount)
CSTUB_PARAM_INTERFACE_ARRAY_OUT(ppunk, IID_ITfLangBarItem, ulCount)
CSTUB_PARAM_POINTER_ARRAY_OUT(pInfo, ulCount)
CSTUB_PARAM_POINTER_ARRAY_OUT(pdwStatus, ulCount)
CSTUB_PARAM_POINTER_OUT(&ulFetched)
CSTUB_PARAM_END()
CSTUB_PARAM_CALL(pMsg, hrRet, psb);
CSTUB_PARAM_INTERFACE_ARRAY_OUT_RELEASE(ppunk, ulFetched)
delete ppunk;
delete pInfo;
delete pdwStatus;
CSTUB_PARAM_RETURN()
}
HRESULT CStubITfLangBarItemMgr::stub_AdviseItemsSink(CStub *_this, MARSHALMSG *pMsg, CSharedBlock *psb)
{
ULONG ulCount = 0;
HRESULT hrRet;
IUnknown **ppunk = NULL;
DWORD *pdwCookie = NULL;
GUID *pguid = NULL;
PREPARE_PARAM_START()
ulCount = ParamToULONG(pMsg, 0);
ppunk = new IUnknown*[ulCount];
if (ppunk)
ParamToArrayMarshaledPointer(ulCount, (void **)ppunk, pMsg, IID_ITfLangBarItemSink, 1);
pguid = new GUID[ulCount];
if (pguid)
memcpy(pguid, ParamToBufferPointer(pMsg, 2), sizeof(GUID) * ulCount);
PREPARE_PARAM_END()
if (!ppunk)
{
if (pguid)
delete pguid;
return E_OUTOFMEMORY;
}
if (!pguid)
{
delete ppunk;
return E_OUTOFMEMORY;
}
pdwCookie = new DWORD[ulCount];
if (!pdwCookie)
{
delete ppunk;
delete pguid;
return E_OUTOFMEMORY;
}
hrRet = ((ITfLangBarItemMgr *)_this->_punk)->AdviseItemsSink(ulCount, (ITfLangBarItemSink **)ppunk, pguid, pdwCookie);
CSTUB_PARAM_START()
CSTUB_PARAM_ULONG_IN(ulCount)
CSTUB_PARAM_INTERFACE_ARRAY_IN(NULL, IID_ITfLangBarItemSink, ulCount)
CSTUB_PARAM_POINTER_ARRAY_IN(pguid, ulCount)
CSTUB_PARAM_POINTER_ARRAY_OUT(pdwCookie, ulCount)
CSTUB_PARAM_END()
CSTUB_PARAM_CALL(pMsg, hrRet, psb);
CSTUB_PARAM_INTERFACE_ARRAY_OUT_RELEASE(ppunk, ulCount)
delete ppunk;
delete pdwCookie;
delete pguid;
CSTUB_PARAM_RETURN()
}
HRESULT CStubITfLangBarItemMgr::stub_UnadviseItemsSink(CStub *_this, MARSHALMSG *pMsg, CSharedBlock *psb)
{
ULONG ulCount;
HRESULT hrRet;
DWORD *pdwCookie;
PREPARE_PARAM_START()
ulCount = ParamToULONG(pMsg, 0);
pdwCookie = new DWORD[ulCount];
if (pdwCookie)
memcpy(pdwCookie,ParamToBufferPointer(pMsg, 1), sizeof(DWORD) * ulCount);
PREPARE_PARAM_END()
if (!pdwCookie)
return E_OUTOFMEMORY;
hrRet = ((ITfLangBarItemMgr *)_this->_punk)->UnadviseItemsSink(ulCount, pdwCookie);
CSTUB_PARAM_START()
CSTUB_PARAM_ULONG_IN(ulCount)
CSTUB_PARAM_POINTER_ARRAY_IN(pdwCookie, ulCount)
CSTUB_PARAM_END()
CSTUB_PARAM_CALL(pMsg, hrRet, psb);
delete pdwCookie;
CSTUB_PARAM_RETURN()
}
//////////////////////////////////////////////////////////////////////////////
//
// CStubITfLangBarItemSink
//
//////////////////////////////////////////////////////////////////////////////
MSTUBCALL CStubITfLangBarItemSink::_StubTbl[] =
{
stub_QueryInterface,
stub_AddRef,
stub_Release,
stub_OnUpdate,
};
HRESULT CStubITfLangBarItemSink::stub_OnUpdate(CStub *_this, MARSHALMSG *pMsg, CSharedBlock *psb)
{
DWORD dw = 0;
PREPARE_PARAM_START()
dw = (DWORD)ParamToULONG(pMsg, 0);
PREPARE_PARAM_END()
pMsg->hrRet = ((ITfLangBarItemSink *)_this->_punk)->OnUpdate(dw);
return S_OK;
}
//////////////////////////////////////////////////////////////////////////////
//
// CStubIEnumTfLangBarItems
//
//////////////////////////////////////////////////////////////////////////////
MSTUBCALL CStubIEnumTfLangBarItems::_StubTbl[] =
{
stub_QueryInterface,
stub_AddRef,
stub_Release,
stub_Clone,
stub_Next,
stub_Reset,
stub_Skip,
};
HRESULT CStubIEnumTfLangBarItems::stub_Clone(CStub *_this, MARSHALMSG *pMsg, CSharedBlock *psb)
{
CSTUB_NOT_IMPL()
}
HRESULT CStubIEnumTfLangBarItems::stub_Next(CStub *_this, MARSHALMSG *pMsg, CSharedBlock *psb)
{
ULONG ulCount;
ULONG ulFetched;
HRESULT hrRet;
IUnknown **ppunk;
PREPARE_PARAM_START()
ulCount = ParamToULONG(pMsg, 0);
PREPARE_PARAM_END()
ppunk = new IUnknown*[ulCount];
if (!ppunk)
return E_OUTOFMEMORY;
hrRet = ((IEnumTfLangBarItems *)_this->_punk)->Next(ulCount, (ITfLangBarItem **)ppunk, &ulFetched);
CSTUB_PARAM_START()
CSTUB_PARAM_ULONG_IN(ulCount)
CSTUB_PARAM_INTERFACE_ARRAY_OUT(ppunk, IID_ITfLangBarItem, ulCount)
CSTUB_PARAM_POINTER_OUT(&ulFetched)
CSTUB_PARAM_END()
CSTUB_PARAM_CALL(pMsg, hrRet, psb);
CSTUB_PARAM_INTERFACE_ARRAY_OUT_RELEASE(ppunk, ulFetched)
delete ppunk;
CSTUB_PARAM_RETURN()
}
HRESULT CStubIEnumTfLangBarItems::stub_Reset(CStub *_this, MARSHALMSG *pMsg, CSharedBlock *psb)
{
CSTUB_NOT_IMPL()
}
HRESULT CStubIEnumTfLangBarItems::stub_Skip(CStub *_this, MARSHALMSG *pMsg, CSharedBlock *psb)
{
CSTUB_NOT_IMPL()
}
//////////////////////////////////////////////////////////////////////////////
//
// CStubITfLangBarItem
//
//////////////////////////////////////////////////////////////////////////////
MSTUBCALL CStubITfLangBarItem::_StubTbl[] =
{
stub_QueryInterface,
stub_AddRef,
stub_Release,
stub_GetInfo,
stub_GetStatus,
stub_Show,
stub_GetTooltipString
};
HRESULT CStubITfLangBarItem::stub_GetInfo(CStub *_this, MARSHALMSG *pMsg, CSharedBlock *psb)
{
HRESULT hrRet;
TF_LANGBARITEMINFO info;
hrRet = ((ITfLangBarItem *)_this->_punk)->GetInfo(&info);
CSTUB_PARAM_START()
CSTUB_PARAM_POINTER_OUT(&info)
CSTUB_PARAM_END()
CSTUB_PARAM_CALL(pMsg, hrRet, psb)
CSTUB_PARAM_RETURN()
}
HRESULT CStubITfLangBarItem::stub_GetStatus(CStub *_this, MARSHALMSG *pMsg, CSharedBlock *psb)
{
HRESULT hrRet;
DWORD dw;
hrRet = ((ITfLangBarItem *)_this->_punk)->GetStatus(&dw);
CSTUB_PARAM_START()
CSTUB_PARAM_POINTER_OUT(&dw)
CSTUB_PARAM_END()
CSTUB_PARAM_CALL(pMsg, hrRet, psb)
CSTUB_PARAM_RETURN()
}
HRESULT CStubITfLangBarItem::stub_Show(CStub *_this, MARSHALMSG *pMsg, CSharedBlock *psb)
{
BOOL fShow = FALSE;
PREPARE_PARAM_START()
fShow = (BOOL)ParamToULONG(pMsg, 0);
PREPARE_PARAM_END()
pMsg->hrRet = ((ITfLangBarItem *)_this->_punk)->Show(fShow);
return S_OK;
}
HRESULT CStubITfLangBarItem::stub_GetTooltipString(CStub *_this, MARSHALMSG *pMsg, CSharedBlock *psb)
{
BSTR bstr = NULL;
HRESULT hrRet = ((ITfLangBarItem *)_this->_punk)->GetTooltipString(&bstr);
CSTUB_PARAM_START()
CSTUB_PARAM_BSTR_OUT(bstr)
CSTUB_PARAM_END()
CSTUB_PARAM_CALL(pMsg, hrRet, psb)
CSTUB_PARAM_RETURN()
}
//////////////////////////////////////////////////////////////////////////////
//
// CStubITfLangBarItemButton
//
//////////////////////////////////////////////////////////////////////////////
MSTUBCALL CStubITfLangBarItemButton::_StubTbl[] =
{
stub_QueryInterface,
stub_AddRef,
stub_Release,
stub_GetInfo,
stub_GetStatus,
stub_Show,
stub_GetTooltipString,
stub_OnClick,
stub_InitMenu,
stub_OnMenuSelect,
stub_GetIcon,
stub_GetText,
};
HRESULT CStubITfLangBarItemButton::stub_OnClick(CStub *_this, MARSHALMSG *pMsg, CSharedBlock *psb)
{
TfLBIClick click;
POINT pt;
RECT rc;
PREPARE_PARAM_START()
click = (TfLBIClick)ParamToULONG(pMsg, 0);
pt = *(POINT *)ParamToBufferPointer(pMsg, 1);
rc = *(RECT *)ParamToBufferPointer(pMsg, 2);
PREPARE_PARAM_END()
pMsg->hrRet = ((ITfLangBarItemButton *)_this->_punk)->OnClick(click, pt, &rc);
return S_OK;
}
HRESULT CStubITfLangBarItemButton::stub_InitMenu(CStub *_this, MARSHALMSG *pMsg, CSharedBlock *psb)
{
ITfMenu *punk = NULL;
PREPARE_PARAM_START()
punk = (ITfMenu *)ParamToMarshaledPointer(pMsg, IID_ITfMenu, 0);
PREPARE_PARAM_END()
pMsg->hrRet = ((ITfLangBarItemButton *)_this->_punk)->InitMenu(punk);
CSTUB_PARAM_INTERFACE_OUT_RELEASE(punk)
CSTUB_PARAM_RETURN()
}
HRESULT CStubITfLangBarItemButton::stub_OnMenuSelect(CStub *_this, MARSHALMSG *pMsg, CSharedBlock *psb)
{
ULONG ulId;
PREPARE_PARAM_START()
ulId = (ULONG)ParamToULONG(pMsg, 0);
PREPARE_PARAM_END()
pMsg->hrRet = ((ITfLangBarItemButton *)_this->_punk)->OnMenuSelect(ulId);
return S_OK;
}
HRESULT CStubITfLangBarItemButton::stub_GetIcon(CStub *_this, MARSHALMSG *pMsg, CSharedBlock *psb)
{
HICON hIcon;
HRESULT hrRet = ((ITfLangBarItemButton *)_this->_punk)->GetIcon(&hIcon);
CSTUB_PARAM_START()
CSTUB_PARAM_HICON_OUT(&hIcon)
CSTUB_PARAM_END()
CSTUB_PARAM_CALL(pMsg, hrRet, psb)
CSTUB_PARAM_RETURN()
}
HRESULT CStubITfLangBarItemButton::stub_GetText(CStub *_this, MARSHALMSG *pMsg, CSharedBlock *psb)
{
BSTR bstr = NULL;
HRESULT hrRet = ((ITfLangBarItemButton *)_this->_punk)->GetText(&bstr);
CSTUB_PARAM_START()
CSTUB_PARAM_BSTR_OUT(bstr)
CSTUB_PARAM_END()
CSTUB_PARAM_CALL(pMsg, hrRet, psb)
CSTUB_PARAM_RETURN()
}
//////////////////////////////////////////////////////////////////////////////
//
// CStubITfLangBarItemBitmapButton
//
//////////////////////////////////////////////////////////////////////////////
MSTUBCALL CStubITfLangBarItemBitmapButton::_StubTbl[] =
{
stub_QueryInterface,
stub_AddRef,
stub_Release,
stub_GetInfo,
stub_GetStatus,
stub_Show,
stub_GetTooltipString,
stub_OnClick,
stub_InitMenu,
stub_OnMenuSelect,
stub_GetPreferredSize,
stub_DrawBitmap,
stub_GetText,
};
HRESULT CStubITfLangBarItemBitmapButton::stub_OnClick(CStub *_this, MARSHALMSG *pMsg, CSharedBlock *psb)
{
TfLBIClick click;
POINT pt;
RECT rc;
PREPARE_PARAM_START()
click = (TfLBIClick)ParamToULONG(pMsg, 0);
pt = *(POINT *)ParamToBufferPointer(pMsg, 1);
rc = *(RECT *)ParamToBufferPointer(pMsg, 2);
PREPARE_PARAM_END()
pMsg->hrRet = ((ITfLangBarItemBitmapButton *)_this->_punk)->OnClick(click, pt, &rc);
return S_OK;
}
HRESULT CStubITfLangBarItemBitmapButton::stub_InitMenu(CStub *_this, MARSHALMSG *pMsg, CSharedBlock *psb)
{
ITfMenu *punk;
PREPARE_PARAM_START()
punk = (ITfMenu *)ParamToMarshaledPointer(pMsg, IID_ITfMenu, 0);
PREPARE_PARAM_END()
pMsg->hrRet = ((ITfLangBarItemBitmapButton *)_this->_punk)->InitMenu(punk);
CSTUB_PARAM_INTERFACE_OUT_RELEASE(punk)
CSTUB_PARAM_RETURN()
}
HRESULT CStubITfLangBarItemBitmapButton::stub_OnMenuSelect(CStub *_this, MARSHALMSG *pMsg, CSharedBlock *psb)
{
ULONG ulId;
PREPARE_PARAM_START()
ulId = (ULONG)ParamToULONG(pMsg, 0);
PREPARE_PARAM_END()
pMsg->hrRet = ((ITfLangBarItemBitmapButton *)_this->_punk)->OnMenuSelect(ulId);
return S_OK;
}
HRESULT CStubITfLangBarItemBitmapButton::stub_GetPreferredSize(CStub *_this, MARSHALMSG *pMsg, CSharedBlock *psb)
{
SIZE size;
SIZE sizeOut;
PREPARE_PARAM_START()
size = *(SIZE *)ParamToBufferPointer(pMsg, 0);
PREPARE_PARAM_END()
HRESULT hrRet = ((ITfLangBarItemBitmapButton *)_this->_punk)->GetPreferredSize(&size, &sizeOut);
CSTUB_PARAM_START()
CSTUB_PARAM_POINTER_IN(&size)
CSTUB_PARAM_POINTER_OUT(&sizeOut)
CSTUB_PARAM_END()
CSTUB_PARAM_CALL(pMsg, hrRet, psb)
CSTUB_PARAM_RETURN()
}
HRESULT CStubITfLangBarItemBitmapButton::stub_DrawBitmap(CStub *_this, MARSHALMSG *pMsg, CSharedBlock *psb)
{
ULONG bmWidth;
ULONG bmHeight;
DWORD dwFlags;
PREPARE_PARAM_START()
bmWidth = (ULONG)ParamToULONG(pMsg, 0);
bmHeight = (ULONG)ParamToULONG(pMsg, 1);
dwFlags = (DWORD)ParamToULONG(pMsg, 2);
PREPARE_PARAM_END()
HBITMAP hbmp;
HBITMAP hbmpMask;
HRESULT hrRet = ((ITfLangBarItemBitmapButton *)_this->_punk)->DrawBitmap(bmWidth, bmHeight, dwFlags, &hbmp, &hbmpMask);
CSTUB_PARAM_START()
CSTUB_PARAM_ULONG_IN(bmWidth)
CSTUB_PARAM_ULONG_IN(bmHeight)
CSTUB_PARAM_ULONG_IN(dwFlags)
CSTUB_PARAM_HBITMAP_OUT(&hbmp)
CSTUB_PARAM_HBITMAP_OUT(&hbmpMask)
CSTUB_PARAM_END()
CSTUB_PARAM_CALL(pMsg, hrRet, psb)
CSTUB_PARAM_RETURN()
}
HRESULT CStubITfLangBarItemBitmapButton::stub_GetText(CStub *_this, MARSHALMSG *pMsg, CSharedBlock *psb)
{
BSTR bstr = NULL;
HRESULT hrRet = ((ITfLangBarItemBitmapButton *)_this->_punk)->GetText(&bstr);
CSTUB_PARAM_START()
CSTUB_PARAM_BSTR_OUT(bstr)
CSTUB_PARAM_END()
CSTUB_PARAM_CALL(pMsg, hrRet, psb)
CSTUB_PARAM_RETURN()
}
//////////////////////////////////////////////////////////////////////////////
//
// CStubITfLangBarItemBitmap
//
//////////////////////////////////////////////////////////////////////////////
MSTUBCALL CStubITfLangBarItemBitmap::_StubTbl[] =
{
stub_QueryInterface,
stub_AddRef,
stub_Release,
stub_GetInfo,
stub_GetStatus,
stub_Show,
stub_GetTooltipString,
stub_OnClick,
stub_GetPreferredSize,
stub_DrawBitmap,
};
HRESULT CStubITfLangBarItemBitmap::stub_OnClick(CStub *_this, MARSHALMSG *pMsg, CSharedBlock *psb)
{
TfLBIClick click;
POINT pt;
RECT rc;
PREPARE_PARAM_START()
click = (TfLBIClick)ParamToULONG(pMsg, 0);
pt = *(POINT *)ParamToBufferPointer(pMsg, 1);
rc = *(RECT *)ParamToBufferPointer(pMsg, 2);
PREPARE_PARAM_END()
pMsg->hrRet = ((ITfLangBarItemBitmap *)_this->_punk)->OnClick(click, pt, &rc);
return S_OK;
}
HRESULT CStubITfLangBarItemBitmap::stub_GetPreferredSize(CStub *_this, MARSHALMSG *pMsg, CSharedBlock *psb)
{
SIZE size;
SIZE sizeOut;
PREPARE_PARAM_START()
size = *(SIZE *)ParamToBufferPointer(pMsg, 0);
PREPARE_PARAM_END()
HRESULT hrRet = ((ITfLangBarItemBitmap *)_this->_punk)->GetPreferredSize(&size, &sizeOut);
CSTUB_PARAM_START()
CSTUB_PARAM_POINTER_IN(&size)
CSTUB_PARAM_POINTER_OUT(&sizeOut)
CSTUB_PARAM_END()
CSTUB_PARAM_CALL(pMsg, hrRet, psb)
CSTUB_PARAM_RETURN()
}
HRESULT CStubITfLangBarItemBitmap::stub_DrawBitmap(CStub *_this, MARSHALMSG *pMsg, CSharedBlock *psb)
{
ULONG bmWidth;
ULONG bmHeight;
DWORD dwFlags;
PREPARE_PARAM_START()
bmWidth = (ULONG)ParamToULONG(pMsg, 0);
bmHeight = (ULONG)ParamToULONG(pMsg, 1);
dwFlags = (DWORD)ParamToULONG(pMsg, 2);
PREPARE_PARAM_END()
HBITMAP hbmp;
HBITMAP hbmpMask;
HRESULT hrRet = ((ITfLangBarItemBitmap *)_this->_punk)->DrawBitmap(bmWidth, bmHeight, dwFlags, &hbmp, &hbmpMask);
CSTUB_PARAM_START()
CSTUB_PARAM_ULONG_IN(bmWidth)
CSTUB_PARAM_ULONG_IN(bmHeight)
CSTUB_PARAM_ULONG_IN(dwFlags)
CSTUB_PARAM_HBITMAP_OUT(&hbmp)
CSTUB_PARAM_HBITMAP_OUT(&hbmpMask)
CSTUB_PARAM_END()
CSTUB_PARAM_CALL(pMsg, hrRet, psb)
CSTUB_PARAM_RETURN()
}
//////////////////////////////////////////////////////////////////////////////
//
// CStubITfLangBarItemBalloon
//
//////////////////////////////////////////////////////////////////////////////
MSTUBCALL CStubITfLangBarItemBalloon::_StubTbl[] =
{
stub_QueryInterface,
stub_AddRef,
stub_Release,
stub_GetInfo,
stub_GetStatus,
stub_Show,
stub_GetTooltipString,
stub_OnClick,
stub_GetPreferredSize,
stub_GetBalloonInfo,
};
HRESULT CStubITfLangBarItemBalloon::stub_OnClick(CStub *_this, MARSHALMSG *pMsg, CSharedBlock *psb)
{
TfLBIClick click;
POINT pt;
RECT rc;
PREPARE_PARAM_START()
click = (TfLBIClick)ParamToULONG(pMsg, 0);
pt = *(POINT *)ParamToBufferPointer(pMsg, 1);
rc = *(RECT *)ParamToBufferPointer(pMsg, 2);
PREPARE_PARAM_END()
pMsg->hrRet = ((ITfLangBarItemBalloon *)_this->_punk)->OnClick(click, pt, &rc);
return S_OK;
}
HRESULT CStubITfLangBarItemBalloon::stub_GetPreferredSize(CStub *_this, MARSHALMSG *pMsg, CSharedBlock *psb)
{
SIZE size;
SIZE sizeOut;
PREPARE_PARAM_START()
size = *(SIZE *)ParamToBufferPointer(pMsg, 0);
PREPARE_PARAM_END()
HRESULT hrRet = ((ITfLangBarItemBalloon *)_this->_punk)->GetPreferredSize(&size, &sizeOut);
CSTUB_PARAM_START()
CSTUB_PARAM_POINTER_IN(&size)
CSTUB_PARAM_POINTER_OUT(&sizeOut)
CSTUB_PARAM_END()
CSTUB_PARAM_CALL(pMsg, hrRet, psb)
CSTUB_PARAM_RETURN()
}
HRESULT CStubITfLangBarItemBalloon::stub_GetBalloonInfo(CStub *_this, MARSHALMSG *pMsg, CSharedBlock *psb)
{
TF_LBBALLOONINFO info;
HRESULT hrRet = ((ITfLangBarItemBalloon *)_this->_punk)->GetBalloonInfo(&info);
CSTUB_PARAM_START()
CSTUB_PARAM_TF_LBBALLOONINFO_OUT(&info)
CSTUB_PARAM_END()
CSTUB_PARAM_CALL(pMsg, hrRet, psb)
CSTUB_PARAM_RETURN()
}
//////////////////////////////////////////////////////////////////////////////
//
// CStubITfMenu
//
//////////////////////////////////////////////////////////////////////////////
MSTUBCALL CStubITfMenu::_StubTbl[] =
{
stub_QueryInterface,
stub_AddRef,
stub_Release,
stub_AddItemMenu,
};
HRESULT CStubITfMenu::stub_AddItemMenu(CStub *_this, MARSHALMSG *pMsg, CSharedBlock *psb)
{
UINT uId = 0;
DWORD dwFlags = 0;
HBITMAP hbmp = NULL;
HBITMAP hbmpMask = NULL;
WCHAR *pchTemp = NULL;
ULONG cch = 0;
WCHAR *pch = NULL;
BOOL fNULLStack;
ITfMenu *pMenu = NULL;
PREPARE_PARAM_START()
uId = (ULONG)ParamToULONG(pMsg, 0);
dwFlags = (ULONG)ParamToULONG(pMsg, 1);
hbmp = ParamToHBITMAP(pMsg, 2);
hbmpMask = ParamToHBITMAP(pMsg, 3);
pchTemp = (WCHAR *)ParamToBufferPointer(pMsg, 4);
cch = (ULONG)ParamToULONG(pMsg, 5);
pch = new WCHAR[cch + 1];
if (pch)
wcsncpy(pch, pchTemp, cch);
pMenu = (ITfMenu *)ParamToMarshaledPointer(pMsg, IID_ITfMenu, 6, &fNULLStack);
PREPARE_PARAM_END()
if (!pch)
return E_OUTOFMEMORY;
HRESULT hrRet = ((ITfMenu *)_this->_punk)->AddMenuItem(uId,
dwFlags,
hbmp,
hbmpMask,
pch,
cch,
!fNULLStack ? &pMenu : NULL);
CSTUB_PARAM_START()
CSTUB_PARAM_ULONG_IN(uId)
CSTUB_PARAM_ULONG_IN(dwFlags)
CSTUB_PARAM_HBITMAP_IN(hbmp)
CSTUB_PARAM_HBITMAP_IN(hbmpMask)
CSTUB_PARAM_POINTER_IN(pch)
CSTUB_PARAM_ULONG_IN(cch)
CSTUB_PARAM_INTERFACE_OUT(&pMenu, IID_ITfMenu)
CSTUB_PARAM_END()
CSTUB_PARAM_CALL(pMsg, hrRet, psb)
CSTUB_PARAM_INTERFACE_OUT_RELEASE(pMenu)
delete pch;
CSTUB_PARAM_RETURN()
}
//////////////////////////////////////////////////////////////////////////////
//
// CStubITfInputProcessorProfiles
//
//////////////////////////////////////////////////////////////////////////////
MSTUBCALL CStubITfInputProcessorProfiles::_StubTbl[] =
{
stub_QueryInterface,
stub_AddRef,
stub_Release,
stub_Register,
stub_Unregister,
stub_AddLanguageProfile,
stub_RemoveLanguageProfile,
stub_EnumInputProcessorInfo,
stub_GetDefaultLanguageProfile,
stub_SetDefaultLanguageProfile,
stub_ActivateLanguageProfile,
stub_GetActiveLanguageProfile,
stub_GetCurrentLanguage,
stub_ChangeCurrentLanguage,
stub_GetLanguageList,
stub_EnumLanguageProfiles,
stub_EnableLanguageProfile,
stub_IsEnabledLanguageProfile,
stub_EnableLanguageProfileByDefault,
stub_SubstituteKeyboardLayout,
};
HRESULT CStubITfInputProcessorProfiles::stub_Register(CStub *_this, MARSHALMSG *pMsg, CSharedBlock *psb)
{
CSTUB_NOT_IMPL()
}
HRESULT CStubITfInputProcessorProfiles::stub_Unregister(CStub *_this, MARSHALMSG *pMsg, CSharedBlock *psb)
{
CSTUB_NOT_IMPL()
}
HRESULT CStubITfInputProcessorProfiles::stub_AddLanguageProfile(CStub *_this, MARSHALMSG *pMsg, CSharedBlock *psb)
{
CSTUB_NOT_IMPL()
}
HRESULT CStubITfInputProcessorProfiles::stub_RemoveLanguageProfile(CStub *_this, MARSHALMSG *pMsg, CSharedBlock *psb)
{
CSTUB_NOT_IMPL()
}
HRESULT CStubITfInputProcessorProfiles::stub_EnumInputProcessorInfo(CStub *_this, MARSHALMSG *pMsg, CSharedBlock *psb)
{
CSTUB_NOT_IMPL()
}
HRESULT CStubITfInputProcessorProfiles::stub_GetDefaultLanguageProfile(CStub *_this, MARSHALMSG *pMsg, CSharedBlock *psb)
{
CSTUB_NOT_IMPL()
}
HRESULT CStubITfInputProcessorProfiles::stub_SetDefaultLanguageProfile(CStub *_this, MARSHALMSG *pMsg, CSharedBlock *psb)
{
CSTUB_NOT_IMPL()
}
HRESULT CStubITfInputProcessorProfiles::stub_ActivateLanguageProfile(CStub *_this, MARSHALMSG *pMsg, CSharedBlock *psb)
{
CSTUB_NOT_IMPL()
}
HRESULT CStubITfInputProcessorProfiles::stub_GetActiveLanguageProfile(CStub *_this, MARSHALMSG *pMsg, CSharedBlock *psb)
{
CSTUB_NOT_IMPL()
}
HRESULT CStubITfInputProcessorProfiles::stub_GetLanguageProfileDescription(CStub *_this, MARSHALMSG *pMsg, CSharedBlock *psb)
{
CSTUB_NOT_IMPL()
}
HRESULT CStubITfInputProcessorProfiles::stub_GetCurrentLanguage(CStub *_this, MARSHALMSG *pMsg, CSharedBlock *psb)
{
LANGID langid;
HRESULT hrRet = ((ITfInputProcessorProfiles *)_this->_punk)->GetCurrentLanguage(&langid);
CSTUB_PARAM_START()
CSTUB_PARAM_POINTER_OUT(&langid)
CSTUB_PARAM_END()
CSTUB_PARAM_CALL(pMsg, hrRet, psb)
CSTUB_PARAM_RETURN()
}
HRESULT CStubITfInputProcessorProfiles::stub_ChangeCurrentLanguage(CStub *_this, MARSHALMSG *pMsg, CSharedBlock *psb)
{
CSTUB_NOT_IMPL()
}
HRESULT CStubITfInputProcessorProfiles::stub_GetLanguageList(CStub *_this, MARSHALMSG *pMsg, CSharedBlock *psb)
{
CSTUB_NOT_IMPL()
}
HRESULT CStubITfInputProcessorProfiles::stub_EnumLanguageProfiles(CStub *_this, MARSHALMSG *pMsg, CSharedBlock *psb)
{
CSTUB_NOT_IMPL()
}
HRESULT CStubITfInputProcessorProfiles::stub_EnableLanguageProfile(CStub *_this, MARSHALMSG *pMsg, CSharedBlock *psb)
{
CSTUB_NOT_IMPL()
}
HRESULT CStubITfInputProcessorProfiles::stub_IsEnabledLanguageProfile(CStub *_this, MARSHALMSG *pMsg, CSharedBlock *psb)
{
CSTUB_NOT_IMPL()
}
HRESULT CStubITfInputProcessorProfiles::stub_EnableLanguageProfileByDefault(CStub *_this, MARSHALMSG *pMsg, CSharedBlock *psb)
{
CSTUB_NOT_IMPL()
}
HRESULT CStubITfInputProcessorProfiles::stub_SubstituteKeyboardLayout(CStub *_this, MARSHALMSG *pMsg, CSharedBlock *psb)
{
CSTUB_NOT_IMPL()
}