3.1.4.17 Abstract Provider Interface

Below are the details of the interface used between CIM server and the providers. The server uses ProviderEntryPoint stored in ProviderTable for the given provider for performing any operation below. For sending indications or events to the server, the provider MUST trigger 3.1.6.1.

The server MUST perform the following two processing rules for each invocation of each of the methods listed below in this section:

  • Prior to the invocation, the server MUST impersonate the client (the security principal of the caller) by invoking the abstract interface RpcImpersonateClient as specified in [MS-RPCE] section 3.3.3.4.3.2, passing in NULL as the BindingHandle parameter.

  • Following invocation, the server MUST stop impersonating the client prior to returning a status code by invoking the abstract interface RpcRevertToSelf as specified in [MS-RPCE] section 3.3.3.4.3.3.

The provider is expected to use those credentials with IMPERSONATE level impersonation for any necessary local access checks and remote network operations.

The server communicates asynchronously with the provider. The server creates the IWbemObjectSink object and passes a pointer to the IWbemObjectSink object to each of the provider operations through which the provider communicates the results back to the server. The server then forwards the results to the client. The server deletes the IWbemObjectSink object after receiving the status of the operation from the provider, or after calling the Cancel operation on the provider if the client canceled the operation.

The WMI v2 provider SHOULD<73> query the WMI server for data locale for each invocation of the method on the provider. The provider SHOULD use this locale for formatting decimals in string format and for representing time and date in string format.

The WMI v2 provider SHOULD<74> query the WMI server for the UI locale for each invocation of the method on the provider. The provider SHOULD use this locale when providing string output.