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
- ExtendedProtectionPolicyTypeConverter.cs
- control.ime.cs
- BoundColumn.cs
- WebPartVerbsEventArgs.cs
- StateChangeEvent.cs
- ExpressionBuilder.cs
- KerberosRequestorSecurityToken.cs
- ArglessEventHandlerProxy.cs
- MenuAdapter.cs
- DataRow.cs
- DrawingServices.cs
- SHA384.cs
- SamlAuthorizationDecisionClaimResource.cs
- ArrayTypeMismatchException.cs
- EditorServiceContext.cs
- SpeechRecognizer.cs
- ChildTable.cs
- DetailsViewRow.cs
- Label.cs
- SqlFileStream.cs
- MailWriter.cs
- RSAPKCS1SignatureFormatter.cs
- TreeView.cs
- CacheOutputQuery.cs
- RemotingServices.cs
- FirewallWrapper.cs
- CustomDictionarySources.cs
- VerbConverter.cs
- SerializationSectionGroup.cs
- FactoryGenerator.cs
- EntitySetDataBindingList.cs
- OdbcConnectionOpen.cs
- AssemblyBuilder.cs
- ColorConverter.cs
- DataGridColumnDropSeparator.cs
- RecipientInfo.cs
- CurrentChangedEventManager.cs
- InfoCardRSAPKCS1SignatureDeformatter.cs
- DomainConstraint.cs
- DocumentApplication.cs
- TableColumnCollectionInternal.cs
- ReferencedType.cs
- UiaCoreTypesApi.cs
- UshortList2.cs
- ViewBox.cs
- WebSysDisplayNameAttribute.cs
- BrushConverter.cs
- ButtonBaseDesigner.cs
- EdmMember.cs
- ListView.cs
- EntityClassGenerator.cs
- ValidationError.cs
- ProfileSettingsCollection.cs
- EncoderParameters.cs
- StrongNameKeyPair.cs
- TrackingProfileCache.cs
- DesignerActionList.cs
- RequestNavigateEventArgs.cs
- XsltFunctions.cs
- Polyline.cs
- Selection.cs
- SafeSecurityHandles.cs
- JoinGraph.cs
- HtmlHead.cs
- LambdaCompiler.Generated.cs
- SuppressIldasmAttribute.cs
- CodeArrayIndexerExpression.cs
- DataGridViewRowHeightInfoPushedEventArgs.cs
- SecureUICommand.cs
- DecimalAnimationBase.cs
- URI.cs
- ConfigXmlSignificantWhitespace.cs
- CachedTypeface.cs
- HandledEventArgs.cs
- CombinedGeometry.cs
- Knowncolors.cs
- ArrayTypeMismatchException.cs
- ResourceCodeDomSerializer.cs
- TrackingMemoryStreamFactory.cs
- Guid.cs
- AutomationElementCollection.cs
- PropertyChangedEventArgs.cs
- ZipIOEndOfCentralDirectoryBlock.cs
- IgnoreFlushAndCloseStream.cs
- ZipIOExtraFieldZip64Element.cs
- ListViewSortEventArgs.cs
- InputBuffer.cs
- MethodRental.cs
- RelatedPropertyManager.cs
- XPathDescendantIterator.cs
- ImageField.cs
- DetailsViewActionList.cs
- KeyPressEvent.cs
- InvalidateEvent.cs
- OdbcStatementHandle.cs
- Deflater.cs
- WebPartVerbsEventArgs.cs
- safex509handles.cs
- PropertyEmitterBase.cs
- ReadOnlyHierarchicalDataSourceView.cs