次の方法で共有


IWMDMStorage4::GetReferences メソッド (mswmdm.h)

GetReferences メソッドは、このストレージが指す IWMDMStorage オブジェクトへのポインターの配列を取得します。 抽象アルバムまたはプレイリストは、通常、MTP デバイス上の参照のコレクションとして格納されます。

構文

HRESULT GetReferences(
  [out] DWORD        *pdwRefs,
  [out] IWMDMStorage ***pppIWMDMStorage
);

パラメーター

[out] pdwRefs

pppIWMDMStorage によって取得された値の数へのポインター。 オブジェクトに参照がない場合、これは 0 を返し、関数はS_OKを返します。

[out] pppIWMDMStorage

ストレージ内の参照を表す IWMDMStorage インターフェイス ポインターの配列へのポインターへのポインター。 このような参照は、たとえば、プレイリストまたはアルバム内の項目を表すことができます。 取得された配列は、オブジェクト自体に表示される順序と同じです。 この配列のメモリは、Windows Media デバイス マネージャーによって割り当てられます。 呼び出し元のアプリケーションがこの配列へのアクセスを完了したら、まずすべてのインターフェイス ポインターで Release を 呼び出してから、 CoTaskMemFree を使用して配列メモリを解放する必要があります。

戻り値

このメソッドは HRESULT を返します。 Windows Media デバイス マネージャーのすべてのインターフェイス メソッドは、次のいずれかのエラー コード クラスを返すことができます。

  • 標準 COM エラー コード
  • HRESULT 値に変換された Windows エラー コード
  • Windows Media デバイス マネージャー エラー コード
考えられるエラー コードの詳細な一覧については、「 エラー コード」を参照してください。

注釈

Windows Media デバイス マネージャーは、ストレージ上の参照を追加および削除するタスクを基になるサービス プロバイダーに委任します。 参照を持つオブジェクトは、抽象プレイリストやアルバムなどの抽象オブジェクトを指します。フォルダーは参照があるとは見なされません。

このメソッドでは、2 種類の非同期削除が発生し、エラーが発生する可能性があります。 アプリケーションがストレージを取得してからストレージへの 参照 が削除され、アプリケーションが参照を使用しようとすると、メソッド呼び出しはWMDM_E_INTERFACEDEADを返します。 参照先のファイルが削除されている場合は、S_FALSEが返されます。

次の C++ コードは、ストレージ (pStorage) の参照を照会します。


// Get references.
CComQIPtr<IWMDMStorage4> pStorage4(pStorage);
if (pStorage4 != NULL)
{
    WCHAR name[100];
    DWORD numRefs = 0;
    IWMDMStorage** parrReferences;
    hr = pStorage4->GetReferences(&numRefs, &parrReferences);
    for(int i = 0; i < numRefs; i++)
    {
        ZeroMemory(name, sizeof(name));
        hr = parrReferences[i]->GetName(name, (sizeof(name) / sizeof(WCHAR)) - 1);
        if (hr == S_OK)
            // TODO: Display the name.
        parrReferences[i]->Release();
    }
    // Free the memory.
    if (parrReferences != NULL)
        CoTaskMemFree(parrReferences);
}

要件

要件
対象プラットフォーム Windows
ヘッダー mswmdm.h
Library Mssachlp.lib

こちらもご覧ください

デバイスでプレイリストを作成する

IWMDMStorage4 インターフェイス

IWMDMStorage4::SetReferences