ホーム › Storage.VirtualDiskService › IVdsPack
IVdsPack
COMメソッド 10
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
vtbl 3 HRESULT GetProperties(VDS_PACK_PROP* pPackProp)
| pPackProp | VDS_PACK_PROP* | out | ディスクパックのプロパティを受け取る VDS_PACK_PROP へのポインタである。 |
vtbl 4 HRESULT GetProvider(IVdsProvider** ppProvider)
| ppProvider | IVdsProvider** | out | このパックを所有するプロバイダーを表す IVdsProvider を受け取るポインタである。 |
vtbl 5 HRESULT QueryVolumes(IEnumVdsObject** ppEnum)
| ppEnum | IEnumVdsObject** | out | このパックに含まれるボリュームを列挙する IEnumVdsObject を受け取るポインタである。 |
vtbl 6 HRESULT QueryDisks(IEnumVdsObject** ppEnum)
| ppEnum | IEnumVdsObject** | out | このパックに含まれるディスクを列挙する IEnumVdsObject を受け取るポインタである。 |
vtbl 7 HRESULT CreateVolume(VDS_VOLUME_TYPE type, VDS_INPUT_DISK* pInputDiskArray, INT lNumberOfDisks, DWORD ulStripeSize, IVdsAsync** ppAsync)
| type | VDS_VOLUME_TYPE | in | 作成するボリュームの種別を示す VDS_VOLUME_TYPE 値である。 |
| pInputDiskArray | VDS_INPUT_DISK* | in | ボリュームの構成に使用する入力ディスクを記述する VDS_INPUT_DISK 配列へのポインタである。 |
| lNumberOfDisks | INT | in | pInputDiskArray に含まれるディスクの個数を指定する。 |
| ulStripeSize | DWORD | in | ストライプボリューム等で使用するストライプサイズをバイト単位で指定する。 |
| ppAsync | IVdsAsync** | out | ボリューム作成操作の進捗を追跡する IVdsAsync を受け取るポインタである。 |
vtbl 8 HRESULT AddDisk(GUID DiskId, VDS_PARTITION_STYLE PartitionStyle, BOOL bAsHotSpare)
| DiskId | GUID | in | パックに追加するディスクを識別する GUID である。 |
| PartitionStyle | VDS_PARTITION_STYLE | in | 追加するディスクに適用するパーティション形式を示す VDS_PARTITION_STYLE 値である。 |
| bAsHotSpare | BOOL | in | ディスクをホットスペアとして追加するかどうかを指定する真偽値である。 |
vtbl 9 HRESULT MigrateDisks(GUID* pDiskArray, INT lNumberOfDisks, GUID TargetPack, BOOL bForce, BOOL bQueryOnly, HRESULT* pResults, BOOL* pbRebootNeeded)
| pDiskArray | GUID* | in | 移行対象のディスクを識別する GUID の配列へのポインタである。 |
| lNumberOfDisks | INT | in | pDiskArray に含まれるディスクの個数を指定する。 |
| TargetPack | GUID | in | ディスクの移行先となるパックを識別する GUID である。 |
| bForce | BOOL | in | 移行を強制するかどうかを指定する真偽値である。 |
| bQueryOnly | BOOL | in | 実際には移行せず移行可否のみを問い合わせるかどうかを指定する真偽値である。 |
| pResults | HRESULT* | out | 各ディスクの移行結果コード HRESULT を受け取る配列へのポインタである。 |
| pbRebootNeeded | BOOL* | out | 移行を完了するために再起動が必要かどうかを受け取るポインタである。 |
| OldDiskId | GUID | in | 置き換え対象となる既存ディスクを識別する GUID である。 |
| NewDiskId | GUID | in | 置き換え後の新しいディスクを識別する GUID である。 |
| ppAsync | IVdsAsync** | out | ディスク置換操作の進捗を追跡する IVdsAsync を受け取るポインタである。 |
vtbl 11 HRESULT RemoveMissingDisk(GUID DiskId)
| DiskId | GUID | in | パックから削除する、欠落(オフライン/不在)ディスクを識別する GUID である。 |
| ppAsync | IVdsAsync** | out | パックの回復操作の進捗を追跡する IVdsAsync を受け取るポインタである。 |
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
出力引数:
#define global IID_IVdsPack "{3B69D7F5-9D94-4648-91CA-79939BA263BF}" #usecom global IVdsPack IID_IVdsPack "{}" #comfunc global IVdsPack_GetProperties 3 var #comfunc global IVdsPack_GetProvider 4 sptr #comfunc global IVdsPack_QueryVolumes 5 sptr #comfunc global IVdsPack_QueryDisks 6 sptr #comfunc global IVdsPack_CreateVolume 7 int,var,int,int,sptr #comfunc global IVdsPack_AddDisk 8 int,int,int #comfunc global IVdsPack_MigrateDisks 9 var,int,int,int,int,var,var #comfunc global IVdsPack_ReplaceDisk 10 int,int,sptr #comfunc global IVdsPack_RemoveMissingDisk 11 int #comfunc global IVdsPack_Recover 12 sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。#define global IID_IVdsPack "{3B69D7F5-9D94-4648-91CA-79939BA263BF}" #usecom global IVdsPack IID_IVdsPack "{}" #comfunc global IVdsPack_GetProperties 3 sptr #comfunc global IVdsPack_GetProvider 4 sptr #comfunc global IVdsPack_QueryVolumes 5 sptr #comfunc global IVdsPack_QueryDisks 6 sptr #comfunc global IVdsPack_CreateVolume 7 int,sptr,int,int,sptr #comfunc global IVdsPack_AddDisk 8 int,int,int #comfunc global IVdsPack_MigrateDisks 9 sptr,int,int,int,int,sptr,sptr #comfunc global IVdsPack_ReplaceDisk 10 int,int,sptr #comfunc global IVdsPack_RemoveMissingDisk 11 int #comfunc global IVdsPack_Recover 12 sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。