elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: AIO elhacker.NET 2021 Compilación herramientas análisis y desinfección malware


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP)
| | | |-+  Programación Visual Basic (Moderadores: LeandroA, seba123neo)
| | | | |-+  problema al pasar una struct de C++
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: problema al pasar una struct de C++  (Leído 2,324 veces)
el_c0c0


Desconectado Desconectado

Mensajes: 307


Ver Perfil
problema al pasar una struct de C++
« en: 31 Marzo 2009, 00:34 am »

Estoy haciendo un plugin para winamp... tengo el SDK (que en realidad no es muy explicativo, pero sirve)
En fin, es una DLL no ActiveX, hasta ahi todo en orden.
Para que el Winamp la tome como General Purpose Plugin, el nombre tiene que empezar con gen_xxxxxxx.dll y exportar "winampGetGeneralPurposePlugin".
Hasta aca sigue todo en orden, exporta eso y todo bien.
Referiendonos a esa funcion, debe devolver un puntero hacia una estructura que luego el Winamp recorre para obtener las direcciones de las 3 funciones principales: init, config y quit.
La estructura en C++ es asi:
Código
  1. typedef struct {
  2. int version;
  3. char *description;
  4. int (*init)();        //me imagino que es un puntero a la funcion INIT
  5. void (*config)(); //lo mismo, pero para config
  6. void (*quit)();    //y para quit lo mismo
  7. HWND hwndParent;
  8. HINSTANCE hDllInstance;
  9. } winampGeneralPurposePlugin;

y yo de alguna manera la traduci a VB6:
Código
  1. Public Type winampGeneralPurposePlugin
  2.    version As Long
  3.    descrpition As Long 'probe con String, pero igual explota
  4.    init As Long
  5.    config As Long
  6.    quit As Long
  7.    hwndParent As Long
  8.    hDllInstance As Long
  9. End Type
(si es muy estupido, todo long)

Volviendo al tema, el Winamp llama a la direccion que le paso yo en Init, pero si esa funcion devuelve 0 (como deberia segun el SDK y otros plugins) el Winamp explota. Si devuelvo otro numero, tipo 1 o -1, el Winamp se encarga de descargar la DLL...

Ademas, description si le paso strptr() hace lo mismo.. nose donde puede estar el problema..

Por si preguntan, carga la dll, llama a las funciones y esta todo debugueado por eso les puedo asegurar que hasta que no retorna nada Init, funciona.


saludos


En línea

'-     coco
"Te voy a romper el orto"- Las hemorroides
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Problema con struct
Programación C/C++
Luchoz95 6 2,629 Último mensaje 27 Marzo 2013, 01:37 am
por durasno
[Duda] Pasar struct por referencia
Programación C/C++
jaxoR 9 5,938 Último mensaje 27 Agosto 2014, 02:50 am
por rir3760
Problema al compilar con struct
Programación C/C++
romybe 2 1,888 Último mensaje 5 Diciembre 2014, 04:04 am
por leobr6
pasar datos a una struct
Programación C/C++
flony 6 4,457 Último mensaje 30 Enero 2015, 16:57 pm
por flony
PROBLEMA!!! algoritmo conversor de struct a int, me devuelve 0
Programación C/C++
pablombf 3 2,178 Último mensaje 2 Enero 2018, 21:40 pm
por pablombf
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines