Метод IWbemServices::CancelAsyncCall (wbemcli.h)
Метод IWbemServices::CancelAsyncCall отменяет все ожидающие в настоящее время асинхронные вызовы на основе указателя IWbemObjectSink , который изначально был передан в асинхронный метод. Незавершенный указатель IWbemObjectSink можно освободить до вызова или после возврата вызова. Метод CancelAsyncCall не работает из приемника и не поддерживается поставщиками методов. Это означает, что отменен только клиентский конец вызова. Поставщик реализации не получает уведомления о том, что вызов был отменен и выполняется до завершения. Это следует учитывать перед отменой методов, которые занимают много времени, таких как методы Defrag и Format в классе Win32_Volume .
Синтаксис
HRESULT CancelAsyncCall(
[in] IWbemObjectSink *pSink
);
Параметры
[in] pSink
Указатель на реализацию IWbemObjectSink , предоставляемую клиентом для любого из асинхронных методов IWbemServices.
Возвращаемое значение
Этот метод возвращает HRESULT , указывающий состояние вызова метода. В следующем списке перечислены значения, содержащиеся в HRESULT.
При сбое можно получить доступные сведения из функции COM GetErrorInfo.
Коды ошибок COM также могут быть возвращены, если проблемы с сетью приводят к потере удаленного подключения к управлению Windows.
Комментарии
Так как обратный вызов к приемнику может не возвращаться на том же уровне проверки подлинности, который требуется клиенту, рекомендуется использовать полусинхронный режим вместо асинхронного взаимодействия. Дополнительные сведения см. в разделе Вызов метода. Вызов CancelAsyncCall из реализации IWbemObjectSink::Indicate или IWbemObjectSink::SetStatus может повлиять на состояние WMI и не рекомендуется.
В случае вызова метода, такого как ExecMethodAsync, отменяется только конец клиентского вызова. Поставщик реализации не получает уведомления о том, что вызов был отменен и выполняется до завершения.
Дополнительные сведения об использовании асинхронных вызовов см. в разделах Выполнение асинхронного вызова с помощью C++ и Получение уведомлений об асинхронных событиях.
Примеры
Полный пример использования CancelAsyncCall см. в разделе Пример получения уведомлений о событиях через WMI.
Следующий пример C++, взятый из примера \\Program Files\Microsoft SDKs\Windows\v7.0\Samples\sysmgmt\wmi\vc\decoupled\instance_provider, демонстрирует реализацию CancelAsyncCall.HRESULT CProvider_IWbemServices :: CancelAsyncCall (
IWbemObjectSink *a_Sink
)
{
HRESULT t_Result = WBEM_E_NOT_AVAILABLE ;
return t_Result ;
}
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Windows Vista |
Минимальная версия сервера | Windows Server 2008 |
Целевая платформа | Windows |
Header | wbemcli.h (включая Wbemidl.h) |
Библиотека | 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 |