📄 jdiointer.cpp
字号:
// JDIOInter.cpp : Implementation of CJDIOInter
#include "stdafx.h"
#include "FileEncrypt.h"
#include "JDIOInter.h"
/////////////////////////////////////////////////////////////////////////////
// CJDIOInter
STDMETHODIMP CJDIOInter::Init(long *lpParam, long *lpResult)
{
AFX_MANAGE_STATE(AfxGetStaticModuleState())
// TODO: Add your implementation code here
// 初始化时,为类保险,先清空一下链表链表 [5/12/2008 By willing]
_DataCenter.ClearSetList();
_DataCenter.ClearGetList();
return S_OK;
}
STDMETHODIMP CJDIOInter::Run(int nRunCode)
{
AFX_MANAGE_STATE(AfxGetStaticModuleState())
// TODO: Add your implementation code here
DWORD dwReCode = 0;
dwReCode = Dispatch.Run();
if (0 != dwReCode)
{
DEGBUGLOG("CJDIOInter","Run","启动任务分派线程失败");
return E_FAIL;
}
dwReCode = UpdateReg.Run();
if (0 != dwReCode)
{
DEGBUGLOG("CJDIOInter","Run","启动更新注册表线程失败");
return E_FAIL;
}
return S_OK;
}
STDMETHODIMP CJDIOInter::SetPacket(long *pDataType, long *pData, long lSize)
{
AFX_MANAGE_STATE(AfxGetStaticModuleState())
if (NULL == pDataType)
{
return E_FAIL;
}
ST_IODATATYPE* ptrIODataType = (ST_IODATATYPE*)pDataType;
BYTE* ptrData = NULL;
if (NULL != pData)
{
ptrData = new BYTE[lSize+1];
memset(ptrData,0,lSize+1);
memcpy(ptrData,pData,lSize);
}
// TODO: Add your implementation code here
ST_IOITEM ioItem;
ioItem.dwSize = lSize+1;
ioItem.pData = (BYTE*)ptrData;
ioItem.stType.wDataType = ptrIODataType->wDataType;
ioItem.stType.nSrcModID = ptrIODataType->nSrcModID;
ioItem.stType.nDesModID = ptrIODataType->nDesModID;
ioItem.stType.lParam1 = ptrIODataType->lParam1;
ioItem.stType.lParam2 = ptrIODataType->lParam2;
_DataCenter.AddSetPacket(ioItem);
return S_OK;
}
STDMETHODIMP CJDIOInter::GetPacket(long *pDatatype, long *pData, long *pSize)
{
AFX_MANAGE_STATE(AfxGetStaticModuleState())
// TODO: Add your implementation code here
int nReCode = _DataCenter.GetGetLstHead(pDatatype,pData,pSize);
if (0 != nReCode)
{
return E_FAIL;
}
return S_OK;
}
STDMETHODIMP CJDIOInter::Stop(int nStopCode)
{
AFX_MANAGE_STATE(AfxGetStaticModuleState())
// TODO: Add your implementation code here
// 停止工作线程 [5/12/2008 By willing]
OutputDebugString("开始停止任务分配线程");
Dispatch.Stop();
OutputDebugString("开始停止注册表更新线程");
UpdateReg.Stop();
OutputDebugString("线程已经停止");
// 清空链表数据 [5/12/2008 By willing]
_DataCenter.ClearGetList();
_DataCenter.ClearSetList();
return S_OK;
}
STDMETHODIMP CJDIOInter::FreeMemory(long *pBuff)
{
AFX_MANAGE_STATE(AfxGetStaticModuleState())
// TODO: Add your implementation code here
if(pBuff != NULL)
delete[] pBuff;
return S_OK;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -