Win32 API 日本語リファレンス
ホームSystem.SecurityCenter › IWSCProductList

IWSCProductList

COMIDispatch (デュアル)
IDispatch を実装(デュアルインターフェース)。HSP では comobj 経由でメソッド名による遅延バインド呼び出しができます(vtableインデックス不要)。
IID722a338c-6e8e-4e72-ac27-1417fb0c81c2継承元IDispatch呼び出し名前(IDispatch) または vtbl自前メソッド開始 vtbl7

公式ドキュメント

コンピューターにインストールされている、選択した種類のプロバイダーの製品情報を収集するためのメソッドを提供します。

メソッド 3

vtbl = vtable インデックス(0始まり)。IDispatch 実装のため HSP ではメソッド名でも呼べます(上記)。低レベルの index 呼び出し用に vtbl も掲載。0〜2 は IUnknown。

vtbl 7 HRESULT Initialize(DWORD provider)

コンピューター上にある指定した種類のすべてのプロバイダーに関する情報を収集します。

providerDWORDin

プロバイダー名を示す WSC_SECURITY_PROVIDER 列挙体の値で、次のいずれかを指定します。これらの値は、WscGetSecurityProviderHealth 関数で使用する場合とは異なり、論理 OR で組み合わせることはできない点に注意してください。

意味
WSC_SECURITY_PROVIDER_ANTIVIRUS
アンチウイルス製品。
WSC_SECURITY_PROVIDER_ANTISPYWARE
アンチスパイウェア製品。
WSC_SECURITY_PROVIDER_FIREWALL
ファイアウォール製品。

戻り値

メソッドが成功した場合は S_OK を返します。

メソッドが失敗した場合は Win32 エラーコードを返します。

解説(Remarks)

クライアントは IWSCProductList ポインターを取得したら、プロバイダーの種類を指定して Initialize を呼び出す必要があります。これにより、システムにインストールされているその種類のすべてのプロバイダーに関する情報が収集されます。Initialize の呼び出し時に指定できるプロバイダーの種類は 1 つだけであり、Initialize メソッドは IWSCProductList ポインターのインスタンスごとに 1 回のみ呼び出せます。リストの初期化後は、Count を呼び出してリスト内のプロバイダー数を取得したり、Item を呼び出して個々のプロバイダーを取得したりできます。

vtbl 8 HRESULT get_Count(INT* pVal)

コンピューター上にある指定した種類のすべてのセキュリティ製品プロバイダーの総数を取得します。

pValINT*outコンピューター上のセキュリティ製品リストに含まれるプロバイダー数へのポインター。

戻り値

メソッドが成功した場合は S_OK を返します。

メソッドが失敗した場合は Win32 エラーコードを返します。

vtbl 9 HRESULT get_Item(DWORD index, IWscProduct** pVal)

コンピューター上のプロバイダーの種類のうちの 1 つを返します。

indexDWORDinプロバイダーのリスト。
pValIWscProduct**outIWscProduct の製品情報へのポインター。

戻り値

メソッドが成功した場合は S_OK を返します。

メソッドが失敗した場合は Win32 エラーコードを返します。

解説(Remarks)

プロバイダーは Item メソッドを呼び出すことで取得され、初期化済みの IWscProduct オブジェクトへのインターフェイスポインターが返されます。その後、IWscProduct インターフェイスのメソッドを通じて、名前、製品の状態、シグネチャの状態を取得できます。

出典・ライセンス: 上記「公式ドキュメント」の内容は Microsoft の Win32 API ドキュメント(MicrosoftDocs/sdk-api)を日本語に翻訳・改変したものです。© Microsoft Corporation. CC BY 4.0 で提供。
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 不要)。