IPersistQuery
COM公式ドキュメント
クエリのパラメーターを永続的なストレージに保存したり、そこから取得したりするために使用します。
メソッド 7
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
クエリストアに文字列を書き込みます。
| pSection | LPWSTR | in | 文字列の書き込み先となるセクション名を表す、null で終わる Unicode 文字列へのポインター。 |
| pValueName | LPWSTR | in | 文字列値の名前を表す、null で終わる Unicode 文字列へのポインター。 |
| pValue | LPWSTR | in | 書き込む文字列を格納した、null で終わる Unicode 文字列へのポインター。 |
戻り値
成功した場合は S_OK を返し、それ以外の場合は標準の HRESULT 値を返します。想定されるエラーコードには次のものがあります。
クエリストアから文字列を読み取ります。
| pSection | LPWSTR | in | 文字列の読み取り元となるセクション名を表す、null で終わる Unicode 文字列へのポインター。 |
| pValueName | LPWSTR | in | 読み取る文字列値の名前を表す、null で終わる Unicode 文字列へのポインター。 |
| pBuffer | LPWSTR | out | 文字列値を受け取る文字バッファーへのポインター。cchBuffer パラメーターには、null 終端文字を含むこのバッファーのサイズを指定します。 |
| cchBuffer | INT | in | null 終端文字を含む pBuffer バッファーのサイズを文字数で格納します。 |
戻り値
成功した場合は S_OK を返し、それ以外の場合は標準の HRESULT 値を返します。想定されるエラーコードには次のものがあります。
クエリストアに整数値を書き込みます。
| pSection | LPWSTR | in | 整数の書き込み先となるセクション名を表す、null で終わる Unicode 文字列へのポインター。 |
| pValueName | LPWSTR | in | 整数値の名前を表す、null で終わる Unicode 文字列へのポインター。 |
| value | INT | in | クエリストアに書き込む整数値を格納します。 |
戻り値
成功した場合は S_OK を返し、それ以外の場合は標準の HRESULT 値を返します。想定されるエラーコードには次のものがあります。
クエリストアから整数値を読み取ります。
| pSection | LPWSTR | in | 整数の読み取り元となるセクション名を表す、null で終わる Unicode 文字列へのポインター。 |
| pValueName | LPWSTR | in | 読み取る整数値の名前を表す、null で終わる Unicode 文字列へのポインター。 |
| pValue | INT* | inout | 整数値を受け取る整数型変数へのポインター。 |
戻り値
成功した場合は S_OK を返し、それ以外の場合は標準の HRESULT 値を返します。想定されるエラーコードには次のものがあります。
クエリストアに構造体を書き込みます。
| pSection | LPWSTR | in | 構造体の書き込み先となるセクション名を表す、null で終わる Unicode 文字列へのポインター。 |
| pValueName | LPWSTR | in | 構造体の名前を表す、null で終わる Unicode 文字列へのポインター。 |
| pStruct | void* | inout | 書き込む構造体へのポインター。cbStruct パラメーターには書き込むバイト数を格納します。 |
| cbStruct | DWORD | in | 書き込む構造体のサイズをバイト単位で格納します。 |
戻り値
成功した場合は S_OK を返し、それ以外の場合は標準の HRESULT 値を返します。想定されるエラーコードには次のものがあります。
クエリストアから構造体を読み取ります。
| pSection | LPWSTR | in | 構造体の読み取り元となるセクション名を表す、null で終わる Unicode 文字列へのポインター。 |
| pValueName | LPWSTR | in | 読み取る構造体値の名前を表す、null で終わる Unicode 文字列へのポインター。 |
| pStruct | void* | inout | 構造体を受け取るバッファーへのポインター。cbStruct パラメーターには、このバッファーのサイズをバイト単位で指定します。 |
| cbStruct | DWORD | in | pStruct パラメーターで表されるバッファーのサイズをバイト単位で指定します。 |
戻り値
成功した場合は S_OK を返し、それ以外の場合は標準の HRESULT 値を返します。想定されるエラーコードには次のものがあります。
クエリストアの内容を空にします。
戻り値
成功した場合は S_OK を返し、それ以外の場合は標準の HRESULT 値を返します。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_IPersistQuery "{1A3114B8-A62E-11D0-A6C5-00A0C906AF45}" #usecom global IPersistQuery IID_IPersistQuery "{}" #comfunc global IPersistQuery_WriteString 4 wstr,wstr,wstr #comfunc global IPersistQuery_ReadString 5 wstr,wstr,var,int #comfunc global IPersistQuery_WriteInt 6 wstr,wstr,int #comfunc global IPersistQuery_ReadInt 7 wstr,wstr,var #comfunc global IPersistQuery_WriteStruct 8 wstr,wstr,sptr,int #comfunc global IPersistQuery_ReadStruct 9 wstr,wstr,sptr,int #comfunc global IPersistQuery_Clear 10 ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。#define global IID_IPersistQuery "{1A3114B8-A62E-11D0-A6C5-00A0C906AF45}" #usecom global IPersistQuery IID_IPersistQuery "{}" #comfunc global IPersistQuery_WriteString 4 wstr,wstr,wstr #comfunc global IPersistQuery_ReadString 5 wstr,wstr,sptr,int #comfunc global IPersistQuery_WriteInt 6 wstr,wstr,int #comfunc global IPersistQuery_ReadInt 7 wstr,wstr,sptr #comfunc global IPersistQuery_WriteStruct 8 wstr,wstr,sptr,int #comfunc global IPersistQuery_ReadStruct 9 wstr,wstr,sptr,int #comfunc global IPersistQuery_Clear 10 ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。