IEnumVARIANT::Clone 方法 (oaidl.h)

创建枚举的当前状态的副本。

语法

HRESULT Clone(
  [out] IEnumVARIANT **ppEnum
);

参数

[out] ppEnum

克隆枚举器。

返回值

此方法可以返回其中一个值。

返回代码 说明
S_OK
成功。
E_OUTOFMEMORY
内存不足,无法完成操作。

注解

使用此函数,可以记录枚举序列中的特定点,然后在以后返回 。 返回的枚举器与正在克隆的枚举器具有相同的实际接口。

无法保证第二次枚举完全相同的变体集,这与第一次枚举时完全相同。 尽管需要确切的重复项,但结果取决于要枚举的集合。 你可能会发现,某些集合不切实际地维护此条件 (例如,目录) 中的文件枚举。

示例

以下代码实现 IEnumVariant::Clone。 COM 基础知识行示例 (Enumvar.cpp) 中提供了 IEnumVariant 接口的完整示例实现。

STDMETHODIMP
CEnumVariant::Clone(IEnumVARIANT ** ppenum)
{
   CEnumVariant * penum = NULL;
   HRESULT hr;

   if (ppenum == NULL)
      return E_INVALIDARG;

   *ppenum = NULL;

   hr = CEnumVariant::Create(m_psa, m_cElements, &penum);
   if (FAILED(hr))
      goto error;
   penum->AddRef();
   penum->m_lCurrent = m_lCurrent;

   *ppenum = penum;
   return NOERROR;

error:
   if (penum)
      penum->Release();
   return hr;
}

要求

要求
目标平台 Windows
标头 oaidl.h

另请参阅

IEnumVARIANT