internal static string GetManagementPath(IWbemClassObjectFreeThreaded wbemObject)
        {
            string str       = null;
            int    errorCode = -2147217407;

            if (wbemObject == null)
            {
                return(str);
            }
            int    pType    = 0;
            int    plFlavor = 0;
            object pVal     = null;

            if ((wbemObject.Get_("__PATH", 0, ref pVal, ref pType, ref plFlavor) < 0) || (pVal == DBNull.Value))
            {
                errorCode = wbemObject.Get_("__RELPATH", 0, ref pVal, ref pType, ref plFlavor);
                if (errorCode < 0)
                {
                    if ((errorCode & 0xfffff000L) == 0x80041000L)
                    {
                        ManagementException.ThrowWithExtendedInfo((ManagementStatus)errorCode);
                    }
                    else
                    {
                        Marshal.ThrowExceptionForHR(errorCode);
                    }
                }
            }
            if (DBNull.Value == pVal)
            {
                return(null);
            }
            return((string)pVal);
        }
Пример #2
0
        //internal factory
        /// <summary>
        /// Internal static "factory" method for making a new ManagementPath
        /// from the system property of a WMI object
        /// </summary>
        /// <param name="wbemObject">The WMI object whose __PATH property will
        /// be used to supply the returned object</param>
        internal static ManagementPath GetManagementPath(
            IWbemClassObjectFreeThreaded wbemObject)
        {
            ManagementPath path   = null;
            int            status = (int)ManagementStatus.Failed;

            if (null != wbemObject)
            {
                int    dummy1 = 0, dummy2 = 0;
                object val = null;
                status = wbemObject.Get_("__PATH", 0, ref val, ref dummy1, ref dummy2);

                if ((status & 0xfffff000) == 0x80041000)
                {
                    ManagementException.ThrowWithExtendedInfo((ManagementStatus)status);
                }
                else if ((status & 0x80000000) != 0)
                {
                    Marshal.ThrowExceptionForHR(status);
                }
                if (System.DBNull.Value != val)
                {
                    path = new ManagementPath((string)val);
                }
            }

            return(path);
        }
Пример #3
0
        //internal factory
        /// <summary>
        /// Internal static "factory" method for making a new ManagementPath
        /// from the system property of a WMI object
        /// </summary>
        /// <param name="wbemObject">The WMI object whose __PATH property will
        /// be used to supply the returned object</param>
        internal static string GetManagementPath(
            IWbemClassObjectFreeThreaded wbemObject)
        {
            string path   = null;
            int    status = (int)ManagementStatus.Failed;

            if (null != wbemObject)
            {
                int    dummy1 = 0, dummy2 = 0;
                object val = null;
                status = wbemObject.Get_("__PATH", 0, ref val, ref dummy1, ref dummy2);
                if ((status < 0) || (val == System.DBNull.Value))
                {
                    //try to get the relpath instead
                    status = wbemObject.Get_("__RELPATH", 0, ref val, ref dummy1, ref dummy2);
                    if (status < 0)
                    {
                        if ((status & 0xfffff000) == 0x80041000)
                        {
                            ManagementException.ThrowWithExtendedInfo((ManagementStatus)status);
                        }
                        else
                        {
                            Marshal.ThrowExceptionForHR(status, WmiNetUtilsHelper.GetErrorInfo_f());
                        }
                    }
                }

                if (System.DBNull.Value == val)
                {
                    path = null;
                }
                else
                {
                    path = (string)val;
                }
            }

            return(path);
        }
		/// <summary>
		/// Internal factory for classes, used when deriving a class
		/// or cloning a class. For these purposes we always mark
		/// the class as "bound".
		/// </summary>
		/// <param name="wbemObject">The underlying WMI object</param>
		/// <param name="mgObj">Seed class from which we will get initialization info</param>
		internal static ManagementClass GetManagementClass(
			IWbemClassObjectFreeThreaded wbemObject,
			ManagementClass mgObj)
		{ 
			ManagementClass newClass = new ManagementClass();
            newClass.wbemObject = wbemObject;

			if (null != mgObj)
			{
				newClass.scope = ManagementScope._Clone(mgObj.scope);

				ManagementPath objPath = mgObj.Path;

				if (null != objPath)
					newClass.path = ManagementPath._Clone(objPath);

				// Ensure we have our class name in the path
				object className = null;
				int dummy = 0;

				int status = wbemObject.Get_("__CLASS", 0, ref className, ref dummy, ref dummy);

				if (status < 0)
				{
					if ((status & 0xfffff000) == 0x80041000)
						ManagementException.ThrowWithExtendedInfo((ManagementStatus)status);
					else
						Marshal.ThrowExceptionForHR(status);
				}

				if (className != System.DBNull.Value)
					newClass.path.internalClassName = (string)className;

				ObjectGetOptions options = mgObj.Options;
				if (null != options)
					newClass.options = ObjectGetOptions._Clone(options);

				// Finally we ensure that this object is marked as bound.
				// We do this as a last step since setting certain properties
				// (Options, Path and Scope) would mark it as unbound
				//
				// ***
				// *	Changed isBound flag to wbemObject==null check.
				// *	newClass.IsBound = true;
				// ***
			}

			return newClass;
		}
Пример #5
0
        internal static string GetManagementPath(IWbemClassObjectFreeThreaded wbemObject)
        {
            string str = null;

            if (wbemObject != null)
            {
                int    num  = 0;
                int    num1 = 0;
                object obj  = null;
                int    num2 = wbemObject.Get_("__PATH", 0, ref obj, ref num, ref num1);
                if (num2 < 0 || obj == DBNull.Value)
                {
                    num2 = wbemObject.Get_("__RELPATH", 0, ref obj, ref num, ref num1);
                    if (num2 < 0)
                    {
                        if (((long)num2 & (long)-4096) != (long)-2147217408)
                        {
                            Marshal.ThrowExceptionForHR(num2);
                        }
                        else
                        {
                            ManagementException.ThrowWithExtendedInfo((ManagementStatus)num2);
                        }
                    }
                }
                if (DBNull.Value != obj)
                {
                    str = (string)obj;
                }
                else
                {
                    str = null;
                }
            }
            return(str);
        }
 private static bool _IsClass(IWbemClassObjectFreeThreaded wbemObject)
 {
     object pVal = null;
     int pType = 0;
     int plFlavor = 0;
     int errorCode = wbemObject.Get_("__GENUS", 0, ref pVal, ref pType, ref plFlavor);
     if (errorCode < 0)
     {
         if ((errorCode & 0xfffff000L) == 0x80041000L)
         {
             ManagementException.ThrowWithExtendedInfo((ManagementStatus) errorCode);
         }
         else
         {
             Marshal.ThrowExceptionForHR(errorCode);
         }
     }
     return (((int) pVal) == 1);
 }
        private static bool _IsClass(IWbemClassObjectFreeThreaded wbemObject)
        {
            object pVal      = null;
            int    pType     = 0;
            int    plFlavor  = 0;
            int    errorCode = wbemObject.Get_("__GENUS", 0, ref pVal, ref pType, ref plFlavor);

            if (errorCode < 0)
            {
                if ((errorCode & 0xfffff000L) == 0x80041000L)
                {
                    ManagementException.ThrowWithExtendedInfo((ManagementStatus)errorCode);
                }
                else
                {
                    Marshal.ThrowExceptionForHR(errorCode);
                }
            }
            return(((int)pVal) == 1);
        }
Пример #8
0
        private static bool _IsClass(IWbemClassObjectFreeThreaded wbemObject)
        {
            object obj  = null;
            int    num  = 0;
            int    num1 = 0;
            int    num2 = wbemObject.Get_("__GENUS", 0, ref obj, ref num, ref num1);

            if (num2 < 0)
            {
                if (((long)num2 & (long)-4096) != (long)-2147217408)
                {
                    Marshal.ThrowExceptionForHR(num2);
                }
                else
                {
                    ManagementException.ThrowWithExtendedInfo((ManagementStatus)num2);
                }
            }
            return((int)obj == 1);
        }
        private static bool _IsClass(IWbemClassObjectFreeThreaded wbemObject)
        {
            object val = null;
            int    dummy1 = 0, dummy2 = 0;

            int status = wbemObject.Get_("__GENUS", 0, ref val, ref dummy1, ref dummy2);

            if (status < 0)
            {
                if ((status & 0xfffff000) == 0x80041000)
                {
                    ManagementException.ThrowWithExtendedInfo((ManagementStatus)status);
                }
                else
                {
                    Marshal.ThrowExceptionForHR(status, WmiNetUtilsHelper.GetErrorInfo_f());
                }
            }

            return((int)val == (int)tag_WBEM_GENUS_TYPE.WBEM_GENUS_CLASS);
        }
Пример #10
0
        internal static ManagementClass GetManagementClass(IWbemClassObjectFreeThreaded wbemObject, ManagementClass mgObj)
        {
            ManagementClass class2 = new ManagementClass {
                wbemObject = wbemObject
            };

            if (mgObj != null)
            {
                class2.scope = ManagementScope._Clone(mgObj.scope);
                ManagementPath path = mgObj.Path;
                if (path != null)
                {
                    class2.path = ManagementPath._Clone(path);
                }
                object pVal      = null;
                int    pType     = 0;
                int    errorCode = wbemObject.Get_("__CLASS", 0, ref pVal, ref pType, ref pType);
                if (errorCode < 0)
                {
                    if ((errorCode & 0xfffff000L) == 0x80041000L)
                    {
                        ManagementException.ThrowWithExtendedInfo((ManagementStatus)errorCode);
                    }
                    else
                    {
                        Marshal.ThrowExceptionForHR(errorCode);
                    }
                }
                if (pVal != DBNull.Value)
                {
                    class2.path.internalClassName = (string)pVal;
                }
                ObjectGetOptions options = mgObj.Options;
                if (options != null)
                {
                    class2.options = ObjectGetOptions._Clone(options);
                }
            }
            return(class2);
        }
Пример #11
0
        internal static ManagementClass GetManagementClass(IWbemClassObjectFreeThreaded wbemObject, ManagementClass mgObj)
        {
            ManagementClass managementClass = new ManagementClass();

            managementClass.wbemObject = wbemObject;
            if (mgObj != null)
            {
                managementClass.scope = ManagementScope._Clone(mgObj.scope);
                ManagementPath path = mgObj.Path;
                if (path != null)
                {
                    managementClass.path = ManagementPath._Clone(path);
                }
                object obj  = null;
                int    num  = 0;
                int    num1 = wbemObject.Get_("__CLASS", 0, ref obj, ref num, ref num);
                if (num1 < 0)
                {
                    if (((long)num1 & (long)-4096) != (long)-2147217408)
                    {
                        Marshal.ThrowExceptionForHR(num1);
                    }
                    else
                    {
                        ManagementException.ThrowWithExtendedInfo((ManagementStatus)num1);
                    }
                }
                if (obj != DBNull.Value)
                {
                    managementClass.path.internalClassName = (string)obj;
                }
                ObjectGetOptions options = mgObj.Options;
                if (options != null)
                {
                    managementClass.options = ObjectGetOptions._Clone(options);
                }
            }
            return(managementClass);
        }
Пример #12
0
		internal static ManagementClass GetManagementClass(IWbemClassObjectFreeThreaded wbemObject, ManagementClass mgObj)
		{
			ManagementClass managementClass = new ManagementClass();
			managementClass.wbemObject = wbemObject;
			if (mgObj != null)
			{
				managementClass.scope = ManagementScope._Clone(mgObj.scope);
				ManagementPath path = mgObj.Path;
				if (path != null)
				{
					managementClass.path = ManagementPath._Clone(path);
				}
				object obj = null;
				int num = 0;
				int num1 = wbemObject.Get_("__CLASS", 0, ref obj, ref num, ref num);
				if (num1 < 0)
				{
					if (((long)num1 & (long)-4096) != (long)-2147217408)
					{
						Marshal.ThrowExceptionForHR(num1);
					}
					else
					{
						ManagementException.ThrowWithExtendedInfo((ManagementStatus)num1);
					}
				}
				if (obj != DBNull.Value)
				{
					managementClass.path.internalClassName = (string)obj;
				}
				ObjectGetOptions options = mgObj.Options;
				if (options != null)
				{
					managementClass.options = ObjectGetOptions._Clone(options);
				}
			}
			return managementClass;
		}
Пример #13
0
		private static bool _IsClass(IWbemClassObjectFreeThreaded wbemObject)
		{
			object obj = null;
			int num = 0;
			int num1 = 0;
			int num2 = wbemObject.Get_("__GENUS", 0, ref obj, ref num, ref num1);
			if (num2 < 0)
			{
				if (((long)num2 & (long)-4096) != (long)-2147217408)
				{
					Marshal.ThrowExceptionForHR(num2);
				}
				else
				{
					ManagementException.ThrowWithExtendedInfo((ManagementStatus)num2);
				}
			}
			return (int)obj == 1;
		}
 internal static ManagementClass GetManagementClass(IWbemClassObjectFreeThreaded wbemObject, ManagementClass mgObj)
 {
     ManagementClass class2 = new ManagementClass {
         wbemObject = wbemObject
     };
     if (mgObj != null)
     {
         class2.scope = ManagementScope._Clone(mgObj.scope);
         ManagementPath path = mgObj.Path;
         if (path != null)
         {
             class2.path = ManagementPath._Clone(path);
         }
         object pVal = null;
         int pType = 0;
         int errorCode = wbemObject.Get_("__CLASS", 0, ref pVal, ref pType, ref pType);
         if (errorCode < 0)
         {
             if ((errorCode & 0xfffff000L) == 0x80041000L)
             {
                 ManagementException.ThrowWithExtendedInfo((ManagementStatus) errorCode);
             }
             else
             {
                 Marshal.ThrowExceptionForHR(errorCode);
             }
         }
         if (pVal != DBNull.Value)
         {
             class2.path.internalClassName = (string) pVal;
         }
         ObjectGetOptions options = mgObj.Options;
         if (options != null)
         {
             class2.options = ObjectGetOptions._Clone(options);
         }
     }
     return class2;
 }
Пример #15
0
		internal static string GetManagementPath(IWbemClassObjectFreeThreaded wbemObject)
		{
			string str = null;
			if (wbemObject != null)
			{
				int num = 0;
				int num1 = 0;
				object obj = null;
				int num2 = wbemObject.Get_("__PATH", 0, ref obj, ref num, ref num1);
				if (num2 < 0 || obj == DBNull.Value)
				{
					num2 = wbemObject.Get_("__RELPATH", 0, ref obj, ref num, ref num1);
					if (num2 < 0)
					{
						if (((long)num2 & (long)-4096) != (long)-2147217408)
						{
							Marshal.ThrowExceptionForHR(num2);
						}
						else
						{
							ManagementException.ThrowWithExtendedInfo((ManagementStatus)num2);
						}
					}
				}
				if (DBNull.Value != obj)
				{
					str = (string)obj;
				}
				else
				{
					str = null;
				}
			}
			return str;
		}
        private static bool _IsClass(IWbemClassObjectFreeThreaded wbemObject)
        {
            object val = null;
            int dummy1 = 0, dummy2 = 0;

            int status = wbemObject.Get_("__GENUS", 0, ref val, ref dummy1, ref dummy2);

            if (status < 0)
            {
                if ((status & 0xfffff000) == 0x80041000)
                    ManagementException.ThrowWithExtendedInfo((ManagementStatus)status);
                else
                    Marshal.ThrowExceptionForHR(status);
            }
            
            return ((int)val == (int)tag_WBEM_GENUS_TYPE.WBEM_GENUS_CLASS);
        }
 internal static string GetManagementPath(IWbemClassObjectFreeThreaded wbemObject)
 {
     string str = null;
     int errorCode = -2147217407;
     if (wbemObject == null)
     {
         return str;
     }
     int pType = 0;
     int plFlavor = 0;
     object pVal = null;
     if ((wbemObject.Get_("__PATH", 0, ref pVal, ref pType, ref plFlavor) < 0) || (pVal == DBNull.Value))
     {
         errorCode = wbemObject.Get_("__RELPATH", 0, ref pVal, ref pType, ref plFlavor);
         if (errorCode < 0)
         {
             if ((errorCode & 0xfffff000L) == 0x80041000L)
             {
                 ManagementException.ThrowWithExtendedInfo((ManagementStatus) errorCode);
             }
             else
             {
                 Marshal.ThrowExceptionForHR(errorCode);
             }
         }
     }
     if (DBNull.Value == pVal)
     {
         return null;
     }
     return (string) pVal;
 }
Пример #18
0
        //internal factory
        /// <summary>
        /// Internal static "factory" method for making a new ManagementPath
        /// from the system property of a WMI object
        /// </summary>
        /// <param name="wbemObject">The WMI object whose __PATH property will
        /// be used to supply the returned object</param>
        internal static string GetManagementPath (
            IWbemClassObjectFreeThreaded wbemObject)
        {
            string path = null;
            int status  = (int)ManagementStatus.Failed;

            if (null != wbemObject)
            {
                int dummy1 = 0, dummy2 = 0;
                object val = null;
                status = wbemObject.Get_ ("__PATH", 0, ref val, ref dummy1, ref dummy2);
                if ((status < 0) || (val == System.DBNull.Value))
                {
                    //try to get the relpath instead
                    status = wbemObject.Get_ ("__RELPATH", 0, ref val, ref dummy1, ref dummy2);
                    if (status < 0) 
                    {
                        if ((status & 0xfffff000) == 0x80041000)
                            ManagementException.ThrowWithExtendedInfo((ManagementStatus)status);
                        else
                            Marshal.ThrowExceptionForHR(status);
                    }
                }
                
                if (System.DBNull.Value == val)
                    path = null;
                else
                    path = (string)val;
            }

            return path;
        }