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

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- SemaphoreSecurity.cs
- GraphicsContainer.cs
- filewebrequest.cs
- Color.cs
- FileUpload.cs
- CookielessHelper.cs
- CompiledIdentityConstraint.cs
- StorageMappingFragment.cs
- XmlCollation.cs
- FormViewDeletedEventArgs.cs
- Accessible.cs
- Substitution.cs
- Subset.cs
- UriTemplateEquivalenceComparer.cs
- SafeEventLogWriteHandle.cs
- LoggedException.cs
- PtsContext.cs
- FormatException.cs
- OdbcPermission.cs
- Byte.cs
- Accessible.cs
- XamlTypeMapperSchemaContext.cs
- DiffuseMaterial.cs
- TemplateParser.cs
- clipboard.cs
- SiteMap.cs
- XmlAtomErrorReader.cs
- DateTimePicker.cs
- ClientScriptManager.cs
- TextCompositionEventArgs.cs
- ConfigurationManagerHelperFactory.cs
- AttributeUsageAttribute.cs
- SerializationInfoEnumerator.cs
- SynchronizedKeyedCollection.cs
- FaultBookmark.cs
- Stack.cs
- RecommendedAsConfigurableAttribute.cs
- DelegatingStream.cs
- BezierSegment.cs
- ConnectionManagementElement.cs
- WindowsRegion.cs
- OdbcFactory.cs
- FontClient.cs
- ExistsInCollection.cs
- PermissionToken.cs
- HttpListener.cs
- ProviderSettingsCollection.cs
- XmlElementCollection.cs
- XmlSerializerVersionAttribute.cs
- Visual.cs
- ECDiffieHellmanPublicKey.cs
- TargetException.cs
- DataSourceHelper.cs
- StringUtil.cs
- DynamicObjectAccessor.cs
- CustomMenuItemCollection.cs
- QilScopedVisitor.cs
- SrgsNameValueTag.cs
- ClipboardProcessor.cs
- ServiceContractViewControl.cs
- XmlSchemaInfo.cs
- XmlSchemaAttributeGroupRef.cs
- CurrencyWrapper.cs
- ConfigurationConverterBase.cs
- BamlLocalizableResourceKey.cs
- OdbcRowUpdatingEvent.cs
- TraceSource.cs
- FileDialog.cs
- _SslSessionsCache.cs
- ScrollProperties.cs
- HttpResponseHeader.cs
- RectAnimationClockResource.cs
- TypeUsage.cs
- ColumnCollection.cs
- BaseTemplateCodeDomTreeGenerator.cs
- BindingExpression.cs
- StringExpressionSet.cs
- ConnectionsZone.cs
- ClientOptions.cs
- FormViewPagerRow.cs
- ToolboxCategory.cs
- SelectedGridItemChangedEvent.cs
- XmlSchemaProviderAttribute.cs
- KeyPullup.cs
- SqlRowUpdatedEvent.cs
- EntityViewGenerator.cs
- FtpCachePolicyElement.cs
- CustomAttributeBuilder.cs
- GcSettings.cs
- TabControlDesigner.cs
- MemberHolder.cs
- EncodingConverter.cs
- StreamInfo.cs
- DataGridViewRowErrorTextNeededEventArgs.cs
- XmlEncoding.cs
- MailAddressCollection.cs
- TripleDESCryptoServiceProvider.cs
- TdsValueSetter.cs
- ADMembershipUser.cs
- InstanceDataCollectionCollection.cs