ProcessModule.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 / Services / Monitoring / system / Diagnosticts / ProcessModule.cs / 1305376 / ProcessModule.cs

                            //------------------------------------------------------------------------------ 
// 
//     Copyright (c) Microsoft Corporation.  All rights reserved.
// 
//----------------------------------------------------------------------------- 

namespace System.Diagnostics { 
    using System.Diagnostics; 
    using System;
    using System.Collections; 
    using System.IO;
    using Microsoft.Win32;
    using System.ComponentModel;
    using System.Globalization; 
    using System.Security.Permissions;
//    using System.Windows.Forms; 
    using System.Runtime.Versioning; 

    ///  
    ///     A process module component represents a DLL or EXE loaded into
    ///     a particular process.  Using this component, you can determine
    ///     information about the module.
    ///  
    [Designer("System.Diagnostics.Design.ProcessModuleDesigner, " + AssemblyRef.SystemDesign)]
    [PermissionSet(SecurityAction.LinkDemand, Name="FullTrust")] 
    [PermissionSet(SecurityAction.InheritanceDemand, Name="FullTrust")] 
    public class ProcessModule : Component {
        internal ModuleInfo moduleInfo; 
        FileVersionInfo fileVersionInfo;

        /// 
        ///     Initialize the module. 
        /// 
        ///  
        internal ProcessModule(ModuleInfo moduleInfo) { 
            this.moduleInfo = moduleInfo;
            GC.SuppressFinalize(this); 
        }

        /// 
        ///     Make sure we are running on NT. 
        /// 
        ///  
        internal void EnsureNtProcessInfo() { 
            if (Environment.OSVersion.Platform != PlatformID.Win32NT)
                throw new PlatformNotSupportedException(SR.GetString(SR.WinNTRequired)); 
        }

        /// 
        ///     Returns the name of the Module. 
        /// 
        [MonitoringDescription(SR.ProcModModuleName)] 
        public string ModuleName { 
            get {
                return moduleInfo.baseName; 
            }
        }

        ///  
        ///     Returns the full file path for the location of the module.
        ///  
        [MonitoringDescription(SR.ProcModFileName)] 
        public string FileName {
            [ResourceExposure(ResourceScope.Machine)] 
            get {
                return moduleInfo.fileName;
            }
        } 

        ///  
        ///     Returns the memory address that the module was loaded at. 
        /// 
        [MonitoringDescription(SR.ProcModBaseAddress)] 
        public IntPtr BaseAddress {
            [ResourceExposure(ResourceScope.Process)]
            get {
                return moduleInfo.baseOfDll; 
            }
        } 
 
        /// 
        ///     Returns the amount of memory required to load the module.  This does 
        ///     not include any additional memory allocations made by the module once
        ///     it is running; it only includes the size of the static code and data
        ///     in the module file.
        ///  
        [MonitoringDescription(SR.ProcModModuleMemorySize)]
        public int ModuleMemorySize { 
            get { 
                return moduleInfo.sizeOfImage;
            } 
        }

        /// 
        ///     Returns the memory address for function that runs when the module is 
        ///     loaded and run.
        ///  
        [MonitoringDescription(SR.ProcModEntryPointAddress)] 
        public IntPtr EntryPointAddress {
            get { 
                EnsureNtProcessInfo();
                return moduleInfo.entryPoint;
            }
        } 

        ///  
        ///     Returns version information about the module. 
        /// 
        [Browsable(false)] 
        public FileVersionInfo FileVersionInfo {
            [ResourceExposure(ResourceScope.Machine)]  // Let's review callers - why do they want this?
            [ResourceConsumption(ResourceScope.Machine)]
            get { 
                if (fileVersionInfo == null)
                    fileVersionInfo = FileVersionInfo.GetVersionInfo(FileName); 
                return fileVersionInfo; 
            }
        } 

        public override string ToString() {
            return String.Format(CultureInfo.CurrentCulture, "{0} ({1})", base.ToString(), this.ModuleName);
        } 
    }
} 

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

namespace System.Diagnostics { 
    using System.Diagnostics; 
    using System;
    using System.Collections; 
    using System.IO;
    using Microsoft.Win32;
    using System.ComponentModel;
    using System.Globalization; 
    using System.Security.Permissions;
//    using System.Windows.Forms; 
    using System.Runtime.Versioning; 

    ///  
    ///     A process module component represents a DLL or EXE loaded into
    ///     a particular process.  Using this component, you can determine
    ///     information about the module.
    ///  
    [Designer("System.Diagnostics.Design.ProcessModuleDesigner, " + AssemblyRef.SystemDesign)]
    [PermissionSet(SecurityAction.LinkDemand, Name="FullTrust")] 
    [PermissionSet(SecurityAction.InheritanceDemand, Name="FullTrust")] 
    public class ProcessModule : Component {
        internal ModuleInfo moduleInfo; 
        FileVersionInfo fileVersionInfo;

        /// 
        ///     Initialize the module. 
        /// 
        ///  
        internal ProcessModule(ModuleInfo moduleInfo) { 
            this.moduleInfo = moduleInfo;
            GC.SuppressFinalize(this); 
        }

        /// 
        ///     Make sure we are running on NT. 
        /// 
        ///  
        internal void EnsureNtProcessInfo() { 
            if (Environment.OSVersion.Platform != PlatformID.Win32NT)
                throw new PlatformNotSupportedException(SR.GetString(SR.WinNTRequired)); 
        }

        /// 
        ///     Returns the name of the Module. 
        /// 
        [MonitoringDescription(SR.ProcModModuleName)] 
        public string ModuleName { 
            get {
                return moduleInfo.baseName; 
            }
        }

        ///  
        ///     Returns the full file path for the location of the module.
        ///  
        [MonitoringDescription(SR.ProcModFileName)] 
        public string FileName {
            [ResourceExposure(ResourceScope.Machine)] 
            get {
                return moduleInfo.fileName;
            }
        } 

        ///  
        ///     Returns the memory address that the module was loaded at. 
        /// 
        [MonitoringDescription(SR.ProcModBaseAddress)] 
        public IntPtr BaseAddress {
            [ResourceExposure(ResourceScope.Process)]
            get {
                return moduleInfo.baseOfDll; 
            }
        } 
 
        /// 
        ///     Returns the amount of memory required to load the module.  This does 
        ///     not include any additional memory allocations made by the module once
        ///     it is running; it only includes the size of the static code and data
        ///     in the module file.
        ///  
        [MonitoringDescription(SR.ProcModModuleMemorySize)]
        public int ModuleMemorySize { 
            get { 
                return moduleInfo.sizeOfImage;
            } 
        }

        /// 
        ///     Returns the memory address for function that runs when the module is 
        ///     loaded and run.
        ///  
        [MonitoringDescription(SR.ProcModEntryPointAddress)] 
        public IntPtr EntryPointAddress {
            get { 
                EnsureNtProcessInfo();
                return moduleInfo.entryPoint;
            }
        } 

        ///  
        ///     Returns version information about the module. 
        /// 
        [Browsable(false)] 
        public FileVersionInfo FileVersionInfo {
            [ResourceExposure(ResourceScope.Machine)]  // Let's review callers - why do they want this?
            [ResourceConsumption(ResourceScope.Machine)]
            get { 
                if (fileVersionInfo == null)
                    fileVersionInfo = FileVersionInfo.GetVersionInfo(FileName); 
                return fileVersionInfo; 
            }
        } 

        public override string ToString() {
            return String.Format(CultureInfo.CurrentCulture, "{0} ({1})", base.ToString(), this.ModuleName);
        } 
    }
} 

// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
                        

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