|
|
|

| | | | | | | | |  |
 | 
 | Code source : unité LRJ_WinWorkingSet |  |

|  |
 | |  |

|
Description : cette unité contient les objets LRJ_TWorkingSet, LRJ_TWorkingSetList,
LRJ_TMemoryRange et LRJ_TMemoryRangeList. LRJ_TWorkingSet contient des informations sur les
séquences de mémoire utilisées par un processus, LRJ_TWorkingSetList contient la liste des
séquences de mémoire utilisées par un processus, LRJ_TMemoryRange regroupe les séquences
de mémoire contiguës pour extraire les plages de mémoires utilisées par un processus et
LRJ_TMemoryRangeList liste l'ensemble des plages de mémoire utilisées par un processus.
L'unité est livrée avec une application de démonstration (
voir description plus loin
) qui utilise les fonctionnalités des
objets contenus dans l'unité. Les codes de l'application
sont livrés avec l'unité pour illustrer comment utiliser les objets de
cette unité. L'application de démonstration utilise les unités
LRJ_GridsPlus et
LRJ_WinProcess non livrées avec l'application.
L'unité LRJ_WinWorkingSet met en oeuvre les fonctions de Windows suivantes :
|
|
EmptyWorkingSet
GetMappedFileName
QueryWorkingSet
QueryWorkingSetEx
ReadProcessMemory
VirtualQueryEx
|
Déclarations publiques de l'unité
I
Télécharger l'application de démonstration
Utilise les unités : Windows, Math,
LRJ_WindowsPlus,
LRJ_ClassesPlus et
LRJ_WinModule
.
Version : 1 du 24.05.2009
Auteur : Laurent Hède
Copyright : LorenJo
Nombre de lignes : 777
Réalisée sous : Delphi 6
Systèmes compatibles : NT4, 2000, XP, Vista, serveurs
Prix : 179.00 € H.T.
Déclarations publiques de l'unité :
unit LRJ_WinWorkingSet;
interface
uses
Windows,
Math,
LRJ_WindowsPlus,
LRJ_ClassesPlus,
LRJ_WinModule;
function LRJ_EmptyWorkingSet(const hProcess: THandle): boolean;
function LRJ_GetMappedFileName(const hProcess: THandle; const AAddress: LRJ_ULONG_PTR; var AFileName: string): boolean;
...........
function LRJ_QueryWorkingSet(const hProcess: THandle; const pv: LRJ_PPSAPI_WORKING_SET_INFORMATION; const cb: DWORD): boolean;
...........
function LRJ_QueryWorkingSetEx(const hProcess: THandle; const pv: LRJ_PPSAPI_WORKING_SET_EX_INFORMATION; const cb: DWORD): boolean;
...........
//------------OBJET----------------------------
LRJ_TWorkingSet = class(TObject)
...........
function IsSameProperties(const AWorkingSet: LRJ_TWorkingSet): boolean;
function IsMappedFileName: boolean;
property Protection: Byte read GetProtection;
property StringProtection: string read GetStringProtection;
property ShareCount: Byte read GetShareCount;
property Shared: boolean read GetShared;
property Address: LRJ_ULONG_PTR read GetAddress;
property MappedFileName: string read GetMappedFileName;
property Size: DWORD read GetSize;
property ProtectionIni: DWORD read GetProtectionIni;
property BaseAddress: LRJ_ULONG_PTR read GetBaseAddress;
property AllocationBase: LRJ_ULONG_PTR read GetAllocationBase;
property IfExtendedAttributesLoaded: boolean read GetIfExtendedAttributesLoaded;
property Win32Protection: Word read GetWin32Protection; // valide si IfExtendedAttributesLoaded = true
property NumaNode: Byte read GetNumaNode; // valide si IfExtendedAttributesLoaded = true
property IfLocked: boolean read GetIfLocked; // valide si IfExtendedAttributesLoaded = true
property IfLargePage: boolean read GetIfLargePage; // valide si IfExtendedAttributesLoaded = true
property ModuleName: string read GetModuleName;
property SectionName: string read GetSectionName;
end;//-----------FIN--------------------------
// Renseigner ProcessID pour charger la liste. Utiliser RefreshList pour mettre à jour la liste
//------------OBJET----------------------------
LRJ_TWorkingSetList = class(TObject)
...........
function RefreshList: boolean; virtual;
function CountWorkingSets: integer;
property ProcessHandle: THandle read MOProcessHandle;
property ProcessID: DWORD read MOProcessID write SetProcessID;
property WorkingSets[const Aindex: integer]: LRJ_TWorkingSet read GetWorkingSet;
end;//-----------FIN--------------------------
LRJ_TMemoryRangeList = class;
//------------OBJET----------------------------
LRJ_TMemoryRange = class(LRJ_TWorkingSet)
...........
property Size: LRJ_ULONG_PTR read GetSize;
property EndAddress: LRJ_ULONG_PTR read GetEndAddress;
property CountWorkingSet: Integer read GetCountWorkingSet;
end;//-----------FIN--------------------------
//------------OBJET----------------------------
LRJ_TMemoryRangeList = class(LRJ_TWorkingSetList)
...........
function RefreshList: boolean; override;
function CountMemoryRanges: integer;
property MemoryRanges[const Index: integer]: LRJ_TMemoryRange read GetMemoryRange;
end;//-----------FIN--------------------------
|
Application de démonstration

Le ComboBox processes contient la liste des processus dont la mémoire est
accessible.
En sélectionnant un processus dans le ComboBox, la liste est chargée avec les plages de mémoire
utilisées par le processus.
Vous souhaiteriez un exemple répondant à votre problématique ?
Cliquez sur ce lien.
|
|
 |
 | |  |
|
|