IVdsDisk
COM公式ドキュメント
ベーシックディスクおよびダイナミックディスクを照会および構成するためのメソッドを提供します。
メソッド 7
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
ディスクのプロパティ情報を返します。
| pDiskProperties | VDS_DISK_PROP* | out | 呼び出し元によって割り当てられ渡される VDS_DISK_PROP 構造体のアドレス。VDS は pwszDiskAddress、pwszName、pwszFriendlyName、pwszAdaptorName、pwszDevicePath の各メンバー文字列にメモリを割り当てます。呼び出し元は CoTaskMemFree 関数を使用してこれらの文字列を解放する必要があります。 |
戻り値
このメソッドは、E_INVALIDARG や E_OUTOFMEMORY といった標準的な HRESULT 値、および VDS 固有の戻り値を返すことができます。また、HRESULT_FROM_WIN32 マクロを使用して変換されたシステムエラーコードを返す場合もあります。エラーは VDS 自体、または使用されている基盤の VDS プロバイダーから発生する可能性があります。戻り値には次のものが含まれます。
| リターンコード/値 | 説明 |
|---|---|
| プロパティが正常に返されました。 | |
|
一部のプロパティは正常に取得されましたが、すべてではありません。デバイスの取り外しなど、すべてのプロパティの取得に失敗する原因は数多く存在することに注意してください。 |
現在のディスクがメンバーとなっているディスクパックを返します。
| ppPack | IVdsPack** | out | VDS が戻り時に初期化する IVdsPack インターフェイスポインターのアドレス。呼び出し元は操作の完了時にインターフェイスを解放する必要があります。 |
戻り値
このメソッドは、E_INVALIDARG や E_OUTOFMEMORY といった標準的な HRESULT 値、および VDS 固有の戻り値を返すことができます。また、HRESULT_FROM_WIN32 マクロを使用して変換されたシステムエラーコードを返す場合もあります。エラーは VDS 自体、または使用されている基盤の VDS プロバイダーから発生する可能性があります。戻り値には次のものが含まれます。
| リターンコード/値 | 説明 |
|---|---|
| ディスクパックアドレスへのポインターが正常に返されました。 | |
|
未割り当てかつマスクされたディスクは、VDS によって管理されています。 |
解説(Remarks)
ディスクは 1 つのディスクパックのみのメンバーになることができます。
ディスクを一意に識別する情報を取得します。
| pLunInfo | VDS_LUN_INFORMATION* | out | 呼び出し元によって割り当てられ渡される VDS_LUN_INFORMATION 構造体のアドレス。VDS は m_szVendorId、m_szProductId、m_szProductRevision、m_szSerialNumber の各メンバー文字列に加え、VDS_INTERCONNECT 構造体の配列の各要素における m_pbPort および m_pbAddress のメンバー文字列にメモリを割り当てます。呼び出し元は CoTaskMemFree 関数を使用してこれらの文字列を解放する必要があります。 |
戻り値
このメソッドは、E_INVALIDARG や E_OUTOFMEMORY といった標準的な HRESULT 値、および VDS 固有の戻り値を返すことができます。また、HRESULT_FROM_WIN32 マクロを使用して変換されたシステムエラーコードを返す場合もあります。エラーは VDS 自体、または使用されている基盤の VDS プロバイダーから発生する可能性があります。戻り値には次のものが含まれます。
| リターンコード | 説明 |
|---|---|
| 識別データが正常に返されました。 |
解説(Remarks)
このメソッドは VDS によって実装されます。呼び出し元は、ハードウェアプロバイダーによって管理されるデバイスからのみ LUN 情報を抽出できます。
ディスク上のすべてのエクステントの詳細を返します。
| ppExtentArray | VDS_DISK_EXTENT** | out | VDS_DISK_EXTENT 構造体の配列を受け取るポインター変数。呼び出し元は CoTaskMemFree 関数を使用してこの配列を解放する必要があります。 |
| plNumberOfExtents | INT* | out | エクステントの総数を表す LONG 型のアドレス。 |
戻り値
このメソッドは、E_INVALIDARG や E_OUTOFMEMORY といった標準的な HRESULT 値、および VDS 固有の戻り値を返すことができます。また、HRESULT_FROM_WIN32 マクロを使用して変換されたシステムエラーコードを返す場合もあります。エラーは VDS 自体、または使用されている基盤の VDS プロバイダーから発生する可能性があります。戻り値には次のものが含まれます。
| リターンコード/値 | 説明 |
|---|---|
| エクステント情報が正常に返されました。 | |
|
ディスクが属するパックにアクセスできません。 |
解説(Remarks)
ボリュームの作成または拡張に使用できる空き領域の量を判別するには、このメソッドを使用します。また、エクステント情報を使用して、ディスクを占有しているボリュームの数を判別することもできます。有効なエクステントの種類は、unknown エクステント、free エクステント、data エクステント、OEM エクステント、ESP エクステント、MSR エクステント、LDM メタデータエクステント、および unusable エクステントです。data エクステントには、その上位にあるボリュームへのリンクが含まれます。
ディスクがダイナミックディスクである場合は、オンラインである必要があります。ベーシックディスクまたは raw ディスクである場合は、オンラインとオフラインのいずれでもかまいません。
空のディスクのパーティションスタイルを、あるスタイルから別のスタイルへ変換します。
| NewStyle | VDS_PARTITION_STYLE | in | VDS_PARTITION_STYLE によって列挙されるパーティションスタイル。 |
戻り値
このメソッドは、E_INVALIDARG や E_OUTOFMEMORY といった標準的な HRESULT 値、および VDS 固有の戻り値を返すことができます。また、HRESULT_FROM_WIN32 マクロを使用して変換されたシステムエラーコードを返す場合もあります。エラーは VDS 自体、または使用されている基盤の VDS プロバイダーから発生する可能性があります。戻り値には次のものが含まれます。
| リターンコード/値 | 説明 |
|---|---|
| 変換が正常に完了しました。 | |
|
1394 または USB ディスク、および未割り当てディスクの場合と同様に、ディスクスタイルを変換できません。 |
解説(Remarks)
空のディスクには、ユーザーデータ、OEM パーティション、ESP パーティション、unknown パーティションが一切含まれません。空のディスク上で有効なのは、LDM メタデータパーティションと MSR パーティションのみです。
ディスクオブジェクトのフラグを設定します。
| ulFlags | DWORD | in | 設定するフラグを指定する VDS_DISK_FLAG 列挙値のビットマスク。このメソッドで設定できるのは VDS_DF_READ_ONLY フラグのみです。その他のフラグはすべて VDS サービスによって設定または解除されます。 |
戻り値
このメソッドは、E_INVALIDARG や E_OUTOFMEMORY といった標準的な HRESULT 値、および VDS 固有の戻り値を返すことができます。また、HRESULT_FROM_WIN32 マクロを使用して変換されたシステムエラーコードを返す場合もあります。エラーは VDS 自体、または使用されている基盤の VDS プロバイダーから発生する可能性があります。戻り値には次のものが含まれます。
| リターンコード/値 | 説明 |
|---|---|
| フラグが正常に設定されました。 | |
|
初期化されていないディスクにはフラグを設定できません。 |
|
このメソッドはサポートされていません。ベーシックプロバイダーも現在のダイナミックプロバイダーも、このメソッドをサポートしていません。 |
解説(Remarks)
このメソッドは VDS によって実装されます。
ディスクオブジェクトのフラグを解除します。
| ulFlags | DWORD | in | 解除するフラグを指定する VDS_DISK_FLAG 列挙値のビットマスク。このメソッドで解除できるのは VDS_DF_READ_ONLY フラグのみです。その他のフラグはすべて VDS サービスによって設定または解除されます。 |
戻り値
このメソッドは、E_INVALIDARG や E_OUTOFMEMORY といった標準的な HRESULT 値、および VDS 固有の戻り値を返すことができます。また、HRESULT_FROM_WIN32 マクロを使用して変換されたシステムエラーコードを返す場合もあります。エラーは VDS 自体、または使用されている基盤の VDS プロバイダーから発生する可能性があります。戻り値には次のものが含まれます。
| リターンコード/値 | 説明 |
|---|---|
| フラグが正常に解除されました。 | |
|
このフラグはサポートされていません。ベーシックプロバイダーもダイナミックプロバイダーも、このフラグをサポートしていません。 |
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_IVdsDisk "{07E5C822-F00C-47A1-8FCE-B244DA56FD06}" #usecom global IVdsDisk IID_IVdsDisk "{}" #comfunc global IVdsDisk_GetProperties 3 var #comfunc global IVdsDisk_GetPack 4 sptr #comfunc global IVdsDisk_GetIdentificationData 5 var #comfunc global IVdsDisk_QueryExtents 6 var,var #comfunc global IVdsDisk_ConvertStyle 7 int #comfunc global IVdsDisk_SetFlags 8 int #comfunc global IVdsDisk_ClearFlags 9 int ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。#define global IID_IVdsDisk "{07E5C822-F00C-47A1-8FCE-B244DA56FD06}" #usecom global IVdsDisk IID_IVdsDisk "{}" #comfunc global IVdsDisk_GetProperties 3 sptr #comfunc global IVdsDisk_GetPack 4 sptr #comfunc global IVdsDisk_GetIdentificationData 5 sptr #comfunc global IVdsDisk_QueryExtents 6 sptr,sptr #comfunc global IVdsDisk_ConvertStyle 7 int #comfunc global IVdsDisk_SetFlags 8 int #comfunc global IVdsDisk_ClearFlags 9 int ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。