modification d'une struct managée par un filtre directshow [Résolu] - C#/.NET managed - Programmation
Marsh Posté le 11-08-2006 à 15:30:15
Question bête (on sait jamais) : tu as bien fait un 'new' pour créer ta structure ?
Si oui, on peut voir le prototype de ta fonction et le code que tu utilises quand tu l'appelles ?
Oui, tu peux faire du code non-managé dans du code managé, mais c'est déconseillé. voir le mot-clef 'unsafe'.
Marsh Posté le 11-08-2006 à 15:58:48
Code :
|
Marsh Posté le 11-08-2006 à 16:00:06
mpff le systeme runtime qui traine c'est rien, je remet le code
sinon, le prototype est indiqué dans l idl
Code :
|
Marsh Posté le 18-08-2006 à 13:59:42
en fait le probleme venait de tout autre chose (nouveau topic)
Marsh Posté le 11-08-2006 à 15:07:27
Je travaille actuelelment en C# sur un logiciel qui utlise directshow pour construire des graphes de filtres et traiter des fichiers multimédias. Etant donné que je récupère un travail existant, je ne suis pas tout à fait libre des choix d'implémentation et je suis donc soumis à certaines contraintes. Des filtres directshow ont été développés, il s'agit donc d'objets COM. J'utilise la librairie open source DirectShowNet comme interface avec les objets COM. Une interface a été développée pour communiquer avec le filtre et récupérer quelques informations, j'ai donc complété directshownet avec les informations de cette interface en IDL pour pouvoir l'utiliser. Une de ces fonctions me pose problème. En effet, elle passe en paramètre une structure que l'objet COM doit initialiser correctement, pour que je puisse récupérer les informations qu'elle contient dans le code C#.
Puisque la structure doit être crée avant d'être envoyée, j'ai indiqué ce paramètre comme étant In et placé en référence. Le problème est que, lorsque j'utilise cette fonction, le hr code rendu correspond à une erreur de type pointeur null, donc l'objet COM se retrouve avec un _dllResult null alors qu'il a bien été créé côté C#. Je me demande donc si l'objet COM a bien accès à la mémoire managée de mon programme C#, et si ce n'est pas le cas, comment pourais-je faire pour utiliser cette fonction ? Serait il possible de créer un objet non managé dans le code C# ?
Message édité par eld le 18-08-2006 à 14:14:53