⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 jdiointer.cpp

📁 COM 组建的开发
💻 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 + -