IWSCProductList
COMIDispatch (デュアル)comobj 経由でメソッド名による遅延バインド呼び出しができます(vtableインデックス不要)。公式ドキュメント
コンピューターにインストールされている、選択した種類のプロバイダーの製品情報を収集するためのメソッドを提供します。
メソッド 3
vtbl = vtable インデックス(0始まり)。IDispatch 実装のため HSP ではメソッド名でも呼べます(上記)。低レベルの index 呼び出し用に vtbl も掲載。0〜2 は IUnknown。
コンピューター上にある指定した種類のすべてのプロバイダーに関する情報を収集します。
| provider | DWORD | in | プロバイダー名を示す WSC_SECURITY_PROVIDER 列挙体の値で、次のいずれかを指定します。これらの値は、WscGetSecurityProviderHealth 関数で使用する場合とは異なり、論理 OR で組み合わせることはできない点に注意してください。
|
戻り値
メソッドが成功した場合は S_OK を返します。
メソッドが失敗した場合は Win32 エラーコードを返します。
解説(Remarks)
クライアントは IWSCProductList ポインターを取得したら、プロバイダーの種類を指定して Initialize を呼び出す必要があります。これにより、システムにインストールされているその種類のすべてのプロバイダーに関する情報が収集されます。Initialize の呼び出し時に指定できるプロバイダーの種類は 1 つだけであり、Initialize メソッドは IWSCProductList ポインターのインスタンスごとに 1 回のみ呼び出せます。リストの初期化後は、Count を呼び出してリスト内のプロバイダー数を取得したり、Item を呼び出して個々のプロバイダーを取得したりできます。
コンピューター上にある指定した種類のすべてのセキュリティ製品プロバイダーの総数を取得します。
| pVal | INT* | out | コンピューター上のセキュリティ製品リストに含まれるプロバイダー数へのポインター。 |
戻り値
メソッドが成功した場合は S_OK を返します。
メソッドが失敗した場合は Win32 エラーコードを返します。
コンピューター上のプロバイダーの種類のうちの 1 つを返します。
| index | DWORD | in | プロバイダーのリスト。 |
| pVal | IWscProduct** | out | IWscProduct の製品情報へのポインター。 |
戻り値
メソッドが成功した場合は S_OK を返します。
メソッドが失敗した場合は Win32 エラーコードを返します。
解説(Remarks)
プロバイダーは Item メソッドを呼び出すことで取得され、初期化済みの IWscProduct オブジェクトへのインターフェイスポインターが返されます。その後、IWscProduct インターフェイスのメソッドを通じて、名前、製品の状態、シグネチャの状態を取得できます。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_IWSCProductList "{722A338C-6E8E-4E72-AC27-1417FB0C81C2}" #usecom global IWSCProductList IID_IWSCProductList "{17072F7B-9ABE-4A74-A261-1EB76B55107A}" #comfunc global IWSCProductList_Initialize 7 int #comfunc global IWSCProductList_get_Count 8 var #comfunc global IWSCProductList_get_Item 9 int,sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※#usecom 末尾は CoCreateInstance 用のクラスID(コクラスCLSID, SDKから自動取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。 ; ※IDispatch 実装。HSP では comobj 経由でメソッド名による呼び出しも可能(vtbl 不要)。#define global IID_IWSCProductList "{722A338C-6E8E-4E72-AC27-1417FB0C81C2}" #usecom global IWSCProductList IID_IWSCProductList "{17072F7B-9ABE-4A74-A261-1EB76B55107A}" #comfunc global IWSCProductList_Initialize 7 int #comfunc global IWSCProductList_get_Count 8 sptr #comfunc global IWSCProductList_get_Item 9 int,sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※#usecom 末尾は CoCreateInstance 用のクラスID(コクラスCLSID, SDKから自動取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。 ; ※IDispatch 実装。HSP では comobj 経由でメソッド名による呼び出しも可能(vtbl 不要)。