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 |