次の方法で共有


IVdsLun::Extend メソッド (vdshwprv.h)

[Windows 8とWindows Server 2012以降、Virtual Disk Service COM インターフェイスは Windows Storage Management API に置き換えられます。

LUN を指定したバイト数だけ拡張します。

構文

HRESULT Extend(
  [in]  ULONGLONG     ullNumberOfBytesToAdd,
  [in]  VDS_OBJECT_ID *pDriveIdArray,
  [in]  LONG          lNumberOfDrives,
  [out] IVdsAsync     **ppAsync
);

パラメーター

[in] ullNumberOfBytesToAdd

LUN の拡張に使用するバイト数。 バイト数は、ドライブのブロックまたはセクター サイズの偶数倍である必要はありません。 プロバイダーは、アラインメント要件やその他の制限を満たすために、バイト数を切り上げたり下げたりすることができます。 ほとんどの場合、プロバイダーは切り上げ、まれな例外では、LUN が少なくとも要求されたバイト数だけ拡張されるようにします。

[in] pDriveIdArray

ドライブ GUID の配列へのポインター。 プロバイダーは、これらのドライブを使用して LUN を拡張します。 ドライブは、指定したシーケンスで使用されます。プロバイダーは、次のドライブに移動する前に 1 つのドライブ上のすべてのエクステントを使用し、LUN が要求されたバイト数で拡張されると停止します。

または、呼び出し元は、このパラメーターに NULL を 渡し、 lNumberOfDrives パラメーターにゼロを渡すことで、プロバイダーにドライブを自動的に選択するように指示することもできます。 NULL を渡すことは、lNumberOfDrives パラメーターが 0 の場合にのみ有効であることに注意してください。

[in] lNumberOfDrives

pDriveIdArray パラメーターで指定されたドライブの数。 呼び出し元が 0 を渡すと、プロバイダーはドライブを選択します。

[out] ppAsync

VDS が戻り時に初期化する IVdsAsync インターフェイス ポインターのアドレス。 呼び出し元はインターフェイスを解放する必要があります。 このインターフェイスを使用して、操作の状態を取り消す、待機する、またはクエリを実行します。

戻り値

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

リターン コード/値 Description
VDS_E_PROVIDER_CACHE_CORRUPT
0x8004241FL
この戻り値は、配列に関する情報をキャッシュするプロバイダー内のソフトウェアまたは通信の問題を通知します。 キャッシュを復元するには、 IVdsHwProvider::Reenumerate メソッドの後に IVdsHwProvider::Refresh メソッドを使用します。
VDS_E_OBJECT_DELETED
0x8004240BL
LUN オブジェクトが存在しなくなりました。
VDS_E_OBJECT_STATUS_FAILED
0x80042431L
LUN が失敗状態であり、要求された操作を実行できません。
VDS_E_ANOTHER_CALL_IN_PROGRESS
0x80042404L
別の操作が進行中です。この操作は、前の操作または操作が完了するまで続行できません。
VDS_E_OBJECT_NOT_FOUND
0x80042405L
VDS_OBJECT_ID定数を受け取る任意のメソッドから返すことができます。 この戻り値は、識別子が既存のオブジェクトを参照していないことを示します。
VDS_E_NOT_SUPPORTED
0x80042400L
この操作またはパラメーターの組み合わせは、このプロバイダーではサポートされていません。
VDS_E_NOT_ENOUGH_SPACE
0x8004240FL
この操作に使用できる領域が不足しています。
VDS_E_NOT_ENOUGH_DRIVE
0x80042410L
この操作を完了するのに十分な空きドライブがサブシステムにありません。

注釈

呼び出し元は、LUN の拡張に使用するプロバイダーのドライブの一覧を指定したり、プロバイダーにドライブを自動的に選択するように指示したりすることができます。

LUN が拡張された後、呼び出し元は 、IOCTL_DISK_UPDATE_PROPERTIES 制御コードを使用して、LUN がマスク解除されているコンピューターで更新されたディスク サイズを表示する必要があります。

実装者は、呼び出しが非同期操作を開始するかどうかに関係なく、このメソッドの IVdsAsync インターフェイスへのポインターを返す必要があります。

ullNumberOfBytesToAdd パラメーターが pDriveIdArray パラメーターで指定されたドライブで使用可能なバイト数を超える場合は、最初に指定したドライブを使用し、他のドライブから選択します。 要求されたバイト数だけ LUN を拡張するのに十分なドライブがない場合は、エラーを返し、LUN を拡張しないでください。

要件

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

こちらもご覧ください

IVdsAsync

IVdsHwProvider::Reenumerate

IVdsHwProvider::Refresh

IVdsLun

IVdsLun::Shrink

IVdsSubSystem::CreateLun