次の方法で共有


IVdsSubSystem::QueryLuns メソッド (vdshwprv.h)

[Windows 8とWindows Server 2012以降、仮想ディスク サービス COM インターフェイスは Windows Storage Management API に置き換えられます。

サブシステムに表示される LUN の列挙体を返します。 このメソッドは、ハードウェア プロバイダー オブジェクトにのみ適用されます。

構文

HRESULT QueryLuns(
  [out] IEnumVdsObject **ppEnum
);

パラメーター

[out] ppEnum

LUN を LUN オブジェクトとして列挙するために使用できる IEnumVdsObject インターフェイス ポインターのアドレス。 詳細については、「 列挙オブジェクトの操作」を参照してください。 呼び出し元は、 IUnknown::Release メソッドを呼び出して不要になった場合に、インターフェイスと各 LUN オブジェクトを解放する必要があります。

戻り値

このメソッドは、E_INVALIDARGやE_OUTOFMEMORYなどの標準の HRESULT 値と、 VDS 固有の戻り値を返すことができます。 また、HRESULT_FROM_WIN32 マクロを使用して、変換されたシステム エラー コードを返すこともできます。 エラーは、VDS 自体または使用されている基になる VDS プロバイダー から発生する可能性があります。 可能な戻り値は次のとおりです。

リターン コード/値 説明
S_OK
サブシステム内の LUN の列挙を返します。 サブシステムに LUN がない場合、列挙は空です。
VDS_E_PROVIDER_CACHE_CORRUPT
0x8004241FL
この戻り値は、配列に関する情報をキャッシュするプロバイダー内のソフトウェアまたは通信の問題を示します。 キャッシュを復元するには、 IVdsHwProvider::Reenumerate メソッドの後に IVdsHwProvider::Refresh メソッドを使用します。
VDS_E_OBJECT_DELETED
0x8004240BL
サブシステム オブジェクトが存在しなくなりました。
VDS_E_OBJECT_STATUS_FAILED
0x80042431L
サブシステムが失敗状態であり、要求された操作を実行できません。
VDS_E_ANOTHER_CALL_IN_PROGRESS
0x80042404L
別の操作が進行中です。この操作は、前の操作または操作が完了するまで続行できません。

注釈

IEnumVdsObject インターフェイスには、LUN マスクに関係なく、サブシステム内のすべての LUN が含まれます。

実装者は、LUN が 0 のサブシステムごとに空の列挙オブジェクトを返す必要があります。

同時に実行されている 2 つの個別のスレッドでこのメソッドが呼び出されると、結果に一貫性がない可能性があります。 IVdsLun::D elete などのメソッドが同時に実行されている別のスレッドで呼び出されている間に、1 つのスレッドで呼び出された場合、結果としてプロバイダー アクセス違反が発生する可能性があります。 ハードウェア プロバイダーは、このような同期の問題を最小限に抑えるために、必要に応じてこのクエリ操作をシリアル化する必要があります。

要件

要件
サポートされている最小のクライアント Windows Vista [デスクトップ アプリのみ]
サポートされている最小のサーバー Windows Server 2003 (デスクトップ アプリのみ)
対象プラットフォーム Windows
ヘッダー vdshwprv.h
Library Uuid.lib

こちらもご覧ください

IEnumVdsObject

IVdsHwProvider::Reenumerate

IVdsHwProvider::Refresh

IVdsSubSystem