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


Создание объектов Parameters в 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