3.2.4.2.9 Invoking Asynchronous Operations

The methods providing asynchronous behaviors are as follows:

If the client wants to invoke any of the above asynchronous methods, the client MUST pass an object implementing IWbemObjectSink interface to the above method calls as a response handler.

When the method invocation succeeds, the client SHOULD wait for the result of the operation to be returned to the client using IWbemObjectSink::Indicate and IWbemObjectSink::SetStatus on the IWbemObjectSink passed to the asynchronous method.

When the IWbemServices method invocation fails, the result of the operation is returned as a return value of the method.

After the IWbemServices  asynchronous method invocation succeeds, if the client wants to cancel the pending asynchronous operation the client MUST call IWbemServices::CancelAsyncCall method. If the client calls IWbemServices::CancelAsyncCall, the client MUST pass the IWbemObjectSink passed to the asynchronous IWbemServices method that is still pending. The client MUST NOT call IWbemServices::CancelAsyncCall from within a call to IWbemObjectSink::Indicate or IWbemObjectSink::SetStatus.