Поделиться через


Создание объектов параметров в C++

Методы IWbemServices::ExecMethod или ExecMethodAsync требуют __PARAMETERS системного класса в качестве контейнера в pInParams, если метод, который они выполняют, имеет какие-либо входные аргументы.

В следующей процедуре описывается создание экземпляра системного класса __PARAMETERS для хранения сведений о параметрах.

Создание экземпляра __PARAMETERS

  1. Определите путь класса для класса, содержащего определение метода.

  2. Используя путь к классу и указатель IWbemServices, переданный из IWbemProviderInit::Initialize, вызовите IWbemClassObject::GetMethod для получения классов входных и выходных параметров.

    Метод GetMethodвозвращает указатель IWbemClassObject для доступа к каждому из этих классов.

  3. Используя указатель IWbemClassObject для выходного класса, вызовите IWbemClassObject::SpawnInstance для создания экземпляра класса.

  4. Заполните экземпляр класса, задав свойства, соответствующие выходным значениям, и, если для метода есть возвращаемое значение, свойство ReturnValue.

  5. Передайте экземпляр __PARAMETERS обратно вызывающей стороне через метод IWbemObjectSink::Indicate.

После того как поставщик методов определяет правильность входных параметров, метод, на который указывает strMethodName, может как успешно завершиться, так и завершиться с ошибкой. Некоторые поставщики методов создают второй поток для выполнения метода, чтобы вызывающая сторона в конечном итоге получала информацию о фактическом успехе или сбое метода через IWbemObjectSink::SetStatus. Обратите внимание, что IWbemObjectSink::SetStatus не получает возвращаемый код метода поставщика. Однако он получает код возврата фактического механизма возврата вызовов и полезен только для проверки того, что вызов произошел или произошел сбой по механическим причинам.

Вызов метода

IWbemCallResult::GetResultObject

IWbemServices::ExecMethodAsync

IWbemServices::ExecMethod