Método IWbemServices::CancelAsyncCall (wbemcli.h)
El método IWbemServices::CancelAsyncCall cancela las llamadas asincrónicas pendientes actualmente basadas en el puntero IWbemObjectSink , que se pasó originalmente al método asincrónico. El puntero IWbemObjectSink pendiente se puede liberar antes de la llamada o después de que se devuelva la llamada. El método CancelAsyncCall no está operativo desde un receptor y no es compatible con los proveedores de métodos. Esto significa que solo se cancela el final del cliente de la llamada. El proveedor de implementación no recibe una notificación de que la llamada se canceló y se ejecuta hasta su finalización. Debe considerar esto antes de cancelar los métodos que tardan mucho tiempo en completarse, como los métodos Defrag y Format de la clase Win32_Volume .
Sintaxis
HRESULT CancelAsyncCall(
[in] IWbemObjectSink *pSink
);
Parámetros
[in] pSink
Puntero a la implementación IWbemObjectSink proporcionada por el cliente a cualquiera de los métodos asincrónicos de IWbemServices.
Valor devuelto
Este método devuelve un valor HRESULT que indica el estado de la llamada al método. En la lista siguiente se muestra el valor contenido en un HRESULT.
Si se produce un error, puede obtener información disponible de la función COM GetErrorInfo.
También se pueden devolver códigos de error específicos de COM si los problemas de red provocan la pérdida de la conexión remota a la administración de Windows.
Comentarios
Como es posible que la devolución de llamada al receptor no se devuelva en el mismo nivel de autenticación que requiere el cliente, se recomienda usar la comunicación semisincrónica en lugar de la asincrónica. Para más información, vea Llamada a un método. Llamar a CancelAsyncCall desde una implementación de IWbemObjectSink::Indicate o IWbemObjectSink::SetStatus puede interferir con el estado WMI y no se recomienda.
En el caso de una llamada de método como ExecMethodAsync, solo se cancela el final del cliente de la llamada. El proveedor de implementación no recibe una notificación de que la llamada se canceló y se ejecuta hasta su finalización.
Para obtener más información sobre cómo usar llamadas asincrónicas, vea Realizar una llamada asincrónica con C++ y recibir notificaciones de eventos asincrónicas.
Ejemplos
Para obtener un ejemplo completo que usa CancelAsyncCall, vea Ejemplo: Recepción de notificaciones de eventos a través de WMI
El siguiente ejemplo de C++, tomado del ejemplo \\Archivos de programa\Microsoft SDKs\Windows\v7.0\Samples\sysmgmt\wmi\vc\desacopled\instance_provider, muestra una implementación de CancelAsyncCall.HRESULT CProvider_IWbemServices :: CancelAsyncCall (
IWbemObjectSink *a_Sink
)
{
HRESULT t_Result = WBEM_E_NOT_AVAILABLE ;
return t_Result ;
}
Requisitos
Requisito | Value |
---|---|
Cliente mínimo compatible | Windows Vista |
Servidor mínimo compatible | Windows Server 2008 |
Plataforma de destino | Windows |
Encabezado | wbemcli.h (include Wbemidl.h) |
Library | Wbemuuid.lib |
Archivo 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 |