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

 

 


Tema destacado: Introducción a la Factorización De Semiprimos (RSA)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Usar DLL desde C++
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Usar DLL desde C++  (Leído 9,352 veces)
my_sistemas

Desconectado Desconectado

Mensajes: 65



Ver Perfil WWW
Usar DLL desde C++
« en: 8 Marzo 2011, 02:26 am »

Si yo tengo las funciones de una DLL, una es Wipe y es bolean es decir true o false. y la otra es connect

en DevC++ me lanza un error al momento de querer ejecutarlo

//Wipe
function Wipe(bWipeOS: Bool): HResult; stdcall;

Código:
#include <windows.h>

typedef void(__stdcall *PF)();

int main()
{
HINSTANCE hDll = LoadLibrary("midll.dll"); // carga la dll
PF Wipe = (PF)GetProcAddress(hDll, "Wipe"); //obtiene el puntero
Wipe(); // ejecuta la funcion
FreeLibrary(hDll);
return 0;
}

la funcion seria "wipe" o "wipe 1" o "wipe true" con todas me da un error al ejecutar la funcion.

igualmente cuando quiero utilizar otra funcion q es conect, el cual debe ir acompanado de un timeout es decir:

Conect timeuot, resettimeout

como lo escribiria?

//Connect to Any USB device found
function ConnectAnyUSB(nMaxTimeoutMs: I4; nResetTimeOutMs: I4): HResult; stdcall;

Código:
#include <windows.h>

typedef void(__stdcall *PF)();

int main()
{
HINSTANCE hDll = LoadLibrary("midll.dll"); // carga la dll
PF Conn = (PF)GetProcAddress(hDll, "ConnectAnyUSB 50, 10"); //obtiene el puntero
Conn(); // ejecuta la funcion
FreeLibrary(hDll);
return 0;
}


En línea

cuando uno es grande...
la calidad nunca la pierde...
Eternal Idol
Kernel coder
Moderador
***
Desconectado Desconectado

Mensajes: 5.958


Israel nunca torturó niños, ni lo volverá a hacer.


Ver Perfil WWW
Re: Usar DLL desde C++
« Respuesta #1 en: 9 Marzo 2011, 12:56 pm »

Si yo tengo las funciones de una DLL, una es Wipe y es bolean es decir true o false. y la otra es connect

"es boolean" no dice nada. ¿Tiene un solo parametro que es un boolean? ¿El tipo de retorno es boolean? Entiendo que es lo primero por esta notacion que no es C/C++:

function Wipe(bWipeOS: Bool): HResult; stdcall;

Fijate que devuelven LoadLibrary y GetProcAddress en primer lugar. Para ver los nombres de las funciones exportadas por una DLL podes usar el Dependency Walker.

Pero en el caso de ConnectAnyUSB tendria que ser asi:

Código
  1. #include <windows.h>
  2.  
  3. typedef void(__stdcall *ConnectAnyUSB_ptr)(DWORD nMaxTimeoutMs, DWORD nResetTimeOutMs);
  4.  
  5. int main()
  6. {
  7. HINSTANCE hDll = LoadLibrary("midll.dll"); // carga la dll
  8. ConnectAnyUSB_ptr ConnectAnyUSB_fn = (ConnectAnyUSB_ptr)GetProcAddress(hDll, "ConnectAnyUSB"); //obtiene el puntero
  9. ConnectAnyUSB_fn(50, 10); // ejecuta la funcion
  10. FreeLibrary(hDll);
  11. return 0;
  12. }

PD. Si la funcion Wipe necesita un parametro boolean entonces arregla el codigo siguiendo la logica del anterior.


En línea

La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón
my_sistemas

Desconectado Desconectado

Mensajes: 65



Ver Perfil WWW
Re: Usar DLL desde C++
« Respuesta #2 en: 9 Marzo 2011, 23:47 pm »

Me da un error en tiempo de ejecucion... como podria usar las funciones de la DLL... :(
En línea

cuando uno es grande...
la calidad nunca la pierde...
Eternal Idol
Kernel coder
Moderador
***
Desconectado Desconectado

Mensajes: 5.958


Israel nunca torturó niños, ni lo volverá a hacer.


Ver Perfil WWW
Re: Usar DLL desde C++
« Respuesta #3 en: 10 Marzo 2011, 00:11 am »

Fijate que devuelven LoadLibrary y GetProcAddress en primer lugar.
En línea

La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón
my_sistemas

Desconectado Desconectado

Mensajes: 65



Ver Perfil WWW
Re: Usar DLL desde C++
« Respuesta #4 en: 11 Marzo 2011, 02:10 am »

Aqui lo que se de la DLL

Código:

//BBCFPCOM 1.0 Type Library
Interface ICFPGRSCOM;
GUID = {33CF20BC-B452-4529-B78E-B48E821AF3A8};

  //Connect to Any USB device found
  function ConnectAnyUSB(nMaxTimeoutMs: I4; nResetTimeOutMs: I4): HResult; stdcall;
  //method ConnectToBootrom
  function ConnectToBootrom: HResult; stdcall;
  //Terminate all interfaces
  function Disconnect: HResult; stdcall;
  //Erase files and OS
  function Wipe(bWipeOS: Bool): HResult; stdcall;

Necesito Conectar por USB
luego conectar al Boot Room para liego mandar la funcion Wipe.
En línea

cuando uno es grande...
la calidad nunca la pierde...
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Usar controles desde RES, es posible?
Programación Visual Basic
jmordenata 3 2,065 Último mensaje 28 Marzo 2008, 19:57 pm
por ‭‭‭‭jackl007
Usar CSocketMaster con sub main() desde modulo .bas
Programación Visual Basic
cast0r 4 3,305 Último mensaje 9 Diciembre 2008, 23:42 pm
por katanaia
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines