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

IUpdateServiceManager2

COMIDispatch (デュアル)
IDispatch を実装(デュアルインターフェース)。HSP では comobj 経由でメソッド名による遅延バインド呼び出しができます(vtableインデックス不要)。
IID0bb8531d-7e8d-424f-986c-a0b8f60a3e7b継承元IUpdateServiceManager呼び出し名前(IDispatch) または vtbl自前メソッド開始 vtbl14

公式ドキュメント

更新プログラムサービスの登録を Windows Update Agent または自動更新に対して追加または削除します。(IUpdateServiceManager2)

解説(Remarks)

このインターフェースのインスタンスは、UpdateServiceManager coclass を使用して作成できます。オブジェクトを作成するには、Microsoft.Update.ServiceManager プログラム識別子を使用します。

メソッド 4

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

vtbl 14 HRESULT get_ClientApplicationID(LPWSTR* retval)

現在のクライアントアプリケーションの識別子を取得および設定します。(Get)

retvalLPWSTR*out設定されているクライアントアプリケーション識別子を受け取る文字列ポインタである。

解説(Remarks)

クライアントアプリケーションがこのプロパティを設定していない場合は、Unknown 値を返します。

vtbl 15 HRESULT put_ClientApplicationID(LPWSTR value)

現在のクライアントアプリケーションの識別子を取得および設定します。(Put)

valueLPWSTRin操作を識別するために設定するクライアントアプリケーション識別子の文字列を指定する。

解説(Remarks)

クライアントアプリケーションがこのプロパティを設定していない場合は、Unknown 値を返します。

vtbl 16 HRESULT QueryServiceRegistration(LPWSTR serviceID, IUpdateServiceRegistration** retval)

IUpdateServiceRegistration インターフェースへのポインターを返します。

serviceIDLPWSTRin登録するサービスの識別子です。
retvalIUpdateServiceRegistration**out追加されたサービスを表す IUpdateServiceRegistration インターフェースへのポインターです。

戻り値

成功した場合は S_OK を返します。それ以外の場合は、COM または Windows のエラーコードを返します。

vtbl 17 HRESULT AddService2(LPWSTR serviceID, INT flags, LPWSTR authorizationCabPath, IUpdateServiceRegistration** retval)

承認キャビネットファイル (.cab) を必要とせずに、サービスを Windows Update Agent (WUA) に登録します。このメソッドは、IUpdateServiceRegistration インターフェースへのポインターも返します。

serviceIDLPWSTRin登録するサービスの識別子です。
flagsINTinビット単位の OR 演算で組み合わせた AddServiceFlag 値の組み合わせです。結果の値は、サービス登録のオプションを指定します。詳細については、「解説」を参照してください。
authorizationCabPathLPWSTRinサービス登録に必要な情報を含む、Microsoft の署名付きローカルキャビネットファイル (.cab) のパスです。空の場合、更新エージェントは、ネットワーク接続が利用可能なときに、サービス登録時に承認キャビネットファイル (.cab) を検索します。
retvalIUpdateServiceRegistration**out追加されたサービスを表す IUpdateServiceRegistration インターフェースへのポインターです。

戻り値

成功した場合は S_OK を返します。それ以外の場合は、COM または Windows のエラーコードを返します。

このメソッドは、次のエラーコードを返すこともあります。

戻り値のコード 説明
E_INVALIDARG
パラメーター値が無効です。
E_ACCESSDENIED
authorizationCabPath パラメーターが null 文字列に設定されている場合、このメソッドをリモートコンピューターから呼び出すことはできません。
WU_E_DS_SERVICEEXPIRED
承認キャビネットファイル (.cab) の有効期限が切れています。
WU_E_DS_INVALIDOPERATION
自動更新の状態を変更できませんでした。

解説(Remarks)

asfAllowOnlineRegistration フラグを指定した場合、このメソッドは ネットワークエラーコード を返すことがあります。

このメソッドでは、authorizationCabPath パラメーターは省略可能です。authorizationCabPath パラメーターを指定しない場合は、Windows Update サーバーから取得されます。

asfAllowOnlineRegistration フラグまたは asfAllowPendingRegistration フラグが指定され、かつ authorizationCabPath パラメーターの値が空の文字列でない場合、このメソッドは E_INVALIDARG を返します。

asfRegisterServiceWithAU フラグが指定されている場合に、要求された自動更新の状態変更が承認キャビネットファイル (.cab) の仕様に反しているときは、このメソッドは WU_E_DS_INVALIDOPERATION を返します。承認キャビネットファイルが署名されていない場合は、WinVerifyTrust 関数からエラーが返されます。

更新エージェントと AddService2 は、flags パラメーターに指定する AddServiceFlag 値に応じて、次のように動作します。

出典・ライセンス: 上記「公式ドキュメント」の内容は 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_IUpdateServiceManager2 "{0BB8531D-7E8D-424F-986C-A0B8F60A3E7B}"
#usecom global IUpdateServiceManager2 IID_IUpdateServiceManager2 "{F8D253D9-89A4-4DAA-87B6-1168369F0B21}"
#comfunc global IUpdateServiceManager2_get_ClientApplicationID   14 var
#comfunc global IUpdateServiceManager2_put_ClientApplicationID   15 wstr
#comfunc global IUpdateServiceManager2_QueryServiceRegistration  16 wstr,sptr
#comfunc global IUpdateServiceManager2_AddService2               17 wstr,int,wstr,sptr
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※#usecom 末尾は CoCreateInstance 用のクラスID(コクラスCLSID, SDKから自動取得)。
; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。
; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。
; ※IDispatch 実装。HSP では comobj 経由でメソッド名による呼び出しも可能(vtbl 不要)。