Bonjour,
Je cherche une fonction API permettant de déterminer si un fichier est
déjà utilisé par une autre application ou pas ?
Merci)
Bonjour,
Je cherche une fonction API permettant de déterminer si un fichier est
déjà utilisé par une autre application ou pas ?
Merci)
Je ne crois pas.
Mais ça ne servirait à rien, puisque c'est le genre de chose qui peut changer entre le moment où tu testes et le moment où tu cherches à faire quelque chose avec.
SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.
"Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
Apparently everyone. -- Raymond Chen.
Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.
Createfile me retourne un handle valide sur une dll de ressource déjà utilisé ;
Cela doit dépendre des droits que tu demandes et des flags de partage que tu lui passes...
Typiquement, demande les droits en écriture...
SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.
"Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
Apparently everyone. -- Raymond Chen.
Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.
Hello,
Une API toutes faites je ne crois pas non.
Pour savoir si un fichier est utilisé par un processus, il faut lister l'ensemble des handles du système et vérifier si un processus possède un handle sur le fichier en question.
Pour faire ça "proprement" tu auras besoins d'un driver (ou du moins un accès au kernel) afin d'éviter les deadlocks qui se crée à cause de l'attente d'une ressource (pipe) qui ne sera jamais libérée.
Si tu parles de DLL c'est plus simple car un handle sur une dll est seulement une adresse sur le PE header de celle ci en mémoire (contrairement au handle sur fichier qui fait référence à un objet noyau).
EDIT://
Une autre possibilité sans passer par un driver est d'utiliser des threads et un timer.
Partager