Question

Je dois faire une injection de processus en utilisant C ++, mais je préférerais utiliser C # pour tout ce qui est autre que le matériel de bas niveau. J'ai entendu parler de " function wrapping " et " marshaling " et ont fait un peu de recherche sur Google et ont trouvé des informations ici et là, mais je manque toujours vraiment.

Ce que j'ai lu par ordre d’utilité;
http://msdn.microsoft.com/en-us /library/ms235281(VS.80).aspx
http://www.drdobbs.com/cpp/184401742
http://geeklit.blogspot.com/2006/ 08 / calling-c-lib-from-c.html

Comment insérer tout le contenu de bas niveau (C ++ natif) en C # afin de pouvoir facilement commander ces fonctions dans un langage avec lequel je suis plus à l'aise, le C #?

Toute information sur le sujet est très appréciée.

Était-ce utile?

La solution

Je pense que P / Invoke est vraiment l'approche la plus simple:

  • Créez une DLL en unmanaged C ++, contenant toutes les fonctionnalités nécessaires à l'injection.
  • Dans votre code C #, déclarez des méthodes static extern et utilisez l'attribut DllImport pour les diriger vers votre dll C ++. Pour plus de détails, voir le lien fourni par arul dans sa réponse .

Notez que P / Invoke n'est pas limité aux "fonctions API Windows". - vous pouvez appeler des fonctions exposées par n’importe quelle DLL native.

Un inconvénient potentiel de P / Invoke est que vous devrez fournir les signatures pour vos fonctions C ++, en spécifiant éventuellement un marshalling moins qu'évident. Dans ce cas, vous pouvez envisager de construire un serveur COM au lieu d'un "ordinaire". DLL et en utilisant Interop COM pour appeler votre code de C #.

Autres conseils

Vous souhaitez utiliser P / Invoke, voir MSDN Magazine . .

Si Pinvoking n’est pas ce que vous voulez faire, créez une application C ++ gérée. Utilisez le C ++ natif pour effectuer les opérations d'injection de processus. Utilisez c ++ géré pour créer une interface conviviale .NET pour ce comportement natif. Ceci peut ensuite être appelé à partir de C #.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top