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

MFC Discussion :

[Win32] FlushFileBuffers()


Sujet :

MFC

  1. #1
    tut
    tut est déconnecté
    Membre éclairé
    Avatar de tut
    Inscrit en
    Juillet 2002
    Messages
    373
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 373
    Par défaut [Win32] FlushFileBuffers()
    bonjour,
    mon application écrit régulièrement des données dans un fichier, pour un système de log.
    Hors, il arrive que quand l'application plante violemment, des données ne sont pas écrites.
    Je sais que Windows bufferise les écritures sur disque au moyen d'un LazzyWriter, et que le cache a une taille de 256 ko.
    Dans mon cas, ça expliquerait que des données manquent.

    Mais, est-ce vrai ? ou plutôt, quand une application plante, est-ce que les données bufferisées sont écrites physiquement sur le disque quand Windows libère les ressources allouées au processus ? ou bien, le cache est perdu dans la nature ?

    Merci.

  2. #2
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Par défaut
    salut,
    c'est une bonne question pour moi windows fait le menage les handles de fichiers sont fermes et le cache walou ! (bon j'en ai pas la preuve ecrite )
    et en plus la gestion du cache n'est pas la meme entre NT et 98/95/ME.
    donc moi sur l'ecriture d'un fichier log je flush systematiquement apres l'insertion du message. voir fermer le fichier pour etre blindé.
    tout depend du type d'utilisation ....


  3. #3
    tut
    tut est déconnecté
    Membre éclairé
    Avatar de tut
    Inscrit en
    Juillet 2002
    Messages
    373
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 373
    Par défaut
    En moyenne, l'application écrit 30 objets par secondes, d'une taille moyenne de 30 octets. Le logiciel peut fonctionner plusieurs heures, donc forcer l'écriture en permanence ne me semble pas une bonne chose pour les têtes de lecture du disque dur.
    De plus, tu es sûr que lorsqu'on ferme le handle, le cache est vidé ?
    Il se peut que l'OS retarde ça.

  4. #4
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Par défaut
    salut,
    tu devrais regarder cette note d'informations :
    le probleme n'est pas si simple .....
    http://support.microsoft.com/default.aspx?scid=kb%3Ben-us%3B332023

  5. #5
    tut
    tut est déconnecté
    Membre éclairé
    Avatar de tut
    Inscrit en
    Juillet 2002
    Messages
    373
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 373
    Par défaut
    ok, je ferai donc un FlushFileBuffer() avant mon CloseHandle(), avec ça, je devrai être à peu près sûr que le cache soit vidé...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. utiliser les tag [MFC] [Win32] [.NET] [C++/CLI]
    Par hiko-seijuro dans le forum Visual C++
    Réponses: 8
    Dernier message: 08/06/2005, 15h57
  2. [Kylix] kylix3 ----> win32
    Par blue dans le forum EDI
    Réponses: 3
    Dernier message: 28/01/2003, 11h27
  3. gcc et win32
    Par MatRem dans le forum Autres éditeurs
    Réponses: 1
    Dernier message: 16/01/2003, 12h22
  4. [API win32] Récupérer le répertoire d'un profile
    Par sbeu dans le forum API, COM et SDKs
    Réponses: 3
    Dernier message: 27/09/2002, 12h38
  5. convertir un nom long (win32) en format dos (8+3)
    Par kylekiller dans le forum Langage
    Réponses: 2
    Dernier message: 30/08/2002, 13h34

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