3.2.4.1.1 IWbemObjectSink::Indicate Client Details

If there are no IWbemClassObject results to be reported, the client MUST NOT call the IWbemObjectSink::Indicate method.

Otherwise, the client MUST call the IWbemObjectSink::Indicate method one or more times until the entire IWbemClassObject results are delivered to the server. Each time the IWbemObjectSink::Indicate method is called, a subset of the result is delivered to the server. For a specific set of result objects, the client uses implementation-specific criteria to choose the number and timing of the IWbemObjectSink::Indicate method calls that are used to deliver the result objects.<81>

Clients that implement the ObjectArray structure MUST call IWbemObjectSink::Indicate by using DCOM Remote Protocol marshaling, as specified in [MS-DCOM], for the first time. If a server returns WBEM_S_NEW_STYLE, the client SHOULD send the remainder of the results by using the ObjectArray structure as specified in section 2.2.14. If the server does not return WBEM_S_NEW_STYLE, the client MUST send the remainder of the results fromĀ  the IWbemObjectSink::Indicate call by using DCOM Remote Protocol marshaling, as specified in [MS-DCOM], and MUST NOT use the ObjectArray structure.

The following applies when the WMI server acts as an IWbemObjectSink client:

For each asynchronous operation, there MUST be only one call at a time: either IWbemObjectSink::Indicate or IWbemObjectSink::SetStatus. This is ensured by calling IWbemObjectSink::Indicate only if CallbackInProgress is FALSE. Set CallbackInProgress to TRUE before calling IWbemObjectSink::Indicate, and reset it to FALSE after the call is returned. IWbemOjbectSink::Indicate MUST NOT be called if CallCancelled is set to TRUE.

If IWbemObjectSink::Indicate returns an error, the server MUST do the following:

  1. Set CallCancelled to TRUE in AsyncOperationTable for the entry identified by this IWbemObjectSink.

  2. Send the final result with WBEM_E_CALL_CANCELLED.

  3. Remove the entry for this operation in AsyncOperationTable.