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;
#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;
#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;
}
Cita de: e-spy 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
"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 (http://www.dependencywalker.com/).
Pero en el caso de ConnectAnyUSB tendria que ser asi:
#include <windows.h>
typedef void(__stdcall *ConnectAnyUSB_ptr)(DWORD nMaxTimeoutMs, DWORD nResetTimeOutMs);
int main()
{
HINSTANCE hDll = LoadLibrary("midll.dll"); // carga la dll
ConnectAnyUSB_ptr ConnectAnyUSB_fn = (ConnectAnyUSB_ptr)GetProcAddress(hDll, "ConnectAnyUSB"); //obtiene el puntero
ConnectAnyUSB_fn(50, 10); // ejecuta la funcion
FreeLibrary(hDll);
return 0;
}
PD. Si la funcion Wipe necesita un parametro boolean entonces arregla el codigo siguiendo la logica del anterior.
Me da un error en tiempo de ejecucion... como podria usar las funciones de la DLL... :(
Fijate que devuelven LoadLibrary y GetProcAddress en primer lugar.
Aqui lo que se de la DLL
//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.