IVdsDrive::QueryExtents メソッド (vdshwprv.h)

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

割り当てられたエクステントと未割り当てエクステントの両方を含む、ドライブ上のエクステントの配列を返します。

構文

HRESULT QueryExtents(
  [out] VDS_DRIVE_EXTENT **ppExtentArray,
  [out] LONG             *plNumberOfExtents
);

パラメーター

[out] ppExtentArray

呼び出し元によって渡される VDS_DRIVE_EXTENT 構造体の配列へのポインター。 呼び出し元は 、CoTaskMemFree 関数を使用してこの配列を解放する必要があります。

[out] plNumberOfExtents

VDS_DRIVE_EXTENT構造体で返されるドライブ エクステントの数へのポインター。

戻り値

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

リターン コード/値 説明
S_OK
エクステント情報が正常に返されました。 エクステントのないドライブの場合、配列は空で、 plNumberOfExtents の値は 0 に設定され、 ppExtentArray の値は NULL に設定されます。
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
別の操作が進行中です。この操作は、前の操作または操作が完了するまで続行できません。
VDS_E_NOT_SUPPORTED
0x80042400L
サブシステムはこのメソッドをサポートしていません。

注釈

ドライブは任意の数の LUN にエクステントを提供でき、これらの LUN はネットワーク上の任意の数の異なるコンピューターにマスク解除できます。 LUN プレックスのすべてのエクステントを表示するには、 IVds LunPlex::QueryExtents メソッドを使用します。

VDS_DRIVE_EXTENT構造体の LunId メンバーは、割り当てられた各エクステントが寄与する LUN の GUID を指定します。 したがって、このメソッドの結果を使用して、ppExtentArray で返される個別の LunId 値の数をカウントすることで、ドライブが寄与する LUN の数を決定できます。

要件

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

こちらもご覧ください

IVdsDrive

IVdsHwProvider::Reenumerate

IVdsHwProvider::Refresh

IVdsLunPlex::QueryExtents

VDS_DRIVE_EXTENT