Nous utilisons une bibliothèque de troisième partie pour rendre 3d. Dans cette bibliothèque, il existe une fonctionnalité de "mémoire de suivi" qui garde trace de toute la mémoire allouée et libérée par la bibliothèque pendant l'exécution. C'est une caractéristique intéressante, car cela aide à déterminer par ex. fuites de mémoire. En appelant une certaine fonction dans cette bibliothèque, un fichier journal est généré dans le répertoire de travail courant du processus. Dernièrement, j'ai remarqué que ce fichier apparaissait à plusieurs endroits différents, donc ma première pensée était bien sûr de toujours définir le répertoire de travail actuel dans le dossier dans lequel je veux que le journal apparaisse, et cela fonctionne très bien.Comment attraper la création de fichier et l'appelant responsable
Cependant, il s'avère que ce fichier est toujours créé à divers endroits sans que la fonction mentionnée ci-dessus ait jamais été appelée par le programme. Par conséquent, le fichier doit en quelque sorte être créé par la bibliothèque sans mon consentement. Le créateur de cette bibliothèque dit que le moteur n'appelle jamais cette méthode en interne. Donc, pour lui prouver le contraire (en me montrant moi-même stupide (ce ne sera pas la première fois)), j'ai besoin d'un moyen d'attraper exactement quand ce fichier est créé. FindFirstChangeNotification() ne fera pas, car cela ne me fournira que des informations que quelque chose s'est passé dans un dossier. Idéalement, je voudrais (en cours ou hors processus) intercepter quand cela se produit et d'une manière ou d'une autre injecter une exception de processus (par exemple faire WinDbg attraper cela), donc je par la callstack obtenir l'information que je veux.
Toutes les suggestions sont les bienvenues.
À la votre!
+1 pour l'exemple de code. Mais Daniel était le premier, désolé :) – ralphtheninja