Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1801 connectés 

  FORUM HardWare.fr
  Programmation
  C#/.NET managed

  [Résolu] modification d'une struct managée par un filtre directshow

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Résolu] modification d'une struct managée par un filtre directshow

n°1424424
eld
Posté le 11-08-2006 à 15:07:27  profilanswer
 

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#.

Code :
  1. public struct DLLRESULT
  2.     {
  3.         public string resultName;
  4.     public uint nThresholds;
  5.     public float[] thresholds;
  6.     public float currentValue;
  7.     public uint lastAckStart;
  8.     public uint lastAckEnd;
  9.     }
  10.         [PreserveSig]
  11.         int GetResultInfo(
  12.             [In] uint res,
  13.             [In] ref DLLRESULT _dllResult
  14.             );


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
mood
Publicité
Posté le 11-08-2006 à 15:07:27  profilanswer
 

n°1424443
_Mose_
Lonesome coder
Posté le 11-08-2006 à 15:30:15  profilanswer
 

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'.
 

n°1424483
eld
Posté le 11-08-2006 à 15:58:48  profilanswer
 

Code :
  1. DLLRESULT dllResStruct = new DLLRESULT();
  2.             try
  3.             {
  4.                 //loop to add all the results of the dll to the array, we know when we have all the results because we get an invalidarg exception
  5.                 while (i < OneDllResults.maxResNum)
  6.                 {System.Runtime.InteropServices.
  7.                     hr = filter.GetResultInfo(i, ref dllResStruct);
  8.                     DsError.ThrowExceptionForHR(hr);

n°1424486
eld
Posté le 11-08-2006 à 16:00:06  profilanswer
 

mpff le systeme runtime qui traine c'est rien, je remet le code :p
sinon, le prototype est indiqué dans l idl

Code :
  1. DLLRESULT dllResStruct = new DLLRESULT();
  2.             try
  3.             {
  4.                 //loop to add all the results of the dll to the array, we know when we have all the results because we get an invalidarg exception
  5.                 while (i < OneDllResults.maxResNum)
  6.                 {
  7.                     hr = filter.GetResultInfo(i, ref dllResStruct);
  8.                     DsError.ThrowExceptionForHR(hr);

n°1427198
eld
Posté le 18-08-2006 à 13:59:42  profilanswer
 

en fait le probleme venait de tout autre chose (nouveau topic)


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C#/.NET managed

  [Résolu] modification d'une struct managée par un filtre directshow

 

Sujets relatifs
[RESOLU] Aide passage asp en php[RESOLU] Pb de div hidden (code de solution en ligne)
[RESOLU] Itext - Mise en page et outils formulaire[résolu] Problème réplication MySQL
[c#] [résolu] help overloaded[Résolu] - help FOR tokens=1,2* et le caractére *
[résolu]Comment passer plusieurs arg. à Property Let[VBA-E] [Résolu] Copier une valeur provenant d'un autre classeur
ldap - filtre[Résolu] [Algo] Stabilisation et Système du premier ordre
Plus de sujets relatifs à : [Résolu] modification d'une struct managée par un filtre directshow


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR