次の方法で共有


IEnumVARIANT::Clone メソッド (oaidl.h)

列挙体の現在の状態のコピーを作成します。

構文

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

パラメーター

[out] ppEnum

複製列挙子。

戻り値

このメソッドは、これらの値のいずれかを返すことができます。

リターン コード 説明
S_OK
正常終了しました。
E_OUTOFMEMORY
操作を完了するためのメモリ不足。

注釈

この関数を使用すると、列挙シーケンス内の特定のポイントを記録し、後で に返すことができます。 返される列挙子は、複製されるインターフェイスと同じ実際のインターフェイスです。

1 番目のバリアントを列挙したのとまったく同じバリアント セットが 2 回目に列挙される保証はありません。 正確な重複が望ましいですが、結果は列挙されるコレクションによって異なります。 一部のコレクションでは、この条件 (ディレクトリ内のファイルの列挙など) を維持することは実用的でない場合があります。

次のコードは 、IEnumVariant::Clone を実装します。 IEnumVariant インターフェイスの完全な実装例は、COM Fundamentals Lines サンプル (Enumvar.cpp) で入手できます。

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