internal static ManagementBaseObject GetBaseObject(IWbemClassObjectFreeThreaded wbemObject, ManagementScope scope)
 {
     if (_IsClass(wbemObject))
     {
         return(ManagementClass.GetManagementClass(wbemObject, scope));
     }
     return(ManagementObject.GetManagementObject(wbemObject, scope));
 }
Beispiel #2
0
        public ManagementClass Derive(string newClassName)
        {
            ManagementClass managementClass = null;

            if (newClassName != null)
            {
                ManagementPath managementPath = new ManagementPath();
                try
                {
                    managementPath.ClassName = newClassName;
                }
                catch
                {
                    throw new ArgumentOutOfRangeException("newClassName");
                }
                if (managementPath.IsClass)
                {
                    if (base.PutButNotGot)
                    {
                        base.Get();
                        base.PutButNotGot = false;
                    }
                    IWbemClassObjectFreeThreaded wbemClassObjectFreeThreaded = null;
                    int num = base.wbemObject.SpawnDerivedClass_(0, out wbemClassObjectFreeThreaded);
                    if (num >= 0)
                    {
                        object obj1 = newClassName;
                        num = wbemClassObjectFreeThreaded.Put_("__CLASS", 0, ref obj1, 0);
                        if (num >= 0)
                        {
                            managementClass = ManagementClass.GetManagementClass(wbemClassObjectFreeThreaded, this);
                        }
                    }
                    if (num < 0)
                    {
                        if (((long)num & (long)-4096) != (long)-2147217408)
                        {
                            Marshal.ThrowExceptionForHR(num);
                        }
                        else
                        {
                            ManagementException.ThrowWithExtendedInfo((ManagementStatus)num);
                        }
                    }
                    return(managementClass);
                }
                else
                {
                    throw new ArgumentOutOfRangeException("newClassName");
                }
            }
            else
            {
                throw new ArgumentNullException("newClassName");
            }
        }
        internal static ManagementBaseObject GetBaseObject(IWbemClassObjectFreeThreaded wbemObject, ManagementScope scope)
        {
            ManagementBaseObject managementObject;

            if (!ManagementBaseObject._IsClass(wbemObject))
            {
                managementObject = ManagementObject.GetManagementObject(wbemObject, scope);
            }
            else
            {
                managementObject = ManagementClass.GetManagementClass(wbemObject, scope);
            }
            return(managementObject);
        }
        // Factory
        /// <summary>
        /// Factory for various types of base object
        /// </summary>
        /// <param name="wbemObject"> IWbemClassObject </param>
        /// <param name="scope"> The scope</param>
        internal static ManagementBaseObject GetBaseObject(
            IWbemClassObjectFreeThreaded wbemObject,
            ManagementScope scope)
        {
            ManagementBaseObject newObject = null;

            if (_IsClass(wbemObject))
            {
                newObject = ManagementClass.GetManagementClass(wbemObject, scope);
            }
            else
            {
                newObject = ManagementObject.GetManagementObject(wbemObject, scope);
            }

            return(newObject);
        }
Beispiel #5
0
        public override object Clone()
        {
            IWbemClassObjectFreeThreaded wbemClassObjectFreeThreaded = null;
            int num = base.wbemObject.Clone_(out wbemClassObjectFreeThreaded);

            if (num < 0)
            {
                if (((long)num & (long)-4096) != (long)-2147217408)
                {
                    Marshal.ThrowExceptionForHR(num);
                }
                else
                {
                    ManagementException.ThrowWithExtendedInfo((ManagementStatus)num);
                }
            }
            return(ManagementClass.GetManagementClass(wbemClassObjectFreeThreaded, this));
        }