internal static void UpdateParameters( ManagementBaseObject parameters, SortedList parametersList) { if (parameters == null) { return; } foreach (PropertyData property in parameters.Properties) { int num = -1; BaseWMIAdapter.WMIParameterInformation parameterInformation = new BaseWMIAdapter.WMIParameterInformation(property.Name, BaseWMIAdapter.GetDotNetType(property)); try { num = (int)property.Qualifiers["ID"].Value; } catch (ManagementException ex) { Adapter.tracer.TraceException((Exception)ex); } if (num < 0) { num = parametersList.Count; } parametersList[(object)num] = (object)parameterInformation; } }
private object AuxillaryInvokeMethod( ManagementObject obj, BaseWMIAdapter.WMIMethodCacheEntry mdata, object[] arguments) { MethodInformation[] methods = new MethodInformation[1] { mdata.MethodInfoStructure }; object[] newArguments; Adapter.GetBestMethodAndArguments(mdata.Name, methods, arguments, out newArguments); ParameterInformation[] parameters = mdata.MethodInfoStructure.parameters; Adapter.tracer.WriteLine("Parameters found {0}. Arguments supplied {0}", (object)parameters.Length, (object)newArguments.Length); ManagementBaseObject methodParameters = BaseWMIAdapter.CreateClassFrmObject((ManagementBaseObject)obj).GetMethodParameters(mdata.Name); for (int index = 0; index < parameters.Length; ++index) { BaseWMIAdapter.WMIParameterInformation parameterInformation = (BaseWMIAdapter.WMIParameterInformation)parameters[index]; if (index < arguments.Length && arguments[index] == null) { newArguments[index] = (object)null; } methodParameters[parameterInformation.Name] = newArguments[index]; } return(this.InvokeManagementMethod(obj, mdata.Name, methodParameters)); }
internal static MethodInformation GetMethodInformation(MethodData mData) { SortedList parametersList = new SortedList(); BaseWMIAdapter.UpdateParameters(mData.InParameters, parametersList); BaseWMIAdapter.WMIParameterInformation[] parameterInformationArray = new BaseWMIAdapter.WMIParameterInformation[parametersList.Count]; if (parametersList.Count > 0) { parametersList.Values.CopyTo((Array)parameterInformationArray, 0); } return(new MethodInformation(false, true, (ParameterInformation[])parameterInformationArray)); }