ISettingsContext
COM公式ドキュメント
他の SMI API を通じて行われた設定変更を保存するために使用されるバッキングストアへのインターフェイスであり、表現形式へのシリアライズおよび表現形式からのデシリアライズの操作を提供します。
メソッド 7
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
このコンテキスト内のデータを、指定されたストリームにシリアライズします。
| pStream | IStream* | in | このメソッドによって生成された XML が挿入されるストリーム。 |
| pTarget | ITargetInfo* | in | コンテキストのシリアライズ対象となるイメージのパラメーターを定義します。これは、コンテキストの構築時に使用したターゲットと一致している必要があります。 |
戻り値
このメソッドは HRESULT 値を返します。S_OK は成功を示します。
このコンテキストに指定されたストリーム内のデータをデシリアライズします。
| pStream | IStream* | in | 応答ファイル (Unattend.xml) の設定セクションを表す XML を含む、初期化済みの IStream ストリームオブジェクトへのポインター。 応答ファイルとは、セットアップまたは移行時の無人プロセスにおいて、ユーザーの介入なしにすべてのタスクを自動的に実行できるようにするためのファイルです。 |
| pTarget | ITargetInfo* | in | ストリームのデシリアライズ時に使用すべき ITargetInfo ターゲットオブジェクトを識別するポインター。このターゲットは、このコンテキストとともにエンジン上で使用されるターゲットと一致している必要があります。 |
| pppResults | ISettingsResult*** | out | ISettingsResult インターフェイスポインターの配列へのポインター。各インターフェイスポインターは、デシリアライズ中に発生した可能性のある問題を識別します。 |
| pcResultCount | UINT_PTR* | out | 配列 pppResults 内の ISettingsResult オブジェクトの数。 |
戻り値
このメソッドは HRESULT 値を返します。S_OK は成功を示します。pIdentity がコンテキストに存在しない名前空間を参照している場合は WCM_E_NAMESPACENOTFOUND を返します。
システムに列挙子を割り当てるための十分なリソースがない場合、このメソッドは E_OUTOFMEMORY を返すことがあります。
ユーザー定義データを設定します。
| pUserData | void* | in | ユーザー定義データへのポインター。 |
戻り値
このメソッドは HRESULT 値を返します。S_OK は成功を示します。
ユーザー定義データを取得します。
| pUserData | void** | out | ユーザー定義データ。 |
戻り値
このメソッドは HRESULT 値を返します。S_OK は成功を示します。
コンテキスト内に存在する名前空間を取得します。
| ppNamespaceIds | IItemEnumerator** | out | 名前空間のコレクションを表す IItemEnumerator インターフェイスポインター。 |
戻り値
このメソッドは HRESULT 値を返します。S_OK は成功を示します。
解説(Remarks)
指定された名前空間について、コンテキストに保存されている設定変更を取得します。
| pIdentity | ISettingsIdentity* | in | 設定を取得する対象の名前空間を指定する ISettingsIdentity オブジェクト。この名前空間の識別情報は完全に指定されている必要があります。 |
| ppAddedSettings | IItemEnumerator** | out | 追加された設定のパスの集合を列挙する、新しく割り当てられた IItemEnumerator オブジェクトへのポインター。各パスは、コンテキストに追加された設定を識別します。 |
| ppModifiedSettings | IItemEnumerator** | out | 変更された設定のパスの集合を列挙する、新しく割り当てられた IItemEnumerator オブジェクトへのポインター。 |
| ppDeletedSettings | IItemEnumerator** | out | 削除された設定のパスの集合を列挙する、新しく割り当てられた IItemEnumerator オブジェクトへのポインター。 |
戻り値
このメソッドは HRESULT 値を返します。S_OK は成功を示します。pIdentity がコンテキストに存在しない名前空間を参照している場合は WCM_E_NAMESPACENOTFOUND を返します。
システムに列挙子を割り当てるための十分なリソースがない場合、E_OUTOFMEMORY を返すことがあります。
解説(Remarks)
ppAddedSettings、ppModifiedSettings、ppDeletedSettings は列挙子であり、その Current はそれぞれ追加・変更・削除された設定のパスを識別する、変数型 BSTR の var を返します。これらの列挙子を列挙すると、パス文字列の集合が得られ、各文字列はこのコンテキストで追加・変更・削除された設定を識別します。これらの文字列は、RevertSetting に渡すことができます。
名前空間内の設定を元に戻します。
| pIdentity | ISettingsIdentity* | in | 元に戻す設定を保持する名前空間の、完全に指定された識別情報。 |
| pwzSetting | LPWSTR | in | このコンテキストでオーバーライドされた、名前空間内の設定へのパス。 |
戻り値
このメソッドは HRESULT 値を返します。S_OK は成功を示します。pIdentity が現在コンテキストに存在しない名前空間を指定している場合は WCM_E_NAMESPACENOTFOUND を返します。pwzSetting がコンテキストで変更されていない場合は WCM_E_STATENODENOTFOUND を返します。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_ISettingsContext "{9F7D7BBD-20B3-11DA-81A5-0030F1642E3C}" #usecom global ISettingsContext IID_ISettingsContext "{}" #comfunc global ISettingsContext_Serialize 3 sptr,sptr #comfunc global ISettingsContext_Deserialize 4 sptr,sptr,sptr,var #comfunc global ISettingsContext_SetUserData 5 sptr #comfunc global ISettingsContext_GetUserData 6 sptr #comfunc global ISettingsContext_GetNamespaces 7 sptr #comfunc global ISettingsContext_GetStoredSettings 8 sptr,sptr,sptr,sptr #comfunc global ISettingsContext_RevertSetting 9 sptr,wstr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。#define global IID_ISettingsContext "{9F7D7BBD-20B3-11DA-81A5-0030F1642E3C}" #usecom global ISettingsContext IID_ISettingsContext "{}" #comfunc global ISettingsContext_Serialize 3 sptr,sptr #comfunc global ISettingsContext_Deserialize 4 sptr,sptr,sptr,sptr #comfunc global ISettingsContext_SetUserData 5 sptr #comfunc global ISettingsContext_GetUserData 6 sptr #comfunc global ISettingsContext_GetNamespaces 7 sptr #comfunc global ISettingsContext_GetStoredSettings 8 sptr,sptr,sptr,sptr #comfunc global ISettingsContext_RevertSetting 9 sptr,wstr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。