Win32 API 日本語リファレンス
ホームStorage.VirtualDiskService › IVdsVolume

IVdsVolume

COM
IID88306bb2-e71f-478c-86a2-79da200a0f11継承元IUnknown自前メソッド開始 vtbl3

公式ドキュメント

ボリュームを管理するためのメソッドを提供します。

メソッド 11

vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。

vtbl 3 HRESULT GetProperties(VDS_VOLUME_PROP* pVolumeProperties)

現在のボリュームのプロパティ詳細を返します。

pVolumePropertiesVDS_VOLUME_PROP*out呼び出し元が割り当てて渡す VDS_VOLUME_PROP 構造体のアドレスです。VDS は pwszName メンバー文字列のためにメモリを割り当てます。呼び出し元は、CoTaskMemFree 関数を使用してこの文字列を解放する必要があります。

戻り値

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

戻り値コード/値 説明
S_OK
メソッドは正常に完了しました。
VDS_S_PROPERTIES_INCOMPLETE
0x00042715L
プロパティの一部は取得されましたが、すべてではありません。デバイスの取り外しなど、すべてのプロパティの取得に失敗する原因は数多くあることに注意してください。
vtbl 4 HRESULT GetPack(IVdsPack** ppPack)

ボリュームがメンバーとなっているパックを取得します。

ppPackIVdsPack**outIVdsPack インターフェイスポインターのアドレスです。呼び出し元はインターフェイスを解放する必要があります。

戻り値

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

戻り値コード 説明
S_OK
メソッドは正常に完了しました。
vtbl 5 HRESULT QueryPlexes(IEnumVdsObject** ppEnum)

ボリュームのプレックスを列挙するオブジェクトを返します。

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

戻り値

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

戻り値コード 説明
S_OK
メソッドは正常に完了しました。
vtbl 6 HRESULT Extend(VDS_INPUT_DISK* pInputDiskArray, INT lNumberOfDisks, IVdsAsync** ppAsync)

各プレックスの各メンバーにディスクエクステントを追加することで、現在のボリュームのサイズを拡張します。

pInputDiskArrayVDS_INPUT_DISK*in

VDS_INPUT_DISK 構造体の配列へのポインターです。ディスクごとに 1 つの構造体を指定します。

Note ボリュームがメンバーを 1 つだけ持つプレックスを 1 つだけ持つ場合を除き、呼び出し元は Extend メソッドと組み合わせて既定のメンバーインデックスを使用しないでください。
lNumberOfDisksINTinボリューム内のディスクの総数です。ボリュームのプレックスにボリュームを拡張するのに十分な領域がある場合、呼び出し元はゼロを渡すことができます。この場合、pInputDiskArrayNULL でなければなりません。
ppAsyncIVdsAsync**outVDS が戻り時に初期化する IVdsAsync インターフェイスポインターのアドレスです。呼び出し元はインターフェイスを解放する必要があります。このポインターを使用して、操作のキャンセル、完了の待機、またはステータスの照会を行います。このインターフェイスで IVdsAsync::Wait メソッドを呼び出して成功を示す HRESULT 値が返された場合、VDS_ASYNC_OUTPUT 構造体で返される各インターフェイスポインターに対して IUnknown::Release メソッドを呼び出して、返されたインターフェイスを解放する必要があります。ただし、Wait が失敗を示す HRESULT 値を返した場合、または WaitpHrResult パラメーターが失敗を示す HRESULT 値を受け取った場合、VDS_ASYNC_OUTPUT 構造体内のインターフェイスポインターは NULL であり、解放する必要はありません。成功または失敗の HRESULT 値は、Winerror.h で定義されている SUCCEEDED マクロおよび FAILED マクロを使用してテストできます。

戻り値

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

戻り値コード/値 説明
S_OK
メソッドは正常に完了しました。
VDS_E_CANNOT_EXTEND
0x8004240EL
ボリューム上のファイルシステムがこの操作をサポートしていないため、ボリュームを拡張できません。
VDS_E_NOT_ENOUGH_SPACE
0x8004240FL
ボリュームを拡張するのに十分な領域がありません。
VDS_E_VOLUME_NOT_HEALTHY
0x8004243EL
ボリュームが正常な状態ではありません。

解説(Remarks)

このメソッドは、同じディスク上のシンプルボリュームを拡張するか、複数のディスクにボリュームを拡張してスパンボリュームを作成します。呼び出し元はベーシックディスク上のボリュームを拡張できますが、ディスクエクステントはボリュームと連続している必要があります。

VDS は、拡張後のボリュームサイズに合わせてファイルシステムを自動的に拡張します。ファイルシステムはこの操作をサポートしている必要があります。呼び出し元が使用するエクステントを指定しなかった場合、VDS はファイルシステムのみを拡張し、ボリュームは拡張しません。

拡張 (Extend) および 縮小 (shrink) 操作は、NTFS ボリュームおよび RAW ボリュームでのみサポートされます。

VDS はボリュームを拡張する際に次の規則を適用します。

呼び出し元が pInputDiskArrayNULL を、lNumberOfDisks にゼロを渡した場合、VDS は非同期オブジェクトで S_FALSE を返し、メソッドとして S_OK を返します。この場合、S_OK は VDS が操作を開始したことを示しますが、操作は同期的です。

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

vtbl 7 HRESULT Shrink(ULONGLONG ullNumberOfBytesToRemove, IVdsAsync** ppAsync)

ボリュームおよびすべてのプレックスのサイズを縮小し、解放されたエクステントを空き領域に戻します。

ullNumberOfBytesToRemoveULONGLONGin縮小するサイズ (バイト単位) です。
ppAsyncIVdsAsync**outIVdsAsync インターフェイスポインターのアドレスです。VDS は戻り時にインターフェイスを初期化します。呼び出し元はインターフェイスを解放する必要があります。このインターフェイスを使用して、操作のキャンセル、完了の待機、またはステータスの照会を行います。IVdsAsync::Wait が呼び出されて成功を示す HRESULT 値が返された場合、VDS_ASYNC_OUTPUT 構造体で返される各インターフェイスポインターに対して IUnknown::Release メソッドを呼び出して、返されたインターフェイスを解放する必要があります。ただし、Wait が失敗を示す HRESULT 値を返した場合、または WaitpHrResult パラメーターが失敗を示す HRESULT 値を受け取った場合、VDS_ASYNC_OUTPUT 構造体内のインターフェイスポインターは NULL であり、解放する必要はありません。成功または失敗の HRESULT 値は、Winerror.h で定義されている SUCCEEDED マクロおよび FAILED マクロを使用してテストできます。

戻り値

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

戻り値コード/値 説明
S_OK
メソッドは正常に完了しました。
VDS_E_PROVIDER_CACHE_CORRUPT
0x8004241FL
プロバイダーのキャッシュが破損しています。これは、接続されているデバイスに関する情報をキャッシュするプロバイダー内部のソフトウェアまたは通信の問題を示します。呼び出し元は、IVdsHwProvider::Reenumerate メソッドに続いて IVdsHwProvider::Refresh メソッドを使用して、キャッシュを復元できます。
VDS_E_CANNOT_SHRINK
0x8004251EL
ファイルシステムがサポートしていないため、ボリュームを縮小できません。
VDS_E_DISK_REMOVEABLE
0x8004255AL
この操作はリムーバブルメディアではサポートされていません。
VDS_E_SHRINK_SIZE_LESS_THAN_MIN
0x80042573L
指定された縮小サイズが、許可されている最小の縮小サイズを下回っています。
VDS_E_SHRINK_SIZE_TOO_BIG
0x80042574L
指定された縮小サイズが大きすぎるため、ボリュームが最小ボリュームサイズより小さくなります。

解説(Remarks)

このメソッドは IVdsVolumeShrink::Shrink メソッドのラッパーです。IVdsVolume::Shrink を呼び出すと、uNumberOfBytesToRemove パラメーターの値が IVdsVolumeShrink::ShrinkullDesiredNumberOfReclaimableBytes パラメーターおよび ullMinNumberOfReclaimableBytes パラメーターに使用されます。

縮小 (Shrink) および 拡張 (extend) 操作は、NTFS ボリュームおよび RAW ボリュームでのみサポートされます。

このメソッドを使用して、ファイルシステムとボリュームを縮小します。VDS がボリュームの縮小に失敗した場合は、ファイルシステムを縮小せずに操作を停止します。

各ボリュームでは、一度に 1 つの縮小またはデフラグ操作のみを実行できます。Windows Server 2008 および Windows Vista: コンピューターごとに、一度に 1 つの縮小またはデフラグ操作のみを実行できます。

uNumberOfBytesToRemove がゼロの場合、メソッドは失敗します。それ以外の場合、VDS は uNumberOfBytesToRemove をファイルシステムのクラスターサイズの倍数に丸めます。

実装者は、呼び出しが非同期操作を開始しない場合でも、このメソッドに対して IVdsAsync インターフェイスへのポインターを返す必要があります。

IVdsVolumeShrink::QueryMaxReclaimableBytes メソッドを使用して、縮小操作によって再利用されるバイト数を見積もることができます。ただし、QueryMaxReclaimableBytes は実際に利用可能なバイト数よりも多くのバイト数を返す場合があります。

vtbl 8 HRESULT AddPlex(GUID VolumeId, IVdsAsync** ppAsync)

ボリュームをプレックスとして現在のボリュームに追加します。

VolumeIdGUIDinプレックスとして追加するボリュームの GUID です。
ppAsyncIVdsAsync**outVDS が戻り時に初期化する IVdsAsync インターフェイスポインターのアドレスです。呼び出し元はインターフェイスを解放する必要があります。このポインターを使用して、操作のキャンセル、完了の待機、またはステータスの照会を行います。

戻り値

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

戻り値コード/値 説明
S_OK
プレックスは正常に追加されました。
VDS_S_GPT_BOOT_MIRRORED_TO_MBR
0x80042469L
GPT ディスク上のブートボリュームが MBR ディスクにミラーリングされました。新しいプレックスをコンピューターの起動に使用することはできません。
VDS_E_VOLUME_NOT_ONLINE
0x8004243DL
ボリュームにアクセスできません。
VDS_E_VOLUME_NOT_HEALTHY
0x8004243EL
ボリュームは障害が発生しつつあるか、または障害が発生しています。
VDS_E_VOLUME_SPANS_DISKS
0x8004243FL
ボリュームが複数のディスクにまたがっています。
VDS_E_REQUIRES_CONTIGUOUS_DISK_SPACE
0x80042440L
ボリュームが複数のエクステントで構成されています。
VDS_E_INVALID_OPERATION
0x80042415L
ソースボリュームがターゲットボリュームより小さいです。ソースボリュームがターゲットボリュームより大きい場合、ターゲットボリュームは同じサイズのまま維持され、操作は成功します。

解説(Remarks)

この操作は、プレックスをちょうど 1 つ持つベーシックボリュームでは無効です。

このメソッドを使用して、ボリュームを別のボリュームにプレックスとして追加します。たとえば、呼び出し元はボリューム (ボリューム B) を作成し、ボリューム B を既存のボリューム (ボリューム A) の新しいプレックスとして指定してから、ボリューム B を削除できます。ボリューム A の新しいプレックスは、ボリューム B が占有していたものと同じディスクエクステントを占有します。

Note VDS は同じエクステントを使用しようとしますが、この動作を保証することはできません。
呼び出し元は、ミラーボリュームを別のボリュームに新しいプレックスとして追加できます。結果として得られるボリュームには、元のボリュームの合計に等しい数のプレックスが含まれます。

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

vtbl 9 HRESULT BreakPlex(GUID plexId, IVdsAsync** ppAsync)

指定されたプレックスを現在のボリュームから削除します。

plexIdGUIDin分割するプレックスの GUID です。
ppAsyncIVdsAsync**out

VDS が戻り時に初期化する IVdsAsync インターフェイスポインターのアドレスです。呼び出し元はインターフェイスを解放する必要があります。このポインターを使用して、操作のキャンセル、完了の待機、またはステータスの照会を行います。

このメソッドで IVdsAsync::Wait を呼び出して成功を示す HRESULT 値が返された場合、VDS_ASYNC_OUTPUT 構造体で返される各インターフェイスポインターに対して IUnknown::Release メソッドを呼び出して、返されたインターフェイスを解放する必要があります。ただし、Wait が失敗を示す HRESULT 値を返した場合、または WaitpHrResult パラメーターが失敗を示す HRESULT 値を受け取った場合、VDS_ASYNC_OUTPUT 構造体内のインターフェイスポインターは NULL であり、解放する必要はありません。成功または失敗の HRESULT 値は、Winerror.h で定義されている SUCCEEDED マクロおよび FAILED マクロを使用してテストできます。

戻り値

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

戻り値コード/値 説明
S_OK
プレックスは正常に分割されました。
VDS_E_VOLUME_NOT_ONLINE
0x8004243DL
ボリュームが利用できません。
VDS_E_VOLUME_NOT_A_MIRROR
0x80042445L
ボリュームがミラーではありません。

解説(Remarks)

この操作は、プレックスをちょうど 1 つ持つベーシックボリュームでは無効です。

このメソッドを使用してミラーを分割します。分割されたプレックスは新しいボリュームになります。残りのプレックスが古い (stale) または欠落している場合、VDS は操作を停止してエラーを返します。VDS はこの操作中にボリュームをマウント解除することに注意してください。

ブートプレックスまたはシステムプレックス、つまり本質的にはコンピューターの起動に使用されるプレックスは、plexId として無効です。そのようなプレックスが渡された場合、VDS は操作を停止してエラーを返します。

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

vtbl 10 HRESULT RemovePlex(GUID plexId, IVdsAsync** ppAsync)

指定された 1 つ以上のプレックスを現在のボリュームから削除し、エクステントを解放します。

plexIdGUIDin削除するプレックスの GUID です。
ppAsyncIVdsAsync**outVDS が戻り時に初期化する IVdsAsync インターフェイスポインターのアドレスです。呼び出し元はインターフェイスを解放する必要があります。このポインターを使用して、操作のキャンセル、完了の待機、またはステータスの照会を行います。

戻り値

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

戻り値コード/値 説明
S_OK
プレックスは正常に削除されました。
VDS_E_VOLUME_NOT_ONLINE
0x8004243DL
ボリュームにアクセスできません。
VDS_E_VOLUME_NOT_A_MIRROR
0x80042445L
ボリュームがミラーではありません。

解説(Remarks)

この操作では、ボリュームの最後のプレックスを削除することはできません。代わりに、IVdsVolume::Delete メソッドを使用して、最後に残ったボリューム (唯一のプレックス) を削除します。このメソッドは、プレックスをちょうど 1 つ持つベーシックボリュームでは無効です。

VDS はプレックスを削除するときにボリュームをマウント解除しません。

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

vtbl 11 HRESULT Delete(BOOL bForce)

ボリュームおよびすべてのプレックスを削除し、エクステントを解放します。

bForceBOOLinTRUE の場合、VDS は使用中であってもボリュームを削除します。それ以外の場合、ボリュームが使用中であれば削除されません。

戻り値

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

戻り値コード 説明
S_OK
プレックスは正常に削除されました。

解説(Remarks)

ボリュームを削除できるのは、オンラインのパックからのみです。IVdsPack::GetProperties メソッドを使用して、パックのステータスが VDS_PS_ONLINE であることを確認してください。

リムーバブルメディア上にあるボリュームは削除できません。

VDS はボリュームを削除する前にファイルシステムをマウント解除します。これは FAT および FAT32 では必要ですが、NTFS では不要な操作です。さらに、VDS はボリューム自体を削除した後、ボリュームへのすべてのアクセスパスを削除します。マウント解除操作が失敗し、bForcetrue の場合、VDS はマウント解除せずにボリュームを削除します。ファイルシステムのクライアントアプリケーションは、この状況を処理する必要があります。マウント解除が成功し、削除操作が失敗した場合、VDS はボリュームの再マウントを試みます。

VDS は、現在のシステムボリュームおよびブートボリューム、ならびにページファイル、クラッシュダンプ、ハイバネーションの各ボリュームの削除を防止します。クラッシュダンプおよびページファイルは移動またはリセットできます。ハイバネーションボリュームはブートパーティション上に残す必要があります。

Windows Server 2003: クラッシュダンプおよびハイバネーションの各ボリュームは、ブートパーティション上に残す必要があります。

Windows Server 2003: ボリュームの削除後、VDS はマウントされたフォルダーの削除を試みます。これが失敗した場合、ボリューム自体は正常に削除されていても、DeleteVDS_S_ACCESS_PATH_NOT_DELETED を返します。

vtbl 12 HRESULT SetFlags(DWORD ulFlags, BOOL bRevertOnClose)

ボリュームフラグを設定します。

ulFlagsDWORDin

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
bRevertOnCloseBOOLinTRUE の場合、フラグは一時的に設定されます。呼び出し元がボリュームオブジェクトへの最後の参照を解放するか、IVdsVolume::ClearFlags を呼び出すか、またはボリュームをマウント解除すると、VDS は各フラグを以前の状態にリセットします。ただし、フラグがディスク全体に設定されている場合は例外です (詳細については解説セクションの表を参照してください)。フラグがディスク全体に設定されている場合、フラグをリセットするには IVdsVolume::ClearFlags メソッドを呼び出す必要があります。

戻り値

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

戻り値コード/値 説明
S_OK
フラグが設定されました。
VDS_E_LBN_REMAP_ENABLED_FLAG
0x80042456L
プロバイダーは VDS_VF_LBN REMAP_ENABLED ボリュームフラグをサポートしていません。
VDS_E_NO_DRIVELETTER_FLAG
0x80042457L
プロバイダーは VDS_VF_NO DRIVELETTER ボリュームフラグをサポートしていません。
VDS_E_REVERT_ON_CLOSE
0x80042458L
bRevertOnClose を true に設定できるのは、VDS_VF_HIDDEN または VDS_VF_READONLY のいずれかのボリュームフラグが設定されている場合のみです。
VDS_E_REVERT_ON_CLOSE_SET
0x80042459L
一部のボリュームフラグは既に true に設定されています。まずこれらのフラグをクリアしてから、このメソッドを呼び出して bRevertOnClose パラメーターを再度 true に設定する必要があります。VDS_E_INVALID_OPERATION の戻り値も、この状態を示すことがあります。

解説(Remarks)

VDS_VF_READONLYVDS_VF_HIDDENVDS_VF_NO_DEFAULT_DRIVE_LETTER の各フラグのスコープは、ディスクの種類 (ベーシックまたはダイナミック) およびパーティションスタイル (MBR または GPT) によって異なります。スコープは、次の条件で説明するように、ディスク単位またはボリューム単位のいずれかになります。

次の表は、MBR ベーシックディスク、GPT ベーシックディスク、および MBR または GPT ダイナミックディスクにおける各ボリュームフラグのスコープを示します。
フラグ 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 設定できません。 設定できません。 ボリュームに設定されます。

bRevertOnCloseTRUE で、ディスクが MBR ベーシックディスクであり、その後ボリュームが削除された場合でも、フラグはディスク全体に設定されたままとなり、そのディスク上に作成される新しいボリュームすべてに適用されます。フラグをクリアするには、IVdsAdvancedDisk::Clean を使用する必要があります。

ダイナミックディスク上にブートボリュームを作成するには、ボリュームに対して VDS_VF_INSTALLABLE フラグを設定し、その後 IVdsVolumeMF::Format メソッドを呼び出してボリュームをフォーマットする必要があります。

ボリュームが次のフラグの 1 つ以上を含んでいる場合、このメソッドは失敗します。

VDS_VF_HIDDEN または VDS_VF_READONLY のいずれかを指定すると、bRevertOnCloseTRUE でない限り、ボリュームのマウント解除と再マウントが強制的に行われます。

vtbl 13 HRESULT ClearFlags(DWORD ulFlags)

ボリュームフラグをクリアします。

ulFlagsDWORDin

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_INVALIDARGE_OUTOFMEMORY などの標準的な HRESULT 値、および VDS 固有の戻り値 を返すことがあります。また、HRESULT_FROM_WIN32 マクロを使用して変換された システムエラーコード を返すこともあります。エラーは VDS 自体、または使用されている基盤の VDS プロバイダー から発生する可能性があります。戻り値には次のものがあります。

戻り値コード/値 説明
S_OK
フラグは正常にクリアされました。
VDS_E_REVERT_ON_CLOSE_MISMATCH
0x80042462L
クリアするフラグが、SetFlags メソッドで以前に設定されたフラグと一致せず、かつ bRevertOnCloseTRUE に設定されています。

解説(Remarks)

ダイナミックディスク上にブートボリュームを作成するには、ボリュームに対して VDS_VF_INSTALLABLE フラグを設定し、その後 IVdsVolumeMF::Format メソッドを呼び出してボリュームをフォーマットする必要があります。

出典・ライセンス: 上記「公式ドキュメント」の内容は Microsoft の Win32 API ドキュメント(MicrosoftDocs/sdk-api)を日本語に翻訳・改変したものです。© Microsoft Corporation. CC BY 4.0 で提供。
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 指定が可能。