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

IGPMAsyncProgress

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

公式ドキュメント

IGPMAsyncProgress インターフェイスはクライアント側で実装し、非同期に実行できる Group Policy Management Console (GPMC) のメソッドに入力パラメーターとして渡すことができます。

解説(Remarks)

バックアップ、復元、インポート、コピーなどの複雑な GPMC 操作は非同期に実行できます。非同期操作でこのインターフェイスを使用するには、次の手順に従います。

非同期操作でこのインターフェイスを使用するには

  1. IGPMAsyncProgress インターフェイスを実装します。
  2. IGPMAsyncProgress インターフェイスポインターを GPMC のメソッドに渡します。たとえば、 RestoreGPO メソッドや Import メソッドに渡します。
サーバーは Status メソッドを呼び出して、 操作の進行状況をクライアントに通知します。このメソッドは IGPMAsyncCancel インターフェイスポインターも返すため、呼び出し元は Cancel メソッドを呼び出して操作をキャンセルできます。

メソッド 1

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

vtbl 7 HRESULT Status(INT lProgressNumerator, INT lProgressDenominator, HRESULT hrStatus, VARIANT* pResult, IGPMStatusMsgCollection* ppIGPMStatusMsgCollection)

サーバーはこのメソッドを呼び出して、Group Policy Management Console (GPMC) の操作の状態をクライアントに通知します。

lProgressNumeratorINTinGPMC 操作の完了率を表す分数の分子です。
lProgressDenominatorINTin

GPMC 操作の完了率を表す分数の分母です。このパラメーターの値は、対象の GPO が「ライブ」の GPO かバックアップされた GPO かにかかわらず、グループポリシーオブジェクト (GPO) 内の拡張機能の数に比例します。この値はユーザーに進行状況バーを表示するために使用できます。

GPMC のユーザーインターフェイスでは、進行状況バーは lProgressDenominator 個の区間に分割されます。lProgressNumerator==lProgressDenominator になったとき、操作は完了です。

hrStatusHRESULTin操作の状態です。エラーが発生していない場合、このパラメーターの値は S_OK です。
pResultVARIANT*in操作の結果です。 このパラメーターは、GPMC 操作の結果として生成されたオブジェクトへのインターフェイスポインターです。たとえば、GPMGPO オブジェクトや GPMBackup オブジェクトへのポインターとなる場合があります。このオブジェクトは操作が完了したときにのみ返されます。
ppIGPMStatusMsgCollectionIGPMStatusMsgCollection*in操作に関する詳細な状態情報を含む IGPMStatusMsgCollection インターフェイスへのポインターです。エラーがない場合、または詳細なメッセージがない場合、Status は null のコレクションを渡します。

戻り値

このメソッドに戻り値はありません。

解説(Remarks)

このメソッドはクライアントが実装する必要があります。

出典・ライセンス: 上記「公式ドキュメント」の内容は 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_IGPMAsyncProgress "{6AAC29F8-5948-4324-BF70-423818942DBC}"
#usecom global IGPMAsyncProgress IID_IGPMAsyncProgress "{}"
#comfunc global IGPMAsyncProgress_Status  7 int,int,int,var,sptr
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。
; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。
; ※IDispatch 実装。HSP では comobj 経由でメソッド名による呼び出しも可能(vtbl 不要)。