Bonjour,
Je cherche à récupérer l'adresse du curseur d'un fichier ouvert en c# pour le transmettre à une DLL externe c++.
Est-ce possible et comment pourrais-je m'y prendre ?
Merci de votre aide
Version imprimable
Bonjour,
Je cherche à récupérer l'adresse du curseur d'un fichier ouvert en c# pour le transmettre à une DLL externe c++.
Est-ce possible et comment pourrais-je m'y prendre ?
Merci de votre aide
Bonjour,
Merci pour ton aide.
En fait je dois transmettre un pointeur a une fonction externe dans une DLL écrite en C++ qui prend donc en paramètre un pointeur (unsigned char*) correspondant à une position dans un fichier.
J'arrive bien à récupérer la position dans le fichier avec
long position = file.Position;
mais cela ne correspond pas à ce qu'attends ma fonction.
Comme il s'agit d'un pointeur, il me faut l'adresse mémoire physique du fichier ouvert à la position où je souhaite que cette fonction C++ écrive.
PS : La petite barre qui clignote pour t'indiquer où tu écrit sous word / Bloc-note ou ton forum favoris dvp.net s'appelle aussi un curseur.
Je peux pas être plus précis...
Il faut passer en paramètre l'adresse d'un fichier ouvert à un emplacement spécifique.
La fonction attend un pointeur unsigned char* correspondant à cela...
Sauf qu'une adresse de fichier, on ne voit pas ce que c'est. En windows natif, pour les fichiers on utilise des handles (et ça, tu peux le récupérer en .NET via les propriétés FileHandle et SafeFileHandle) et c'est peut être ça qu'attend ta foncition, mais comme on a pas de boule de cristal, il est difficile d'en dire plus.
hhmm je vois ce que tu veux dire...
Tu me mets le doute sur les paramètres à envoyer du coup.
Ça peut pas être le handler parce qu'il est bien décrit dans la fonction que le pointeur attendu par celle-ci correspond à la position où celle-ci doit écrire dans le fichier.
Je répète mais c'était pensé pour du c++ cette fonction à la base. Du coup je pense qu'il était prévu d'ouvrir un streamWriter en binaire et de renvoyer l'adresse de ce flux lorsqu'il est positionné au bon endroit dans le fichier...
Problème en c# :
Code:Impossible de prendre l'adresse, d'obtenir la taille ou de déclarer un pointeur vers un type managé ('System.IO.FileStream')
C'est bon t'avais raison au final... Y avait bien un petit quiproco par rapport à la spec qui m'avait été donné de la dll en question :aie:
Elle attendait en faite un buffer contenant le fichier et l'offset de l'octet à modifier... J'y ai repassé l'aprèm en passant mon fichier dans un buffer et tout roule :ccool:
Merci pour ton aide