wmiutil.cs source code in C# .NET

Source code for the .NET framework in C#

                        

Code:

/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / Wmi / managed / System / Management / wmiutil.cs / 1305376 / wmiutil.cs

                            using System; 
using System.Runtime.InteropServices;
using System.Runtime.Versioning;
using WbemClient_v1;
 
namespace System.Management
{ 
 
    [ComImport, Guid("87A5AD68-A38A-43ef-ACA9-EFE910E5D24C"),
     InterfaceType(ComInterfaceType.InterfaceIsIUnknown)] 
    internal interface IWmiEventSource
    {
        [PreserveSig]
        void Indicate(IntPtr pIWbemClassObject); 

        [PreserveSig] 
        void SetStatus( 
            int lFlags,
            int hResult, 
            [MarshalAs(UnmanagedType.BStr)] string strParam ,
            IntPtr pObjParam
        );
    } 

#if USEIWOS 
    // The following is a manually defined wrapper for IWbemObjectSink 
    // since the size_is attribute cannot be dealt with by TlbImp.
    [Guid("7c857801-7381-11cf-884d-00aa004b2e24"), 
     InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
    public interface IWbemObjectSink
    {
        [PreserveSig] 
        void Indicate(
            long lObjectCount, 
            [MarshalAs(UnmanagedType.Interface, SizeParamIndex=0)] IWbemClassObject [] apObjArray 
            );
 
        [PreserveSig]
        void SetStatus(
            long lFlags,
            int hResult, 
            [MarshalAs(UnmanagedType.BStr)] string strParam,
            [MarshalAs(UnmanagedType.Interface)] IWbemClassObject pObjParam 
            ); 

    }; 
#endif

    //Class for calling GetErrorInfo from managed code
    class WbemErrorInfo 
    {
        public static IWbemClassObjectFreeThreaded GetErrorInfo() 
        { 
            IErrorInfo errorInfo = GetErrorInfo(0);
            if(null != errorInfo) 
            {
                IntPtr pUnk = Marshal.GetIUnknownForObject(errorInfo);
                IntPtr pIWbemClassObject;
                Marshal.QueryInterface(pUnk, ref IWbemClassObjectFreeThreaded.IID_IWbemClassObject, out pIWbemClassObject); 
                Marshal.Release(pUnk);
 
                // The IWbemClassObjectFreeThreaded instance will own reference count on pIWbemClassObject 
                if(pIWbemClassObject != IntPtr.Zero)
                    return new IWbemClassObjectFreeThreaded(pIWbemClassObject); 
            }
            return null;
        }
 
        [ResourceExposure( ResourceScope.None),DllImport("oleaut32.dll", PreserveSig=false)]
        static extern IErrorInfo GetErrorInfo(int reserved); 
    } 

    //RCW for IErrorInfo 
    [ComImport]
    [Guid("1CF2B120-547D-101B-8E65-08002B2BD119")]
    [InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
        internal interface IErrorInfo 
    {
        Guid GetGUID(); 
 
         [return:MarshalAs(UnmanagedType.BStr)]
        string GetSource(); 

        [return:MarshalAs(UnmanagedType.BStr)]
        string GetDescription();
 
        [return:MarshalAs(UnmanagedType.BStr)]
        string GetHelpFile(); 
 
        uint GetHelpContext();
    } 

}

// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// Copyright (c) Microsoft Corporation. All rights reserved.
using System; 
using System.Runtime.InteropServices;
using System.Runtime.Versioning;
using WbemClient_v1;
 
namespace System.Management
{ 
 
    [ComImport, Guid("87A5AD68-A38A-43ef-ACA9-EFE910E5D24C"),
     InterfaceType(ComInterfaceType.InterfaceIsIUnknown)] 
    internal interface IWmiEventSource
    {
        [PreserveSig]
        void Indicate(IntPtr pIWbemClassObject); 

        [PreserveSig] 
        void SetStatus( 
            int lFlags,
            int hResult, 
            [MarshalAs(UnmanagedType.BStr)] string strParam ,
            IntPtr pObjParam
        );
    } 

#if USEIWOS 
    // The following is a manually defined wrapper for IWbemObjectSink 
    // since the size_is attribute cannot be dealt with by TlbImp.
    [Guid("7c857801-7381-11cf-884d-00aa004b2e24"), 
     InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
    public interface IWbemObjectSink
    {
        [PreserveSig] 
        void Indicate(
            long lObjectCount, 
            [MarshalAs(UnmanagedType.Interface, SizeParamIndex=0)] IWbemClassObject [] apObjArray 
            );
 
        [PreserveSig]
        void SetStatus(
            long lFlags,
            int hResult, 
            [MarshalAs(UnmanagedType.BStr)] string strParam,
            [MarshalAs(UnmanagedType.Interface)] IWbemClassObject pObjParam 
            ); 

    }; 
#endif

    //Class for calling GetErrorInfo from managed code
    class WbemErrorInfo 
    {
        public static IWbemClassObjectFreeThreaded GetErrorInfo() 
        { 
            IErrorInfo errorInfo = GetErrorInfo(0);
            if(null != errorInfo) 
            {
                IntPtr pUnk = Marshal.GetIUnknownForObject(errorInfo);
                IntPtr pIWbemClassObject;
                Marshal.QueryInterface(pUnk, ref IWbemClassObjectFreeThreaded.IID_IWbemClassObject, out pIWbemClassObject); 
                Marshal.Release(pUnk);
 
                // The IWbemClassObjectFreeThreaded instance will own reference count on pIWbemClassObject 
                if(pIWbemClassObject != IntPtr.Zero)
                    return new IWbemClassObjectFreeThreaded(pIWbemClassObject); 
            }
            return null;
        }
 
        [ResourceExposure( ResourceScope.None),DllImport("oleaut32.dll", PreserveSig=false)]
        static extern IErrorInfo GetErrorInfo(int reserved); 
    } 

    //RCW for IErrorInfo 
    [ComImport]
    [Guid("1CF2B120-547D-101B-8E65-08002B2BD119")]
    [InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
        internal interface IErrorInfo 
    {
        Guid GetGUID(); 
 
         [return:MarshalAs(UnmanagedType.BStr)]
        string GetSource(); 

        [return:MarshalAs(UnmanagedType.BStr)]
        string GetDescription();
 
        [return:MarshalAs(UnmanagedType.BStr)]
        string GetHelpFile(); 
 
        uint GetHelpContext();
    } 

}

// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// Copyright (c) Microsoft Corporation. All rights reserved.
                        

Link Menu

Network programming in C#, Network Programming in VB.NET, Network Programming in .NET
This book is available now!
Buy at Amazon US or
Buy at Amazon UK