IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB 6 et antérieur Discussion :

Page Faults, (Erreur de page) : CreateToolhelpSnapshot


Sujet :

VB 6 et antérieur

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2005
    Messages : 6
    Points : 1
    Points
    1
    Par défaut Page Faults, (Erreur de page) : CreateToolhelpSnapshot
    Bonjour les amis! Comment allez vous ? Voila je vais vous embêter quelques minutes avec un de mes petit problème, désolée.

    J'utilise "CreateToolhelpSnapshot" pour lister les processus en cours. Jusque à la tout va bien enfin presque. Depuis quelques temps je commence de plus en plus à veiller à la mémoire vive que utilise le programme et les handles conserver dans cette dernière et donc d?essayer de plus en plus à veiller que mes applications soient de mieux en mieux performante.



    Il y a quelque temps, j?ai découvert "Page Faults" ou "Erreur de page" en français. Donc a quoi sont du ces erreurs...

    "A des références à des zones mémoire qui n'existent plus ou pas en mémoire (RAM)... (D?après se que j?ai compris)"

    Et donc pour revenir à "CreateToolhelpSnapshot" j?ai vu que ceci...

    hSnapShot = CreateToolhelpSnapshot(TH32CS_SNAPPROCESS, 0&)

    ... Créait pas mal d'erreurs de pages, et quand j?ai vu sur Wikipédia que un trop nombre des ces dernières peut causer un crash de l'ordinateur et voyant que cette procédure en créait beaucoup, je me suis demandée comment je peut corriger ce problème. Inutile de vous préciser que j?ai regardé sur google et que j?en est discutée avec des collègues avant de venir poster ici.
    Voila donc si quelqu'un connaît l'origine de ces erreurs et pourrait m'expliquer comment les corriger si c'est possible je lui serrait très reconnaissante...

    Merci déjà d'avoir pris quelques secondes pour lire mon petit romand, si vous pouvez m'éclairer... Salutation A+ Merci

  2. #2
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Points : 24 327
    Points
    24 327
    Par défaut
    Bonjour et bienvenue sur ce forum.

    Je vais aussi t'embêter quelques minutes...

    Je te propose de lire ce message qui explique où il faut poster.

    Tu sembles faire du DOT.NET. Je me trompe?

    Si c'est le cas, tu n'es pas sur le bon forum.
    Quoi qu'il en soit, en tête de ce forum-ci, il est bien mentionné: Pas de questions techniques.

    Cordialement.
    N'oubliez pas de cliquer sur quand vous avez obtenu ou trouvé vous-même la réponse à votre question.
    Si vous trouvez seul, pensez à poster votre solution. Elle peut servir à d'autres!
    Pensez aussi à voter pour les réponses qui vous ont aidés.
    ------------
    Je dois beaucoup de mes connaissances à mes erreurs!

  3. #3
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2005
    Messages : 6
    Points : 1
    Points
    1
    Par défaut
    Non c'est du vb 6.0

    Alors je doit aller poster ou ? jai deja poster un peut sur tout les forums de tous les sites de programation et personne ne sais... je pense que ici sa va etre pareil. Tous le monde faits des programme mais personne ne connets "Page Fault". C'est important de prendre compte de ces dernières!

  4. #4
    Membre habitué Avatar de BertrandA
    Inscrit en
    Août 2003
    Messages
    170
    Détails du profil
    Informations forums :
    Inscription : Août 2003
    Messages : 170
    Points : 197
    Points
    197
    Par défaut
    C'est tout trognon ton post, mais montre-nous du code ça nous permettra de t'aider un peu mieux.
    En première lecture, je dirais :
    - L'appel à la fonction est-il réussi (hSnapShot <> -1) ? Dans le cas contraire, que retourne GetLastError() ?
    - Il est où l'appel à CloseHandle() pour libérer le snapshot ?

    Tous le monde faits des programme mais personne ne connets "Page Fault".
    Pourquoi tant de haine, adieu monde cruel etc... ?
    Les orteils servent à trouver les pieds de chaise et les montants de porte quand il fait noir.

  5. #5
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2005
    Messages : 6
    Points : 1
    Points
    1
    Par défaut
    Voici la function qui crée les "Page Faults" du processus.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    Public Function ListerProcess(Destination As ListBox)
    Dim i As Integer
    Dim hSnapShot As Long
    Dim uProcess As PROCESSENTRY32
    Dim r As Long
    hSnapShot = CreateToolhelpSnapshot(TH32CS_SNAPPROCESS, 0&)
    If hSnapShot = 0 Then Exit Function
    uProcess.dwSize = Len(uProcess)
    r = ProcessFirst(hSnapShot, uProcess)
     
    Do While r
    Destination.AddItem uProcess.th32ProcessID
    r = ProcessNext(hSnapShot, uProcess)
    Loop
     
    CloseHandle hSnapShot
    CloseHandle r
    End Function


    Et jai repéré que cétait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    hSnapShot = CreateToolhelpSnapshot(TH32CS_SNAPPROCESS, 0&)
    qui causait les erreurs.

    ( Public Const TH32CS_SNAPPROCESS As Long = 2& )

  6. #6
    Rédacteur
    Avatar de omen999
    Profil pro
    Inscrit en
    Février 2006
    Messages
    1 296
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 1 296
    Points : 3 549
    Points
    3 549
    Par défaut
    ton problème me laisse perplexe...
    une erreur de page ne constitue pas en soi une anomalie qui résulterait d'un code mal rédigé
    cette erreur se produit simplement chaque fois que le processeur ne trouve pas le code à lire/écrire dans les pages disponibles pour lui en mémoire vive, l'obligeant ainsi, soit à lire ces pages sur le disque (hard page fault), soit à attendre leurs disponibilités (partage avec un autre process) (soft page fault)
    un passage avec pfmon d'un exemple de code vb6 comme le tien ne révèle aucun anomalie avec la fonction CreateToolhelp32Snapshot
    quel outil as-tu utilisé pour soupçonner injustement cette fonction ?

    edit: traduire "page fault" par erreur de page n'est pas approprié car il ne s'agit pas véritablement d'une erreur du programme
    nomen omen, nemo non omen - Consultez la FAQ VBScript et les cours et tutoriels VBScript
    le plus terrible lorsqu'une voiture renverse un piéton, c'est que ce sont les freins qui hurlent. (ramón)
    pas de questions techniques par mp

  7. #7
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2005
    Messages : 6
    Points : 1
    Points
    1
    Par défaut
    Tout simplement le TaskManager de WIndowsXp.

    Le code si dessus il est msi dans un timer regler a 10ms de maniere a détécter les nouveau processus de suite. bien evidament je ne liste pas dans la listbox tout les 10ms. Jarrive à 8'000-10'000 Erreur la seconde. Je trouve que c'est enorme et bon si sa derange pas je veux bien continuer comme ca mais si c dangereux pour la ram ou autre, il faut que je trouve comment empecher ces erreurs. Je me suis dite aussi que peut etre sur un otre ordinateur sa ne causerai peut etre pas le meme nombre dans ce ca la. enfin bref je sais pas... Je me disait bien que mon code etait juste. Je vais continuer comme ca meme si sa genere temps d'erreurs... tempis. Merci quand meme à tous.

  8. #8
    Rédacteur
    Avatar de omen999
    Profil pro
    Inscrit en
    Février 2006
    Messages
    1 296
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 1 296
    Points : 3 549
    Points
    3 549
    Par défaut
    aaah parce que le code est appelé toutes les 10ms!
    petit détail qui ne figurait pas dans ton post initial
    c'est sûr que faire du "process polling" en vb6, c'est sportif...

    il serait plus efficace d'hooker la fonction createprocess mais en vb, je ne sais pas si c'est possible
    maintenant, si les process surveillés génèrent des shell events, il est possible de les hooker même en vb, voir ici: http://www.planet-source-code.com/vb...txtCodeId=9153
    bonne lecture
    nomen omen, nemo non omen - Consultez la FAQ VBScript et les cours et tutoriels VBScript
    le plus terrible lorsqu'une voiture renverse un piéton, c'est que ce sont les freins qui hurlent. (ramón)
    pas de questions techniques par mp

  9. #9
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2005
    Messages : 6
    Points : 1
    Points
    1
    Par défaut
    Ah HOOK c'est une sorte de keylogger donc on purait l'utiliser pour les processus c'est ca ? à ca peut être pas mal mais ta source na pas trop l'air de marcher car il se passe rien...

  10. #10
    Rédacteur
    Avatar de omen999
    Profil pro
    Inscrit en
    Février 2006
    Messages
    1 296
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 1 296
    Points : 3 549
    Points
    3 549
    Par défaut
    HOOK c'est une sorte de keylogger donc on purait l'utiliser pour les processus
    on peut dire ça comme ça
    as-tu lu le readme.txt fourni avec la source ?
    l'exemple affiche simplement les événements shell du système dans un champ texte
    maintenant comme je l'indiquais, un process peut ne pas générer de shell events notamment s'il ne crée pas de fenêtre
    nomen omen, nemo non omen - Consultez la FAQ VBScript et les cours et tutoriels VBScript
    le plus terrible lorsqu'une voiture renverse un piéton, c'est que ce sont les freins qui hurlent. (ramón)
    pas de questions techniques par mp

  11. #11
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2005
    Messages : 6
    Points : 1
    Points
    1
    Par défaut
    Lol ba chez moi ya rien qui saffiche dans le champ de text...

    Ps: Si non c'est dangereux si le processus créé bcp de page Faults?

    traduire "page fault" par erreur de page n'est pas approprié car il ne s'agit pas véritablement d'une erreur du programme
    Désolé mais c'est le terme anglais : http://en.wikipedia.org/wiki/Page_fault

    Et :


  12. #12
    Rédacteur
    Avatar de omen999
    Profil pro
    Inscrit en
    Février 2006
    Messages
    1 296
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 1 296
    Points : 3 549
    Points
    3 549
    Par défaut
    ce n'est pas dangereux mais ça peut dégrader les performances globales de la machine, particulièrement les hard page faults qui sollicitent le hd

    s'agissant de la source, il est possible qu'il nécessite une adaptation pour tourner sous xp
    je ne l'ai testé qu'avec w2k
    nomen omen, nemo non omen - Consultez la FAQ VBScript et les cours et tutoriels VBScript
    le plus terrible lorsqu'une voiture renverse un piéton, c'est que ce sont les freins qui hurlent. (ramón)
    pas de questions techniques par mp

Discussions similaires

  1. Réponses: 3
    Dernier message: 07/02/2011, 17h12
  2. Ecran bleu Page fault in non-paged area
    Par joe123 dans le forum Windows 7
    Réponses: 12
    Dernier message: 16/11/2009, 16h37
  3. [Tomcat] configuration d'une page d'erreur dans web.xml
    Par Super Castor dans le forum Tomcat et TomEE
    Réponses: 3
    Dernier message: 08/04/2009, 15h58
  4. Personnaliser les pages d'erreurs
    Par Jeweller dans le forum XMLRAD
    Réponses: 3
    Dernier message: 03/06/2004, 12h26

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo