2010-08-24 21 views
0

Habituellement, lorsqu'une application écrit dans l'un de ses fichiers sur le disque, l'horodatage modifié du fichier change.Différentes manières de demander à Windows d'écrire des données sur le disque

Parfois, et dans mon cas c'est une application écrite dans ProvideX (un dérivé de Business Basic je crois) qui fait l'écriture, l'horodatage modifié ne change pas après une écriture. Un programme tel que MyTrigger ne détectera pas non plus l'opération d'écriture, mais Sysinternals ProcessMonitor enregistre l'activité du disque.

Il semble évident qu'il existe différentes façons de demander à Windows d'effectuer des opérations d'écriture, et la requête peut ensuite être connectée ou enregistrée de diverses manières.

Je dois pouvoir connecter les opérations d'écriture provenant de l'application ProvideX. Tous les pointeurs sur les différentes façons dont Windows écrit sur le disque, et le type de crochets disponibles pour eux seraient grandement appréciés.

Merci

+0

Je ne suis pas qualifié pour donner une réponse complète, d'où le commentaire, mais je sais que vous pouvez écrire et ajouter un fichier, à quel point la date modifiée est modifiée, ou vous pouvez le renommer (ou copiez-le) sur le nom que vous surveillez, auquel cas il ne sera pas mis à jour avant la fin. –

Répondre

1

processus en mode utilisateur peut écrire dans le fichier soit en utilisant la fonction API WriteFile ou en utilisant MMF, API fichier mappé en mémoire (CreateFileMapping/MapViewOfFile/écriture à un bloc de mémoire). Peut-être que votre application va bien au format MMF. MMF écrit dans des fichiers très différemment de l'API WriteFile, mais tous les deux aboutissent au même point de terminaison - IRP envoyé au pilote du système de fichiers. Pilote de filtre de système de fichiers (tel que celui utilisé par Sysinternals stuff) peut suivre les demandes d'écriture sur ce niveau IRP. Il est techniquement possible de distinguer entre les opérations d'écriture initiées par MMF et WriteFile au fur et à mesure que différents IRP sont envoyés (l'écriture en mémoire cache et non mise en cache est impliquée). Il semble que la fonction de surveillance de changement de répertoire dans Windows ne piste qu'un seul type IRP, ce qui fait que MyTrigger rate le changement.

+0

merci. Je vais devoir google tous ces termes et ensuite les essayer avant que je puisse dire si c'est ce dont j'ai besoin, mais il semble juste! –

+0

[Les E/S de fichiers mappés en mémoire peuvent ou ne peuvent pas mettre à jour l'horodatage modifié par le fichier] (http://blogs.msdn.com/b/elyasse/archive/2010/04/18/memory-mapped-file-io-may -or-may-not-update-the-fichier-modified-timestamp.aspx) Non que cela réponde à la question, mais il peut être la cause du problème. –