我想在DCOM中对象中使用VARIANT类型,周期性将某二进制数据更新到一个数据缓冲区中,然后DCOM对象调用其他函数再把该数据送到客户端,由客户端处理该数据?
解决方案 »
- 有没有关于用XML通讯的例子
- 列表框的水平滚动条怎么不出来
- vs2005中这么也没有CLASSWIZAD
- 为何用MYSQL C API插入效率这么低??
- 为什么说 C# 开发COM组件 多余
- 客户程序中显式加载dll时,如何使用dll中导出的类
- 新手小问!
- 跪求《深入浅出MFC》源码?在网上实在找不到!感谢!
- changlele进来拿分
- error C2601: 'OnTimer' : local function definitions are illegal怎么解决
- 关于属性页的Apply按钮
- 不想用ADODataCtrol与DataGrid绑定使用,但不知道我定义的DataGrid地对象m_datagrid中用那个函数来设置数据源?
你的数据量有多大?
SAFEARRAYBOUND rgsabound[1];
rgsabound[0].lLbound = 0;
rgsabound[0].cElements = 1000;
SAFEARRAY* psa = ::SafeArrayCreate(VT_I4, rgsabound); // Create a one-dimension long array of 1000 elements
long* plDatas;
::SafeArrayAccessData(psa, (void**) &plDatas);
for (int i = 0; i < 1000; i++)
{
plDatas[i] = i * i;
}
::SafeArrayUnaccessData(psa);这是如何读取使用上面代码生成的SAFEARRAY中的数据的例子
VARTYPE vt;
::SafeArrayGetVartype(psaDataID, &vt);
ASSERT(vt == VT_I4);
UINT nDim = ::SafeArrayGetDim(psa);
ASSERT(nDim == 1);
long lLBound, lUBound;
::SafeArrayGetLBound(psa, 1, &lLBound); //一维数组下标
::SafeArrayGetUBound(psa, 1, &lUBound); //一维数组上标
long* pDataID;
::SafeArrayAccessData(psaDataID, (void**) &pDataID);
for (int i = 0; i <= lUBound - lLBound; i++)
{
//现在你的可以对pDataID中的数据进行访问
}
::SafeArrayUnaccessData(psa);当然你还可以使用
SafeArrayPutElement(向SAFEARRAY中写入数据)
和
SafeArrayGetElement(从SAFEARRAY中读取数据)
,只是这两种方式没有上面的快
for (int i = 0; i < 1000; i++)
{
psa[i] = i * i;
}