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

Windows Discussion :

ReadDirectoryChangesW et FILE_NOTIFY_CHANGE_LAST_ACCESS


Sujet :

Windows

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre expérimenté
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    298
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 298
    Par défaut ReadDirectoryChangesW et FILE_NOTIFY_CHANGE_LAST_ACCESS
    J'ai besoin de surveiller l'accès à un fichier en lecture, pour cela j'utilise ReadDirectoryChangesW et FILE_NOTIFY_CHANGE_LAST_ACCESS qui surveille la date de dernier accès, modifiée à chaque lecture.

    J'ai remarqué que cela ne marche pas toujours, j'ai l'impression l'évenement n'est déclenché que s'il y a eu un long délai entre deux lectures genre 24H ce qui pourrait se comprendre sur une partition FAT, mais j'ai essayé sur du FAT ou du NTFS, cela ne change rien au problème.

    Est ce que quelqu'un a déjà rencontré le problème et est ce qu'il est possible d'y remédier ?

    EDIT: à priori la résolution pour l'access time est de 1 heure en NTFS et 24h en FAT

  2. #2
    Membre émérite

    Profil pro
    Inscrit en
    Août 2003
    Messages
    878
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2003
    Messages : 878
    Par défaut
    Et en appelant régulièrement (en utilisant un timer par exemple) GetFileAttributesEx() pour obtenir l'info. et voir si il y a eu évolution depuis l'appel précédent ?

    Sinon, il y aurait la solution de l'API hooking mais c'est peut-être un peu trop..."overkill"...

  3. #3
    Expert confirmé

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 756
    Billets dans le blog
    3
    Par défaut
    Normalement ReadDirectoryChangesW ne devrait pas poser de problèmes. Tu l'utilises comment ?

  4. #4
    Membre expérimenté
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    298
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 298
    Par défaut
    Citation Envoyé par David.Schris
    Et en appelant régulièrement (en utilisant un timer par exemple) GetFileAttributesEx() pour obtenir l'info. et voir si il y a eu évolution depuis l'appel précédent ?

    Sinon, il y aurait la solution de l'API hooking mais c'est peut-être un peu trop..."overkill"...
    Je n'ai pas encore testé avec GetFileAttributesEx, je préférerai utiliser ReadDirectoryChangesW, d'ailleurs c'est dans le MSDN que j'ai vu que la résolution est de 1heure en NTFS: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/fileio/fs/win32_file_attribute_data_str.asp

    J'ai testé plusieurs codes pour le ReadDirectoryChangesW et le probleme est juste pour le last access, à priori la résolution est de 1 heure:
    http://www.codeproject.com/file/directorychangewatcher.asp
    http://delphi.icm.edu.pl/ftp/d20free/dirmon.zip

  5. #5
    Expert confirmé

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 756
    Billets dans le blog
    3
    Par défaut
    Tu auras le même problème avec GetFileAttributesEx. C'est une limitation du système de fichier.

  6. #6
    Membre expérimenté
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    298
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 298
    Par défaut
    Pour la FAT, je suis d'accord, mais c'est quand même étonnant pour le NTFS où les toutes les dates sont stockées avec une précision à la seconde, ou alors c'est une limitation de l'API, surtout que dans les propriétés des fichiers dans l'explorer on retrouve cette précision à la seconde

    Il faut que je prenne le temps de tester.

  7. #7
    Expert confirmé

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 756
    Billets dans le blog
    3
    Par défaut
    Moi aussi ça m'étonne, mais...
    http://msdn.microsoft.com/library/en-us/fileio/fs/win32_file_attribute_data_str.asp
    On the NTFS file system, access time has a resolution of 1 hour
    http://msdn.microsoft.com/library/en-us/sysinfo/base/file_times.asp
    The NTFS file system delays updates to the last access time for a file by up to 1 hour after the last access
    donc théoriquement on pourrait avoir un grande précision, mais en pratique c'est pas utilisé. Il doit y avoir une raison (que j'ignore).

Discussions similaires

  1. double notification ReadDirectoryChangesW
    Par antoine2641 dans le forum Débuter
    Réponses: 1
    Dernier message: 05/09/2012, 20h50
  2. Problème avec ReadDirectoryChangesW
    Par Nico118 dans le forum Débuter
    Réponses: 15
    Dernier message: 10/10/2011, 14h33
  3. Utilisation de ReadDirectoryChangesW
    Par khayyam90 dans le forum Contribuez
    Réponses: 0
    Dernier message: 04/01/2011, 14h24
  4. Réponses: 2
    Dernier message: 26/02/2010, 14h02
  5. Réponses: 0
    Dernier message: 19/12/2007, 20h17

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