ホーム › Storage.VirtualDiskService › IVdsAdvancedDisk
IVdsAdvancedDisk
COMメソッド 10
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
vtbl 3 HRESULT GetPartitionProperties(ULONGLONG ullOffset, VDS_PARTITION_PROP* pPartitionProp)
| ullOffset | ULONGLONG | in | 対象パーティションのディスク先頭からのバイトオフセットを指定する。 |
| pPartitionProp | VDS_PARTITION_PROP* | out | パーティションのプロパティを受け取る VDS_PARTITION_PROP へのポインタである。 |
vtbl 4 HRESULT QueryPartitions(VDS_PARTITION_PROP** ppPartitionPropArray, INT* plNumberOfPartitions)
| ppPartitionPropArray | VDS_PARTITION_PROP** | out | ディスク上の全パーティションのプロパティを記述する VDS_PARTITION_PROP 配列を受け取るポインタである。呼び出し側が解放する。 |
| plNumberOfPartitions | INT* | out | 返されるパーティションの個数を受け取るポインタである。 |
vtbl 5 HRESULT CreatePartition(ULONGLONG ullOffset, ULONGLONG ullSize, CREATE_PARTITION_PARAMETERS* para, IVdsAsync** ppAsync)
| ullOffset | ULONGLONG | in | パーティションを作成する位置のバイトオフセットを指定する。 |
| ullSize | ULONGLONG | in | 作成するパーティションのサイズをバイト単位で指定する。 |
| para | CREATE_PARTITION_PARAMETERS* | in | パーティション作成に使用するパラメータを指定する CREATE_PARTITION_PARAMETERS へのポインタである。 |
| ppAsync | IVdsAsync** | out | パーティション作成操作の進捗を追跡する IVdsAsync を受け取るポインタである。 |
| ullOffset | ULONGLONG | in | 削除対象パーティションのバイトオフセットを指定する。 |
| bForce | BOOL | in | 削除を強制するかどうかを指定する真偽値である。 |
| bForceProtected | BOOL | in | 保護されたパーティションの削除を強制するかどうかを指定する真偽値である。 |
vtbl 7 HRESULT ChangeAttributes(ULONGLONG ullOffset, CHANGE_ATTRIBUTES_PARAMETERS* para)
| ullOffset | ULONGLONG | in | 属性を変更する対象パーティションのバイトオフセットを指定する。 |
| para | CHANGE_ATTRIBUTES_PARAMETERS* | in | 変更するパーティション属性を指定する CHANGE_ATTRIBUTES_PARAMETERS へのポインタである。 |
| ullOffset | ULONGLONG | in | ドライブ文字を割り当てる対象パーティションのバイトオフセットを指定する。 |
| wcLetter | WCHAR | in | 割り当てるドライブ文字を指定する。 |
| ullOffset | ULONGLONG | in | ドライブ文字を削除する対象パーティションのバイトオフセットを指定する。 |
| wcLetter | WCHAR | in | 削除するドライブ文字を指定する。 |
| ullOffset | ULONGLONG | in | ドライブ文字を取得する対象パーティションのバイトオフセットを指定する。 |
| pwcLetter | LPWSTR | out | 対象パーティションに割り当てられているドライブ文字を受け取るポインタである。 |
vtbl 11 HRESULT FormatPartition(ULONGLONG ullOffset, VDS_FILE_SYSTEM_TYPE type, LPWSTR pwszLabel, DWORD dwUnitAllocationSize, BOOL bForce, BOOL bQuickFormat, BOOL bEnableCompression, IVdsAsync** ppAsync)
| ullOffset | ULONGLONG | in | フォーマット対象パーティションのバイトオフセットを指定する。 |
| type | VDS_FILE_SYSTEM_TYPE | in | フォーマットに使用するファイルシステムを示す VDS_FILE_SYSTEM_TYPE 値である。 |
| pwszLabel | LPWSTR | in | パーティションに設定するボリュームラベルを指定する文字列である。 |
| dwUnitAllocationSize | DWORD | in | ファイルシステムのアロケーションユニットサイズをバイト単位で指定する。 |
| bForce | BOOL | in | フォーマットを強制するかどうかを指定する真偽値である。 |
| bQuickFormat | BOOL | in | クイックフォーマットを行うかどうかを指定する真偽値である。 |
| bEnableCompression | BOOL | in | ファイルシステムの圧縮を有効にするかどうかを指定する真偽値である。 |
| ppAsync | IVdsAsync** | out | フォーマット操作の進捗を追跡する IVdsAsync を受け取るポインタである。 |
| bForce | BOOL | in | クリーン操作を強制するかどうかを指定する真偽値である。 |
| bForceOEM | BOOL | in | OEM パーティション等の保護パーティションも対象とするかどうかを指定する真偽値である。 |
| bFullClean | BOOL | in | ディスク全体をゼロ消去する完全クリーンを行うかどうかを指定する真偽値である。 |
| ppAsync | IVdsAsync** | out | クリーン操作の進捗を追跡する IVdsAsync を受け取るポインタである。 |
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
出力引数:
#define global IID_IVdsAdvancedDisk "{6E6F6B40-977C-4069-BDDD-AC710059F8C0}" #usecom global IVdsAdvancedDisk IID_IVdsAdvancedDisk "{}" #comfunc global IVdsAdvancedDisk_GetPartitionProperties 3 int64,var #comfunc global IVdsAdvancedDisk_QueryPartitions 4 var,var #comfunc global IVdsAdvancedDisk_CreatePartition 5 int64,int64,var,sptr #comfunc global IVdsAdvancedDisk_DeletePartition 6 int64,int,int #comfunc global IVdsAdvancedDisk_ChangeAttributes 7 int64,var #comfunc global IVdsAdvancedDisk_AssignDriveLetter 8 int64,int #comfunc global IVdsAdvancedDisk_DeleteDriveLetter 9 int64,int #comfunc global IVdsAdvancedDisk_GetDriveLetter 10 int64,var #comfunc global IVdsAdvancedDisk_FormatPartition 11 int64,int,wstr,int,int,int,int,sptr #comfunc global IVdsAdvancedDisk_Clean 12 int,int,int,sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。#define global IID_IVdsAdvancedDisk "{6E6F6B40-977C-4069-BDDD-AC710059F8C0}" #usecom global IVdsAdvancedDisk IID_IVdsAdvancedDisk "{}" #comfunc global IVdsAdvancedDisk_GetPartitionProperties 3 int64,sptr #comfunc global IVdsAdvancedDisk_QueryPartitions 4 sptr,sptr #comfunc global IVdsAdvancedDisk_CreatePartition 5 int64,int64,sptr,sptr #comfunc global IVdsAdvancedDisk_DeletePartition 6 int64,int,int #comfunc global IVdsAdvancedDisk_ChangeAttributes 7 int64,sptr #comfunc global IVdsAdvancedDisk_AssignDriveLetter 8 int64,int #comfunc global IVdsAdvancedDisk_DeleteDriveLetter 9 int64,int #comfunc global IVdsAdvancedDisk_GetDriveLetter 10 int64,sptr #comfunc global IVdsAdvancedDisk_FormatPartition 11 int64,int,wstr,int,int,int,int,sptr #comfunc global IVdsAdvancedDisk_Clean 12 int,int,int,sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。