Создание объектов Parameters в C++
Методы IWbemServices::ExecMethod или ExecMethodAsync требуют системного класса __PARAMETERS в качестве контейнера в pInParams , если выполняемый ими метод имеет какие-либо входные аргументы.
В следующей процедуре описывается создание экземпляра системного класса __PARAMETERS для хранения сведений о параметрах.
Создание экземпляра __PARAMETERS
Определите путь к классу для класса, содержащего определение метода.
Используя путь к классу и указатель IWbemServices, переданный из IWbemProviderInit::Initialize, вызовите IWbemClassObject::GetMethod , чтобы получить классы входных и выходных параметров.
Метод GetMethod возвращает указатель IWbemClassObject для доступа к каждому из этих классов.
Используя указатель IWbemClassObject для выходного класса, вызовите IWbemClassObject::SpawnInstance , чтобы создать экземпляр класса .
Заполните экземпляр класса, задав свойства, соответствующие выходным значениям, и, если для метода есть возвращаемое значение, — свойство ReturnValue .
Передайте экземпляр __PARAMETERS обратно вызывающей стороне с помощью метода IWbemObjectSink::Indicate .
После того как поставщик метода определит правильность входных параметров, метод, на который указывает strMethodName , может по-прежнему передаваться или завершаться ошибкой. Некоторые поставщики методов порождают второй поток для реализации метода, чтобы фактический успех или сбой метода в конечном итоге сообщалось вызывающей стороне через IWbemObjectSink::SetStatus. Обратите внимание, что IWbemObjectSink::SetStatus не получает код возврата метода поставщика. Однако он получает код возврата фактического механизма обратного вызова и полезен только для проверки того, что вызов произошел или что он завершился сбоем по механическим причинам.
Связанные темы