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));
        }