Code source
Code source

  Présentation
  Unités exemple gratuites
  Unités commercialisées
  Conditions d'utilisation
  Comment acheter
  Vendez vos codes
Unités commercialisées

  LRJ_DosDevice
  LRJ_FileMapped
  LRJ_ModifDateTime
  LRJ_ShellUtils
  LRJ_TokenAPI
  LRJ_WinACL
  LRJ_WinBrowseDialog
  LRJ_WinCreateProcess
  LRJ_WinDesktop
  LRJ_WinDirectories
  LRJ_WinDocRecents
  LRJ_WinDrives
  LRJ_WinFavorisWeb
  LRJ_WinFiles
  LRJ_WinIconNotifArea
  LRJ_WinInternetShortcut
  LRJ_WinMenuFolder
  LRJ_WinModule
  LRJ_WinNetApi
  LRJ_WinNetLocalGroups
  LRJ_WinNetUsers
  LRJ_WinPrivileges
  LRJ_WinProcess
  LRJ_WinRecycleBin
  LRJ_WinRegion
  LRJ_WinRegAppPath
  LRJ_WinShellLink
  LRJ_WinShellUI
  LRJ_WinSID
  LRJ_WinStation
  LRJ_WinTokenGroups
  LRJ_WinTrackChangeDir
  LRJ_WinVolumes
  LRJ_WinWorkingSet

   Accueil | GlobalDesk | Code source Delphi | Développements | Votre compte | Contact   

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.


 Accueil | GlobalDesk | Code source Delphi | Développements | Votre compte | Contact 
Copyright © LorenJo 2000-2009    Notice légale