- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这很可能有一个非常简单的答案,但我无法弄清楚。
我正在尝试重构一些如下所示的代码:
SAFEARRAY* psa;
long* count;
HRESULT hr = pSomeInterface->ListSomething(&psa, &count);
if (SUCCEEDED(hr))
{
CComSafeArray<BSTR> sa;
if (*count > 0)
{
sa.Attach(psa);
}
}
// perform operations on sa
// allow CComSafeArray to destroy the object
return hr;
我想将代码更改为:
CComSafeArray<BSTR> sa;
long* count;
hr = pSomeInterface->ListSomething(&(sa.m_psa), &count);
if (SUCCEEDED(hr))
{
// perform operations on sa
}
但是当我执行这个时,sa 包含垃圾。发生了什么事以及为什么?正确的语法是什么?
最佳答案
您应该使用CComSafeArray<T>::
GetSafeArrayPtr()
。然而Aamir的使用方式&(sa.m_psa)
应该也能工作。
关于com - 将 CComSafeArray 传递给需要 SAFEARRAY 的方法时,正确的语法是什么**,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/445286/
我有一个 Com 函数: GetData (SAFEARRAY ** pRetVal) 我有以下代码: SAFEARRAY *ppData = NULL; hr = pmyInterfac
我使用以下语句创建了包含 32 个元素的 CComSafeArray 对象。但经过一些操作后,我才知道我只需要安全数组中的 3 个元素。是否可以在创建安全数组后更改其中元素的数量? CComSafeA
我有一个 COM 函数: GetData(SAFEARRAY ** pRetVal) 和以下遗留代码: CComSafeArray saDataArray; hr = pmyInterface->Ge
我的情况是我有一个 COM 对象,我需要在 come windows 中仅使用 C++ 代码。 COM 对象具有接受 SAFEARRAY 作为参数以传递字节数组的函数。在查看了 SAFEARRAY A
CComSafeArray::SetAt method提供一个参数来控制引用的变量是否被复制: HRESULT SetAt( LONG lIndex, const T& t, BOOL bCopy =
我尝试了 GetSafeArrayPtr() 方法,该方法返回一个 LPSAFEARRAY*,typedef 定义为: typedef /* [wire_marshal] */ SAFEARRAY *
我有一个内存泄漏问题,我已将其缩小到以下代码。怎么回事? CComSafeArray sa(5); sa[0] = SysAllocString("constant"); CComSafeArray:
CComSafeArray arr; arr.Add(0x00); 错误 -> C2668:“ATL::CComSafeArray::Add”:对重载函数的调用不明确 我可以添加任何值但不能添加 0
我正在尝试 (i) 跨 COM 边界获取长整型安全数组,以及 (ii) 为方便起见使用 CComSafeArray。 我的问题是在设置 COM 属性后我遇到了不可预测的崩溃(参见下面的 pProlog
我有一个应该通过 LPSAFEARRAY* 返回 SafeArray 的 COM 函数出参数。该函数使用 ATL 的 CComSafeArray 创建 SafeArray模板类。我天真的实现使用 CC
这很可能有一个非常简单的答案,但我无法弄清楚。 我正在尝试重构一些如下所示的代码: SAFEARRAY* psa; long* count; HRESULT hr = pSomeInterface->
有什么快速的方法可以将 std::vector 转换为 CComSafeArray。我目前正在编写一段代码,基本上将 5 或 6 vector 转换为 CComSafeArray(不是在迭代中)。其中
我正在使用 ATL CComSafeArray类,但是如果数组为空,GetCount() 似乎会抛出异常,例如这段代码抛出异常: CComSafeArray array; // array.Add(i
在MSDN documentation for CComSafeArray::MultiDimSetAt , alIndex 记录如下: Pointer to a vector of indexes
我正在使用 COM 库“Microsoft 脚本运行时”(c:\windows\System32\scrrun.dll) 中的 Scripting.Dictionary。我正在使用 import 来获
CComSafeArray fields; hr = _tab_file->get_Fields(fields.GetSafeArrayPtr()); for ( LONG i = fields.Ge
我是一名优秀的程序员,十分优秀!