IVdsLun::Extend メソッド (vds.h)
[Windows 8とWindows Server 2012以降、仮想ディスク サービス 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 パラメーターに 0 を渡すことで、プロバイダーにドライブを自動的に選択するように指示することもできます。 NULL を渡すことは、lNumberOfDrives パラメーターが 0 の場合にのみ有効であることに注意してください。
[in] lNumberOfDrives
pDriveIdArray パラメーターで指定されたドライブの数。 呼び出し元が 0 を渡した場合、プロバイダーはドライブを選択します。
[out] ppAsync
戻り時に VDS が初期化する IVdsAsync インターフェイス ポインターのアドレス。 呼び出し元はインターフェイスを解放する必要があります。 このインターフェイスを使用して、操作の状態を取り消す、待機する、またはクエリを実行します。
戻り値
このメソッドは、E_INVALIDARGやE_OUTOFMEMORYなどの標準の HRESULT 値と、 VDS 固有の戻り値を返すことができます。 また、HRESULT_FROM_WIN32 マクロを使用して、変換されたシステム エラー コードを返すこともできます。 エラーは、VDS 自体または使用されている基になる VDS プロバイダー から発生する可能性があります。 可能な戻り値は次のとおりです。
リターン コード/値 | 説明 |
---|---|
|
この戻り値は、配列に関する情報をキャッシュするプロバイダー内のソフトウェアまたは通信の問題を示します。 キャッシュを復元するには、 IVdsHwProvider::Reenumerate メソッドの後に IVdsHwProvider::Refresh メソッドを使用します。 |
|
LUN オブジェクトが存在しなくなりました。 |
|
LUN は失敗状態であり、要求された操作を実行できません。 |
|
別の操作が進行中です。この操作は、前の操作または操作が完了するまで続行できません。 |
|
VDS_OBJECT_ID定数を受け取る任意のメソッドから返すことができます。 この戻り値は、識別子が既存のオブジェクトを参照していないことを示します。 |
|
この操作またはパラメーターの組み合わせは、このプロバイダーではサポートされていません。 |
|
この操作に使用できる領域が不足しています。 |
|
この操作を完了するのに十分な空きドライブがサブシステムに存在しません。 |
解説
呼び出し元は、LUN の拡張に使用するプロバイダーのドライブの一覧を指定することも、プロバイダーにドライブを自動的に選択するように指示することもできます。
LUN を拡張した後、呼び出し元は 、IOCTL_DISK_UPDATE_PROPERTIES コントロール コードを使用して、LUN がマスクされていないコンピューターで更新されたディスク サイズを表示する必要があります。
実装者は、呼び出しが非同期操作を開始するかどうかに関係なく、このメソッドの IVdsAsync インターフェイスへのポインターを返す必要があります。
ullNumberOfBytesToAdd パラメーターが pDriveIdArray パラメーターで指定されたドライブで使用可能なバイト数より大きい場合は、最初に指定したドライブを使用してから、他のドライブから選択します。 LUN を要求されたバイト数だけ拡張するのに十分なドライブがない場合は、エラーを返し、LUN を拡張しないでください。
要件
サポートされている最小のクライアント | Windows Vista [デスクトップ アプリのみ] |
サポートされている最小のサーバー | Windows Server 2003 [デスクトップ アプリのみ] |
対象プラットフォーム | Windows |
ヘッダー | vds.h |
Library | Uuid.lib |