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

IVdsVdProvider

COM
IIDb481498c-8354-45f9-84a0-0bdd2832a91f継承元IUnknown自前メソッド開始 vtbl3

メソッド 5

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

vtbl 3 HRESULT QueryVDisks(IEnumVdsObject** ppEnum)
ppEnumIEnumVdsObject**outこのプロバイダが管理する仮想ディスクを列挙する IEnumVdsObject インターフェイスを受け取るポインタである。
vtbl 4 HRESULT CreateVDisk(VIRTUAL_STORAGE_TYPE* VirtualDeviceType, LPWSTR pPath, LPWSTR pStringSecurityDescriptor, CREATE_VIRTUAL_DISK_FLAG Flags, DWORD ProviderSpecificFlags, DWORD Reserved, VDS_CREATE_VDISK_PARAMETERS* pCreateDiskParameters, IVdsAsync** ppAsync)
VirtualDeviceTypeVIRTUAL_STORAGE_TYPE*in作成する仮想ディスクの種類を表す VIRTUAL_STORAGE_TYPE 構造体へのポインタを指定する。
pPathLPWSTRin作成する仮想ディスクファイルのパスを指定する。
pStringSecurityDescriptorLPWSTRin仮想ディスクに適用するセキュリティ記述子を文字列形式(SDDL)で指定する。NULL を指定すると既定のセキュリティが適用される。
FlagsCREATE_VIRTUAL_DISK_FLAGin仮想ディスク作成時の動作を制御する CREATE_VIRTUAL_DISK_FLAG フラグを指定する。
ProviderSpecificFlagsDWORDinプロバイダ固有のフラグを指定する。
ReservedDWORDin予約済みのパラメータであり、0 を指定する。
pCreateDiskParametersVDS_CREATE_VDISK_PARAMETERS*in仮想ディスク作成時のパラメータを表す VDS_CREATE_VDISK_PARAMETERS 構造体へのポインタを指定する。
ppAsyncIVdsAsync**inout非同期操作を制御・監視する IVdsAsync インターフェイスを受け取るポインタである。
vtbl 5 HRESULT AddVDisk(VIRTUAL_STORAGE_TYPE* VirtualDeviceType, LPWSTR pPath, IVdsVDisk** ppVDisk)
VirtualDeviceTypeVIRTUAL_STORAGE_TYPE*in追加する仮想ディスクの種類を表す VIRTUAL_STORAGE_TYPE 構造体へのポインタを指定する。
pPathLPWSTRin追加する既存の仮想ディスクファイルのパスを指定する。
ppVDiskIVdsVDisk**inout追加された仮想ディスクの IVdsVDisk インターフェイスを受け取るポインタである。
vtbl 6 HRESULT GetDiskFromVDisk(IVdsVDisk* pVDisk, IVdsDisk** ppDisk)
pVDiskIVdsVDisk*in対象とする仮想ディスクの IVdsVDisk インターフェイスを指定する。
ppDiskIVdsDisk**out仮想ディスクに対応する物理ディスクとしての IVdsDisk インターフェイスを受け取るポインタである。
vtbl 7 HRESULT GetVDiskFromDisk(IVdsDisk* pDisk, IVdsVDisk** ppVDisk)
pDiskIVdsDisk*in対象とするディスクの IVdsDisk インターフェイスを指定する。
ppVDiskIVdsVDisk**outディスクに対応する仮想ディスクの IVdsVDisk インターフェイスを受け取るポインタである。

HSP用 COM定義

#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"

出力引数:
#define global IID_IVdsVdProvider "{B481498C-8354-45F9-84A0-0BDD2832A91F}"
#usecom global IVdsVdProvider IID_IVdsVdProvider "{}"
#comfunc global IVdsVdProvider_QueryVDisks       3 sptr
#comfunc global IVdsVdProvider_CreateVDisk       4 var,wstr,wstr,int,int,int,var,sptr
#comfunc global IVdsVdProvider_AddVDisk          5 var,wstr,sptr
#comfunc global IVdsVdProvider_GetDiskFromVDisk  6 sptr,sptr
#comfunc global IVdsVdProvider_GetVDiskFromDisk  7 sptr,sptr
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。
; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。