IVdsVolume
COM公式ドキュメント
ボリュームを管理するためのメソッドを提供します。
メソッド 11
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
現在のボリュームのプロパティ詳細を返します。
| pVolumeProperties | VDS_VOLUME_PROP* | out | 呼び出し元が割り当てて渡す VDS_VOLUME_PROP 構造体のアドレスです。VDS は pwszName メンバー文字列のためにメモリを割り当てます。呼び出し元は、CoTaskMemFree 関数を使用してこの文字列を解放する必要があります。 |
戻り値
このメソッドは、E_INVALIDARG や E_OUTOFMEMORY などの標準的な HRESULT 値、および VDS 固有の戻り値 を返すことがあります。また、HRESULT_FROM_WIN32 マクロを使用して変換された システムエラーコード を返すこともあります。エラーは VDS 自体、または使用されている基盤の VDS プロバイダー から発生する可能性があります。戻り値には次のものがあります。
| 戻り値コード/値 | 説明 |
|---|---|
| メソッドは正常に完了しました。 | |
|
プロパティの一部は取得されましたが、すべてではありません。デバイスの取り外しなど、すべてのプロパティの取得に失敗する原因は数多くあることに注意してください。 |
ボリュームがメンバーとなっているパックを取得します。
| ppPack | IVdsPack** | out | IVdsPack インターフェイスポインターのアドレスです。呼び出し元はインターフェイスを解放する必要があります。 |
戻り値
このメソッドは、E_INVALIDARG や E_OUTOFMEMORY などの標準的な HRESULT 値、および VDS 固有の戻り値 を返すことがあります。また、HRESULT_FROM_WIN32 マクロを使用して変換された システムエラーコード を返すこともあります。エラーは VDS 自体、または使用されている基盤の VDS プロバイダー から発生する可能性があります。戻り値には次のものがあります。
| 戻り値コード | 説明 |
|---|---|
| メソッドは正常に完了しました。 |
ボリュームのプレックスを列挙するオブジェクトを返します。
| ppEnum | IEnumVdsObject** | out | プレックスを ボリュームプレックスオブジェクト として列挙するために使用できる IEnumVdsObject インターフェイスポインターのアドレスです。詳細については、列挙オブジェクトの操作 を参照してください。呼び出し元は、不要になったインターフェイスおよび各ボリュームプレックスオブジェクトを、IUnknown::Release メソッドを呼び出して解放する必要があります。 |
戻り値
このメソッドは、E_INVALIDARG や E_OUTOFMEMORY などの標準的な HRESULT 値、および VDS 固有の戻り値 を返すことがあります。また、HRESULT_FROM_WIN32 マクロを使用して変換された システムエラーコード を返すこともあります。エラーは VDS 自体、または使用されている基盤の VDS プロバイダー から発生する可能性があります。戻り値には次のものがあります。
| 戻り値コード | 説明 |
|---|---|
| メソッドは正常に完了しました。 |
各プレックスの各メンバーにディスクエクステントを追加することで、現在のボリュームのサイズを拡張します。
| pInputDiskArray | VDS_INPUT_DISK* | in | VDS_INPUT_DISK 構造体の配列へのポインターです。ディスクごとに 1 つの構造体を指定します。 Note ボリュームがメンバーを 1 つだけ持つプレックスを 1 つだけ持つ場合を除き、呼び出し元は Extend メソッドと組み合わせて既定のメンバーインデックスを使用しないでください。
|
| lNumberOfDisks | INT | in | ボリューム内のディスクの総数です。ボリュームのプレックスにボリュームを拡張するのに十分な領域がある場合、呼び出し元はゼロを渡すことができます。この場合、pInputDiskArray は NULL でなければなりません。 |
| ppAsync | IVdsAsync** | out | VDS が戻り時に初期化する IVdsAsync インターフェイスポインターのアドレスです。呼び出し元はインターフェイスを解放する必要があります。このポインターを使用して、操作のキャンセル、完了の待機、またはステータスの照会を行います。このインターフェイスで IVdsAsync::Wait メソッドを呼び出して成功を示す HRESULT 値が返された場合、VDS_ASYNC_OUTPUT 構造体で返される各インターフェイスポインターに対して IUnknown::Release メソッドを呼び出して、返されたインターフェイスを解放する必要があります。ただし、Wait が失敗を示す HRESULT 値を返した場合、または Wait の pHrResult パラメーターが失敗を示す HRESULT 値を受け取った場合、VDS_ASYNC_OUTPUT 構造体内のインターフェイスポインターは NULL であり、解放する必要はありません。成功または失敗の HRESULT 値は、Winerror.h で定義されている SUCCEEDED マクロおよび FAILED マクロを使用してテストできます。 |
戻り値
このメソッドは、E_INVALIDARG や E_OUTOFMEMORY などの標準的な HRESULT 値、および VDS 固有の戻り値 を返すことがあります。また、HRESULT_FROM_WIN32 マクロを使用して変換された システムエラーコード を返すこともあります。エラーは VDS 自体、または使用されている基盤の VDS プロバイダー から発生する可能性があります。戻り値には次のものがあります。
| 戻り値コード/値 | 説明 |
|---|---|
| メソッドは正常に完了しました。 | |
|
ボリューム上のファイルシステムがこの操作をサポートしていないため、ボリュームを拡張できません。 |
|
ボリュームを拡張するのに十分な領域がありません。 |
|
ボリュームが正常な状態ではありません。 |
解説(Remarks)
このメソッドは、同じディスク上のシンプルボリュームを拡張するか、複数のディスクにボリュームを拡張してスパンボリュームを作成します。呼び出し元はベーシックディスク上のボリュームを拡張できますが、ディスクエクステントはボリュームと連続している必要があります。
VDS は、拡張後のボリュームサイズに合わせてファイルシステムを自動的に拡張します。ファイルシステムはこの操作をサポートしている必要があります。呼び出し元が使用するエクステントを指定しなかった場合、VDS はファイルシステムのみを拡張し、ボリュームは拡張しません。
拡張 (Extend) および 縮小 (shrink) 操作は、NTFS ボリュームおよび RAW ボリュームでのみサポートされます。
VDS はボリュームを拡張する際に次の規則を適用します。
- シンプルおよびスパンのプレックスタイプの場合、VDS は、別のプレックスにまだ使用されていない任意のディスクエクステントを使用してプレックスの唯一のメンバーを拡張します。エクステントが同じディスク上にあるかどうかは問いません。VDS は、エクステントのメンバーインデックスを無視して、呼び出し元が指定した順序でディスクエクステントを使用します。ベーシックディスク上でない限り、VDS は同じディスクまたは別のディスク上の任意のディスクエクステントを使用してプレックスの唯一のメンバーを拡張できます。
- ストライプおよびパリティ付きストライプのプレックスタイプの場合、VDS は次のようにエクステントをプレックスのメンバーに割り当てます。
- エクステントは、呼び出し元が指定したメンバーインデックスに割り当てられます。
- 呼び出し元がメンバー ID を指定しなかった場合、エクステントは同じディスクを占有するメンバーインデックスに割り当てられます。
実装者は、呼び出しが非同期操作を開始するかどうかにかかわらず、このメソッドに対して IVdsAsync インターフェイスへのポインターを返す必要があります。
ボリュームおよびすべてのプレックスのサイズを縮小し、解放されたエクステントを空き領域に戻します。
| ullNumberOfBytesToRemove | ULONGLONG | in | 縮小するサイズ (バイト単位) です。 |
| ppAsync | IVdsAsync** | out | IVdsAsync インターフェイスポインターのアドレスです。VDS は戻り時にインターフェイスを初期化します。呼び出し元はインターフェイスを解放する必要があります。このインターフェイスを使用して、操作のキャンセル、完了の待機、またはステータスの照会を行います。IVdsAsync::Wait が呼び出されて成功を示す HRESULT 値が返された場合、VDS_ASYNC_OUTPUT 構造体で返される各インターフェイスポインターに対して IUnknown::Release メソッドを呼び出して、返されたインターフェイスを解放する必要があります。ただし、Wait が失敗を示す HRESULT 値を返した場合、または Wait の pHrResult パラメーターが失敗を示す HRESULT 値を受け取った場合、VDS_ASYNC_OUTPUT 構造体内のインターフェイスポインターは NULL であり、解放する必要はありません。成功または失敗の HRESULT 値は、Winerror.h で定義されている SUCCEEDED マクロおよび FAILED マクロを使用してテストできます。 |
戻り値
このメソッドは、E_INVALIDARG や E_OUTOFMEMORY などの標準的な HRESULT 値、および VDS 固有の戻り値 を返すことがあります。また、HRESULT_FROM_WIN32 マクロを使用して変換された システムエラーコード を返すこともあります。エラーは VDS 自体、または使用されている基盤の VDS プロバイダー から発生する可能性があります。戻り値には次のものがあります。
| 戻り値コード/値 | 説明 |
|---|---|
| メソッドは正常に完了しました。 | |
|
プロバイダーのキャッシュが破損しています。これは、接続されているデバイスに関する情報をキャッシュするプロバイダー内部のソフトウェアまたは通信の問題を示します。呼び出し元は、IVdsHwProvider::Reenumerate メソッドに続いて IVdsHwProvider::Refresh メソッドを使用して、キャッシュを復元できます。 |
|
ファイルシステムがサポートしていないため、ボリュームを縮小できません。 |
|
この操作はリムーバブルメディアではサポートされていません。 |
|
指定された縮小サイズが、許可されている最小の縮小サイズを下回っています。 |
|
指定された縮小サイズが大きすぎるため、ボリュームが最小ボリュームサイズより小さくなります。 |
解説(Remarks)
このメソッドは IVdsVolumeShrink::Shrink メソッドのラッパーです。IVdsVolume::Shrink を呼び出すと、uNumberOfBytesToRemove パラメーターの値が IVdsVolumeShrink::Shrink の ullDesiredNumberOfReclaimableBytes パラメーターおよび ullMinNumberOfReclaimableBytes パラメーターに使用されます。
縮小 (Shrink) および 拡張 (extend) 操作は、NTFS ボリュームおよび RAW ボリュームでのみサポートされます。
このメソッドを使用して、ファイルシステムとボリュームを縮小します。VDS がボリュームの縮小に失敗した場合は、ファイルシステムを縮小せずに操作を停止します。
各ボリュームでは、一度に 1 つの縮小またはデフラグ操作のみを実行できます。Windows Server 2008 および Windows Vista: コンピューターごとに、一度に 1 つの縮小またはデフラグ操作のみを実行できます。
uNumberOfBytesToRemove がゼロの場合、メソッドは失敗します。それ以外の場合、VDS は uNumberOfBytesToRemove をファイルシステムのクラスターサイズの倍数に丸めます。
実装者は、呼び出しが非同期操作を開始しない場合でも、このメソッドに対して IVdsAsync インターフェイスへのポインターを返す必要があります。
IVdsVolumeShrink::QueryMaxReclaimableBytes メソッドを使用して、縮小操作によって再利用されるバイト数を見積もることができます。ただし、QueryMaxReclaimableBytes は実際に利用可能なバイト数よりも多くのバイト数を返す場合があります。
ボリュームをプレックスとして現在のボリュームに追加します。
| VolumeId | GUID | in | プレックスとして追加するボリュームの GUID です。 |
| ppAsync | IVdsAsync** | out | VDS が戻り時に初期化する IVdsAsync インターフェイスポインターのアドレスです。呼び出し元はインターフェイスを解放する必要があります。このポインターを使用して、操作のキャンセル、完了の待機、またはステータスの照会を行います。 |
戻り値
このメソッドは、E_INVALIDARG や E_OUTOFMEMORY などの標準的な HRESULT 値、および VDS 固有の戻り値 を返すことがあります。また、HRESULT_FROM_WIN32 マクロを使用して変換された システムエラーコード を返すこともあります。エラーは VDS 自体、または使用されている基盤の VDS プロバイダー から発生する可能性があります。戻り値には次のものがあります。
| 戻り値コード/値 | 説明 |
|---|---|
| プレックスは正常に追加されました。 | |
|
GPT ディスク上のブートボリュームが MBR ディスクにミラーリングされました。新しいプレックスをコンピューターの起動に使用することはできません。 |
|
ボリュームにアクセスできません。 |
|
ボリュームは障害が発生しつつあるか、または障害が発生しています。 |
|
ボリュームが複数のディスクにまたがっています。 |
|
ボリュームが複数のエクステントで構成されています。 |
|
ソースボリュームがターゲットボリュームより小さいです。ソースボリュームがターゲットボリュームより大きい場合、ターゲットボリュームは同じサイズのまま維持され、操作は成功します。 |
解説(Remarks)
この操作は、プレックスをちょうど 1 つ持つベーシックボリュームでは無効です。
このメソッドを使用して、ボリュームを別のボリュームにプレックスとして追加します。たとえば、呼び出し元はボリューム (ボリューム B) を作成し、ボリューム B を既存のボリューム (ボリューム A) の新しいプレックスとして指定してから、ボリューム B を削除できます。ボリューム A の新しいプレックスは、ボリューム B が占有していたものと同じディスクエクステントを占有します。
実装者は、呼び出しが非同期操作を開始するかどうかにかかわらず、このメソッドに対して IVdsAsync インターフェイスへのポインターを返す必要があります。
指定されたプレックスを現在のボリュームから削除します。
| plexId | GUID | in | 分割するプレックスの GUID です。 |
| ppAsync | IVdsAsync** | out | VDS が戻り時に初期化する IVdsAsync インターフェイスポインターのアドレスです。呼び出し元はインターフェイスを解放する必要があります。このポインターを使用して、操作のキャンセル、完了の待機、またはステータスの照会を行います。 このメソッドで IVdsAsync::Wait を呼び出して成功を示す HRESULT 値が返された場合、VDS_ASYNC_OUTPUT 構造体で返される各インターフェイスポインターに対して IUnknown::Release メソッドを呼び出して、返されたインターフェイスを解放する必要があります。ただし、Wait が失敗を示す HRESULT 値を返した場合、または Wait の pHrResult パラメーターが失敗を示す HRESULT 値を受け取った場合、VDS_ASYNC_OUTPUT 構造体内のインターフェイスポインターは NULL であり、解放する必要はありません。成功または失敗の HRESULT 値は、Winerror.h で定義されている SUCCEEDED マクロおよび FAILED マクロを使用してテストできます。 |
戻り値
このメソッドは、E_INVALIDARG や E_OUTOFMEMORY などの標準的な HRESULT 値、および VDS 固有の戻り値 を返すことがあります。また、HRESULT_FROM_WIN32 マクロを使用して変換された システムエラーコード を返すこともあります。エラーは VDS 自体、または使用されている基盤の VDS プロバイダー から発生する可能性があります。戻り値には次のものがあります。
| 戻り値コード/値 | 説明 |
|---|---|
| プレックスは正常に分割されました。 | |
|
ボリュームが利用できません。 |
|
ボリュームがミラーではありません。 |
解説(Remarks)
この操作は、プレックスをちょうど 1 つ持つベーシックボリュームでは無効です。
このメソッドを使用してミラーを分割します。分割されたプレックスは新しいボリュームになります。残りのプレックスが古い (stale) または欠落している場合、VDS は操作を停止してエラーを返します。VDS はこの操作中にボリュームをマウント解除することに注意してください。
ブートプレックスまたはシステムプレックス、つまり本質的にはコンピューターの起動に使用されるプレックスは、plexId として無効です。そのようなプレックスが渡された場合、VDS は操作を停止してエラーを返します。
実装者は、呼び出しが非同期操作を開始するかどうかにかかわらず、このメソッドに対して IVdsAsync インターフェイスへのポインターを返す必要があります。
指定された 1 つ以上のプレックスを現在のボリュームから削除し、エクステントを解放します。
| plexId | GUID | in | 削除するプレックスの GUID です。 |
| ppAsync | IVdsAsync** | out | VDS が戻り時に初期化する IVdsAsync インターフェイスポインターのアドレスです。呼び出し元はインターフェイスを解放する必要があります。このポインターを使用して、操作のキャンセル、完了の待機、またはステータスの照会を行います。 |
戻り値
このメソッドは、E_INVALIDARG や E_OUTOFMEMORY などの標準的な HRESULT 値、および VDS 固有の戻り値 を返すことがあります。また、HRESULT_FROM_WIN32 マクロを使用して変換された システムエラーコード を返すこともあります。エラーは VDS 自体、または使用されている基盤の VDS プロバイダー から発生する可能性があります。戻り値には次のものがあります。
| 戻り値コード/値 | 説明 |
|---|---|
| プレックスは正常に削除されました。 | |
|
ボリュームにアクセスできません。 |
|
ボリュームがミラーではありません。 |
解説(Remarks)
この操作では、ボリュームの最後のプレックスを削除することはできません。代わりに、IVdsVolume::Delete メソッドを使用して、最後に残ったボリューム (唯一のプレックス) を削除します。このメソッドは、プレックスをちょうど 1 つ持つベーシックボリュームでは無効です。
VDS はプレックスを削除するときにボリュームをマウント解除しません。
実装者は、呼び出しが非同期操作を開始するかどうかにかかわらず、このメソッドに対して IVdsAsync インターフェイスへのポインターを返す必要があります。
ボリュームおよびすべてのプレックスを削除し、エクステントを解放します。
| bForce | BOOL | in | TRUE の場合、VDS は使用中であってもボリュームを削除します。それ以外の場合、ボリュームが使用中であれば削除されません。 |
戻り値
このメソッドは、E_INVALIDARG や E_OUTOFMEMORY などの標準的な HRESULT 値、および VDS 固有の戻り値 を返すことがあります。また、HRESULT_FROM_WIN32 マクロを使用して変換された システムエラーコード を返すこともあります。エラーは VDS 自体、または使用されている基盤の VDS プロバイダー から発生する可能性があります。戻り値には次のものがあります。
| 戻り値コード | 説明 |
|---|---|
| プレックスは正常に削除されました。 |
解説(Remarks)
ボリュームを削除できるのは、オンラインのパックからのみです。IVdsPack::GetProperties メソッドを使用して、パックのステータスが VDS_PS_ONLINE であることを確認してください。
リムーバブルメディア上にあるボリュームは削除できません。
VDS はボリュームを削除する前にファイルシステムをマウント解除します。これは FAT および FAT32 では必要ですが、NTFS では不要な操作です。さらに、VDS はボリューム自体を削除した後、ボリュームへのすべてのアクセスパスを削除します。マウント解除操作が失敗し、bForce が true の場合、VDS はマウント解除せずにボリュームを削除します。ファイルシステムのクライアントアプリケーションは、この状況を処理する必要があります。マウント解除が成功し、削除操作が失敗した場合、VDS はボリュームの再マウントを試みます。
VDS は、現在のシステムボリュームおよびブートボリューム、ならびにページファイル、クラッシュダンプ、ハイバネーションの各ボリュームの削除を防止します。クラッシュダンプおよびページファイルは移動またはリセットできます。ハイバネーションボリュームはブートパーティション上に残す必要があります。
Windows Server 2003: クラッシュダンプおよびハイバネーションの各ボリュームは、ブートパーティション上に残す必要があります。
Windows Server 2003: ボリュームの削除後、VDS はマウントされたフォルダーの削除を試みます。これが失敗した場合、ボリューム自体は正常に削除されていても、Delete は VDS_S_ACCESS_PATH_NOT_DELETED を返します。
ボリュームフラグを設定します。
| ulFlags | DWORD | in | VDS_VOLUME_FLAG によって列挙されるフラグです。呼び出し元は次のフラグを設定できます。
|
| bRevertOnClose | BOOL | in | TRUE の場合、フラグは一時的に設定されます。呼び出し元がボリュームオブジェクトへの最後の参照を解放するか、IVdsVolume::ClearFlags を呼び出すか、またはボリュームをマウント解除すると、VDS は各フラグを以前の状態にリセットします。ただし、フラグがディスク全体に設定されている場合は例外です (詳細については解説セクションの表を参照してください)。フラグがディスク全体に設定されている場合、フラグをリセットするには IVdsVolume::ClearFlags メソッドを呼び出す必要があります。 |
戻り値
このメソッドは、E_INVALIDARG や E_OUTOFMEMORY などの標準的な HRESULT 値、および VDS 固有の戻り値 を返すことがあります。また、HRESULT_FROM_WIN32 マクロを使用して変換された システムエラーコード を返すこともあります。エラーは VDS 自体、または使用されている基盤の VDS プロバイダー から発生する可能性があります。戻り値には次のものがあります。
| 戻り値コード/値 | 説明 |
|---|---|
| フラグが設定されました。 | |
|
プロバイダーは VDS_VF_LBN REMAP_ENABLED ボリュームフラグをサポートしていません。 |
|
プロバイダーは VDS_VF_NO DRIVELETTER ボリュームフラグをサポートしていません。 |
|
bRevertOnClose を true に設定できるのは、VDS_VF_HIDDEN または VDS_VF_READONLY のいずれかのボリュームフラグが設定されている場合のみです。 |
|
一部のボリュームフラグは既に true に設定されています。まずこれらのフラグをクリアしてから、このメソッドを呼び出して bRevertOnClose パラメーターを再度 true に設定する必要があります。VDS_E_INVALID_OPERATION の戻り値も、この状態を示すことがあります。 |
解説(Remarks)
VDS_VF_READONLY、VDS_VF_HIDDEN、VDS_VF_NO_DEFAULT_DRIVE_LETTER の各フラグのスコープは、ディスクの種類 (ベーシックまたはダイナミック) およびパーティションスタイル (MBR または GPT) によって異なります。スコープは、次の条件で説明するように、ディスク単位またはボリューム単位のいずれかになります。
- ディスクがベーシックかつ MBR の場合、これらのフラグの 1 つをボリュームに設定すると、現在のボリュームと、指定した属性を持つ、そのディスク上に今後作成されるすべてのボリュームに影響します。
- ディスクがベーシックかつ GPT、ダイナミックかつ MBR、またはダイナミックかつ GPT の場合、フラグの 1 つをボリュームに設定すると、その特定のボリュームにのみ適用されます。
| フラグ | MBR ベーシックディスク | GPT ベーシックディスク | MBR または GPT ダイナミックディスク |
|---|---|---|---|
| VDS_VF_LBN_REMAP_ENABLED | 設定できません。 | 設定できません。 | サードパーティのボリュームマネージャーがサポートしている場合、ボリュームに設定されます。 |
| VDS_VF_HIDDEN | ディスク全体に設定されます。 | ボリュームに設定されます (データパーティションのみ)。 | ボリュームに設定されます。 |
| VDS_VF_READONLY | ディスク全体に設定されます。 | ボリュームに設定されます (データパーティションのみ)。 | ボリュームに設定されます。 |
| VDS_VF_NO_DEFAULT_DRIVE_LETTER | ディスク全体に設定されます。 | パーティションに設定されます。 | VDS_VOLUME_FLAG を参照してください。 |
| VDS_VF_SHADOW_COPY | ディスク全体に設定されます。 | ボリュームに設定されます (データパーティションのみ)。 | ボリュームに設定されます。 |
| VDS_VF_INSTALLABLE | 設定できません。 | 設定できません。 | ボリュームに設定されます。 |
bRevertOnClose が TRUE で、ディスクが MBR ベーシックディスクであり、その後ボリュームが削除された場合でも、フラグはディスク全体に設定されたままとなり、そのディスク上に作成される新しいボリュームすべてに適用されます。フラグをクリアするには、IVdsAdvancedDisk::Clean を使用する必要があります。
ダイナミックディスク上にブートボリュームを作成するには、ボリュームに対して VDS_VF_INSTALLABLE フラグを設定し、その後 IVdsVolumeMF::Format メソッドを呼び出してボリュームをフォーマットする必要があります。
ボリュームが次のフラグの 1 つ以上を含んでいる場合、このメソッドは失敗します。
- VDS_VF_SYSTEM
- VDS_VF_BOOT
- VDS_VF_PAGEFILE
- VDS_VF_HIBERNATION
- VDS_VF_CRASHDUMP
VDS_VF_HIDDEN または VDS_VF_READONLY のいずれかを指定すると、bRevertOnClose が TRUE でない限り、ボリュームのマウント解除と再マウントが強制的に行われます。
ボリュームフラグをクリアします。
| ulFlags | DWORD | in | VDS_VOLUME_FLAG によって列挙されるフラグです。呼び出し元は次のフラグをクリアできます。 VDS_VF_LBN_REMAP_ENABLED VDS_VF_HIDDEN VDS_VF_READONLY VDS_VF_NO_DEFAULT_DRIVE_LETTER VDS_VF_INSTALLABLE VDS_VF_SHADOW_COPY |
戻り値
このメソッドは、E_INVALIDARG や E_OUTOFMEMORY などの標準的な HRESULT 値、および VDS 固有の戻り値 を返すことがあります。また、HRESULT_FROM_WIN32 マクロを使用して変換された システムエラーコード を返すこともあります。エラーは VDS 自体、または使用されている基盤の VDS プロバイダー から発生する可能性があります。戻り値には次のものがあります。
| 戻り値コード/値 | 説明 |
|---|---|
| フラグは正常にクリアされました。 | |
|
クリアするフラグが、SetFlags メソッドで以前に設定されたフラグと一致せず、かつ bRevertOnClose が TRUE に設定されています。 |
解説(Remarks)
ダイナミックディスク上にブートボリュームを作成するには、ボリュームに対して VDS_VF_INSTALLABLE フラグを設定し、その後 IVdsVolumeMF::Format メソッドを呼び出してボリュームをフォーマットする必要があります。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_IVdsVolume "{88306BB2-E71F-478C-86A2-79DA200A0F11}" #usecom global IVdsVolume IID_IVdsVolume "{}" #comfunc global IVdsVolume_GetProperties 3 var #comfunc global IVdsVolume_GetPack 4 sptr #comfunc global IVdsVolume_QueryPlexes 5 sptr #comfunc global IVdsVolume_Extend 6 var,int,sptr #comfunc global IVdsVolume_Shrink 7 int64,sptr #comfunc global IVdsVolume_AddPlex 8 int,sptr #comfunc global IVdsVolume_BreakPlex 9 int,sptr #comfunc global IVdsVolume_RemovePlex 10 int,sptr #comfunc global IVdsVolume_Delete 11 int #comfunc global IVdsVolume_SetFlags 12 int,int #comfunc global IVdsVolume_ClearFlags 13 int ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。#define global IID_IVdsVolume "{88306BB2-E71F-478C-86A2-79DA200A0F11}" #usecom global IVdsVolume IID_IVdsVolume "{}" #comfunc global IVdsVolume_GetProperties 3 sptr #comfunc global IVdsVolume_GetPack 4 sptr #comfunc global IVdsVolume_QueryPlexes 5 sptr #comfunc global IVdsVolume_Extend 6 sptr,int,sptr #comfunc global IVdsVolume_Shrink 7 int64,sptr #comfunc global IVdsVolume_AddPlex 8 int,sptr #comfunc global IVdsVolume_BreakPlex 9 int,sptr #comfunc global IVdsVolume_RemovePlex 10 int,sptr #comfunc global IVdsVolume_Delete 11 int #comfunc global IVdsVolume_SetFlags 12 int,int #comfunc global IVdsVolume_ClearFlags 13 int ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。