IWMBackupRestoreProps
COM公式ドキュメント
IWMBackupRestoreProps インターフェイスは、IWMLicenseBackup および IWMLicenseRestore インターフェイスが必要とするプロパティを設定および取得します。
メソッド 6
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
GetPropCount メソッドは、プロパティの数を取得します。
| pcProps | WORD* | out | プロパティ数へのポインター。 |
戻り値
このメソッドは E_NOTIMPL を返します。
GetPropByIndex メソッドは、インデックスによってプロパティの名前と値を取得します。
| wIndex | WORD | in | プロパティのインデックスを格納する WORD。 |
| pwszName | LPWSTR | out | 名前を格納するワイド文字の null 終端文字列へのポインター。 |
| pcchNameLen | WORD* | inout | 入力時には pwszName の長さを格納します。出力時には、終端の null 文字を含む pwszName の文字数を格納する変数を指します。 |
| pType | WMT_ATTR_DATATYPE* | out | WMT_ATTR_DATATYPE 列挙型のメンバーの 1 つを格納する変数へのポインター。 |
| pValue | BYTE* | out | プロパティの値を格納するバイト配列へのポインター。 |
| pcbLength | WORD* | inout | 入力時には pValue の長さを格納します。出力時には、pValue のうち使用されているバイト数を指します。 |
戻り値
このメソッドは E_NOTIMPL を返します。
解説(Remarks)
GetPropByIndex は 2 回呼び出す必要があります。1 回目の呼び出しでは、pwszName と pValue に NULL を渡します。戻り時に、pcchNameLen が指す値にはプロパティ名の長さ(終端の null 文字を含むワイド文字数)が設定され、pcbLength が指す値にはプロパティ値を保持するために必要なバイト数が設定されます。その後、pwszName と pValue の値を保持するのに適したサイズのバッファーを割り当て、それらへのポインターを 2 回目の呼び出しで渡すことができます。
GetPropByName メソッドは、名前によってプロパティの値を取得します。
| pszName | LPWSTR | in | 名前を格納するワイド文字の null 終端文字列へのポインター。 |
| pType | WMT_ATTR_DATATYPE* | out | WMT_ATTR_DATATYPE 列挙型のメンバーの 1 つを格納する変数へのポインター。 |
| pValue | BYTE* | out | プロパティの値を格納するバイト配列へのポインター。 |
| pcbLength | WORD* | inout | 入力時には pValue の長さを格納します。出力時には、pValue のうち使用されているバイト数を指します。 |
戻り値
このメソッドは E_NOTIMPL を返します。
解説(Remarks)
GetPropByName は 2 回呼び出す必要があります。1 回目の呼び出しでは、pValue に NULL を渡します。戻り時に、pcbLength が指す値には、プロパティ値を保持するために必要なバッファーサイズが設定されます。その後、必要な量のメモリをバッファーに割り当て、2 回目の呼び出しで pValue としてそのポインターを渡すことができます。
SetProp メソッドは、プロパティを追加し、その名前と値を指定します。
| pszName | LPWSTR | in | 名前を格納する null 終端文字列へのポインター。 |
| Type | WMT_ATTR_DATATYPE | in | WMT_ATTR_DATATYPE 列挙型のメンバーの 1 つを格納する変数へのポインター。このメソッドの現在の実装は WMT_TYPE_STRING のみを受け付けます。異なる型を指定すると、このメソッドは E_INVALIDARG を返します。 |
| pValue | BYTE* | in | プロパティの値を格納するバイト配列へのポインター。 |
| cbLength | WORD | in | pValue の長さ(バイト単位)。 |
戻り値
メソッドが成功した場合は S_OK を返します。失敗した場合は HRESULT エラーコードを返します。
解説(Remarks)
このメソッドは、他のバックアップ/リストアラーオブジェクトのインターフェイスが必要とするプロパティを設定するために使用します。
次の表は、定義済みのプロパティを一覧にしたものです。
| プロパティ名 | 型 | 説明 |
|---|---|---|
| BackupPath | String | バックアップファイルを保存する必要がある場所へのフルパス。 |
| RestorePath | String | バックアップファイルが存在し、データの復元に使用できる場所へのフルパス。 |
RemoveProp メソッドは、名前で指定されたプロパティを削除します。
| pcwszName | LPWSTR | in | 削除するプロパティの名前を指定します。 |
戻り値
メソッドが成功した場合は S_OK を返します。失敗した場合は HRESULT エラーコードを返します。
RemoveAllProps メソッドは、すべてのプロパティを削除します。
戻り値
メソッドが成功した場合は S_OK を返します。失敗した場合は HRESULT エラーコードを返します。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_IWMBackupRestoreProps "{3C8E0DA6-996F-4FF3-A1AF-4838F9377E2E}" #usecom global IWMBackupRestoreProps IID_IWMBackupRestoreProps "{}" #comfunc global IWMBackupRestoreProps_GetPropCount 3 var #comfunc global IWMBackupRestoreProps_GetPropByIndex 4 int,var,var,var,var,var #comfunc global IWMBackupRestoreProps_GetPropByName 5 wstr,var,var,var #comfunc global IWMBackupRestoreProps_SetProp 6 wstr,int,var,int #comfunc global IWMBackupRestoreProps_RemoveProp 7 wstr #comfunc global IWMBackupRestoreProps_RemoveAllProps 8 ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。#define global IID_IWMBackupRestoreProps "{3C8E0DA6-996F-4FF3-A1AF-4838F9377E2E}" #usecom global IWMBackupRestoreProps IID_IWMBackupRestoreProps "{}" #comfunc global IWMBackupRestoreProps_GetPropCount 3 sptr #comfunc global IWMBackupRestoreProps_GetPropByIndex 4 int,sptr,sptr,sptr,sptr,sptr #comfunc global IWMBackupRestoreProps_GetPropByName 5 wstr,sptr,sptr,sptr #comfunc global IWMBackupRestoreProps_SetProp 6 wstr,int,sptr,int #comfunc global IWMBackupRestoreProps_RemoveProp 7 wstr #comfunc global IWMBackupRestoreProps_RemoveAllProps 8 ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。