Pregunta

Necesito hacer una inyección de proceso usando C ++, pero preferiría usar C # para todo lo que no sea el nivel bajo. He oído hablar de "ajuste de funciones" y "cálculo de referencias" y he buscado bastante en Google y he encontrado información aquí y allá, pero todavía me falta.

Cosas que he leído en orden de utilidad;
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

¿Cómo puedo envolver todas las cosas de nivel inferior (C ++ nativo) en C # para poder controlar fácilmente esas funciones en un lenguaje con el que me sienta más cómodo, C #?

Cualquier información sobre el tema es muy apreciada.

¿Fue útil?

Solución

Creo que P / Invoke es realmente el enfoque más directo:

  • Cree una DLL en no administrado C ++, que contenga toda la funcionalidad que necesita para realizar la inyección.
  • En su código C #, declare algunos métodos static extern , y use el atributo DllImport para señalarlos a su dll C ++. Para obtener más detalles, consulte el enlace proporcionado por arul en su respuesta .

Tenga en cuenta que P / Invoke no se limita a " funciones API de Windows " & # 8212; puede llamar a funciones expuestas por cualquier DLL nativo.

Una desventaja potencial de P / Invoke es que tendrá que proporcionar las firmas para sus funciones de C ++, posiblemente especificando algunas referencias menos que obvias. En ese caso, podría considerar construir un servidor COM en lugar de un "plano". DLL, y usando interoperabilidad COM para llamar a su código de C #.

Otros consejos

Desea utilizar P / Invoke, consulte MSDN Magazine .

Si Pinvoking no es lo que quieres hacer, crea una aplicación C ++ administrada. Use C ++ nativo para hacer el proceso de inyección. Use c ++ administrado para crear una interfaz amigable con .NET para este comportamiento nativo. Esto se puede llamar desde C #.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top