IWbemServices::CancelAsyncCall メソッド (wbemcli.h)
IWbemServices::CancelAsyncCall メソッドは、最初に非同期メソッドに渡された IWbemObjectSink ポインターに基づいて、現在保留中の非同期呼び出しをすべて取り消します。 未処理の IWbemObjectSink ポインターは、呼び出しの前または呼び出しが返された後に解放できます。 CancelAsyncCall メソッドはシンク内から操作可能ではなく、メソッド プロバイダーではサポートされていません。 これは、呼び出しのクライアント終了のみが取り消されたことを意味します。 実装プロバイダーには、呼び出しが取り消され、完了まで実行されたことが通知されません。 これは、Win32_Volume クラスの Defrag メソッドや Format メソッドなど、完了までに長い時間がかかるメソッドを取り消す前に考慮する必要があります。
構文
HRESULT CancelAsyncCall(
[in] IWbemObjectSink *pSink
);
パラメーター
[in] pSink
クライアントが IWbemServices の非同期メソッドのいずれかに提供する IWbemObjectSink 実装へのポインター。
戻り値
このメソッドは、メソッド呼び出しの状態を示す HRESULT を返します。 次の一覧は、 HRESULT 内に含まれる値の一覧です。
失敗した場合は、COM 関数 GetErrorInfo から使用可能な情報を取得できます。
ネットワークの問題によって Windows Management へのリモート接続が失われる場合は、COM 固有のエラー コードも返される可能性があります。
注釈
シンクへのコールバックはクライアントが必要とするのと同じ認証レベルでは返されない可能性があるため、非同期ではなく半同期通信を使用することをお勧めします。 詳細については、「メソッドの呼び出し」を参照してください。 IWbemObjectSink::Indicate または IWbemObjectSink::SetStatus の実装内から CancelAsyncCall を呼び出すと、WMI 状態に干渉する可能性があり、推奨されません。
ExecMethodAsync などのメソッド呼び出しの場合、呼び出しのクライアント終了のみが取り消されます。 実装プロバイダーには、呼び出しが取り消され、完了まで実行されたことが通知されません。
非同期呼び出しの使用方法の詳細については、「C++ での非同期呼び出しの実行」および「非同期イベント通知の受信」を参照してください。
例
CancelAsyncCall を使用する完全な例については、「例: WMI 経由でイベント通知を受信する」を参照してください。
\\Program Files\Microsoft SDK\Windows\v7.0\Samples\sysmgmt\wmi\vc\decoupled\instance_provider サンプルから取得した次の C++ サンプルは、 CancelAsyncCall の実装を示しています。HRESULT CProvider_IWbemServices :: CancelAsyncCall (
IWbemObjectSink *a_Sink
)
{
HRESULT t_Result = WBEM_E_NOT_AVAILABLE ;
return t_Result ;
}
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows Vista |
サポートされている最小のサーバー | Windows Server 2008 |
対象プラットフォーム | Windows |
ヘッダー | wbemcli.h (Wbemidl.h を含む) |
Library | Wbemuuid.lib |
[DLL] | Fastprox.dll;Esscli.dll;FrameDyn.dll;FrameDynOS.dll;Ntevt.dll;Stdprov.dll;Viewprov.dll;Wbemcomn.dll;Wbemcore.dll;Wbemess.dll;Wbemsvc.dll;Wmipicmp.dll。Wmidcprv.dll;Wmipjobj.dll。Wmiprvsd.dll |