ProcessModule.cs source code in C# .NET

Source code for the .NET framework in C#

                        

Code:

/ DotNET / DotNET / 8.0 / untmp / whidbey / REDBITS / ndp / fx / src / Services / Monitoring / system / Diagnosticts / ProcessModule.cs / 1 / 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; 
 
    /// 
    ///     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 { 
            get {
                return moduleInfo.fileName; 
            }
        }

        ///  
        ///     Returns the memory address that the module was loaded at.
        ///  
        [MonitoringDescription(SR.ProcModBaseAddress)] 
        public IntPtr BaseAddress {
            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 { 
            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); 
        }
    } 
}


                        

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