Trabajar con Funciones de DLL

Iniciado por my_sistemas, 12 Marzo 2011, 00:37 AM

0 Miembros y 1 Visitante están viendo este tema.

my_sistemas

Buenos dias, como dije anteriormente dicha libreria no es mia, lo que pude analizar es lo siguiente:


//BBCFPCOM 1.0 Type Library
//Version: 1.0
BBCFPCOMLib;
GUID = {C2CFDD51-0603-4889-9FF5-B943AA46118B};


Enum CFP_TYPE;
  CFP_TYPE_NORMAL = 0;
  CFP_TYPE_PATRIOT = 1;
  CFP_TYPE_EDW = 2;
  CFP_TYPE_RMA = 3;
  CFP_TYPE_STP = 4;
  CFP_TYPE_BRL = 5;

//ICFPEvents Interface
Interface _ICFPEvents;
GUID = {E219CDC3-58B9-4FF5-BC61-6295E378208E};
  //method OnProgress
  function OnProgress(bstrCode: BSTR; nPercent: I4; ulExtraInfo: UI4): HResult; stdcall;
  //method OnDebugMessage
  function OnDebugMessage(nLogLevel: I4; bstrMessage: BSTR): HResult; stdcall;
  //method OnNeedPassword
  function OnNeedPassword(nTriesRemaining: I4; out password: ^BSTR): HResult; stdcall;

//CFPGRSCOM Class
CoClass CFPGRSCOM;
GUID = {3B5626A7-724D-4F17-A980-002FDC26B567};

//BBCFPCOM 1.0 Type Library
Interface ICFPGRSCOM;
GUID = {33CF20BC-B452-4529-B78E-B48E821AF3A8};
  //Connect via COM port
  function Connect(nComport: I4; nConnectBaudRate: I4; nMaxTimeoutMs: I4; nResetTimeOusMs: I4): HResult; stdcall;
  //Connect to Any USB device found
  function ConnectAnyUSB(nMaxTimeoutMs: I4; nResetTimeOutMs: I4): HResult; stdcall;
  //Connect USB device using a specific property
  function ConnectUSB(bstrProperty: BSTR; bstrValue: BSTR; nMaxTimeoutMs: I4; nResetTimoeOutMs: I4): HResult; stdcall;
  //method ConnectToBootImage
  function ConnectToBootImage: HResult; stdcall;
  //method ConnectToBootrom
  function ConnectToBootrom: HResult; stdcall;
  //ReloadPlantImage - SFI
  function ReloadPlantImage(bstrFileName: BSTR): HResult; stdcall;
  //ReloadPlantImageWithPatriot - MFI
  function ReloadPlantImageWithPatriot(bstrFileName: BSTR): HResult; stdcall;
  //method ReloadFileSystem
  function ReloadFileSystem(bstrFileName: BSTR): HResult; stdcall;
  //method SaveFileSystem
  function SaveFileSystem(bstrFileName: BSTR; bVerifyToAPP: Bool): HResult; stdcall;
  //Terminate all interfaces
  function Disconnect: HResult; stdcall;
  //Signal any in-process commands to abort
  function Abort: HResult; stdcall;
  //method GetCFPVersion
  function GetCFPVersion(out pulCFPver: ^UI4): HResult; stdcall;
  //method GetBootromInfo
  function GetBootromInfo(out pulBRver: ^UI4; out pbSecurityEnabled: ^Bool): HResult; stdcall;
  //method PatriotConnectToTunnel
  function PatriotConnectToTunnel: HResult; stdcall;
  //method PatriotGetInfo
  function PatriotGetInfo(out pulPATver: ^UI4; out pulTunnelver: ^UI4; out pbBatteryVoltageOk: ^Bool): HResult; stdcall;
  //method PatriotDisconnect
  function PatriotDisconnect: HResult; stdcall;
  //method PatriotLastLoadSuccessful
  function PatriotLastLoadSuccessful(out pbSuccess: ^Bool): HResult; stdcall;
  //method PatriotLoadImage
  function PatriotLoadImage(bstrFileName: BSTR): HResult; stdcall;
  //method PatriotGetOSVersionOfFile
  function PatriotGetOSVersionOfFile(bstrFileName: BSTR; out pulOSver: ^UI4): HResult; stdcall;
  //method GetOSVersionOfSFI
  function GetOSVersionOfSFI(bstrFileName: BSTR; out pulOSver: ^UI4): HResult; stdcall;
  //method GetCOMBuildVersion
  function GetCOMBuildVersion(out pbstrVersion: ^BSTR): HResult; stdcall;
  //method ReloadOS
  function ReloadOS(bstrFileName: BSTR): HResult; stdcall;
  //Erase files and OS
  function Wipe(bWipeOS: Bool): HResult; stdcall;
  //Erase files/OS and passwords
  function NukeDevice: HResult; stdcall;
  //Erase the Appstore
  function SuperNukeDevice: HResult; stdcall;
  //Toast the device
  function ToastDevice(bstrPassword: BSTR): HResult; stdcall;
  //method HeadInTheSandMode
  function HeadInTheSandMode(bChangeMode: Bool; out pbHISMode: ^Bool): HResult; stdcall;
  //method GetFlashSizeInBytes
  function GetFlashSizeInBytes(out pulFlashSizeBytes: ^UI4): HResult; stdcall;
  //method GetPlatformID
  function GetPlatformID(out pulPID: ^UI4; out pbstrDeviceString: ^BSTR): HResult; stdcall;
  //method GetVendorID
  function GetVendorID(out pnVendorID: ^UI2): HResult; stdcall;
  //method GetSFIOSVersionPlatID
  function GetSFIOSVersionPlatID(bstrFileName: BSTR; out pulOSver: ^UI4; out pulPlatID: ^UI4): HResult; stdcall;
  //method GetVersionOfAPPfile
  function GetVersionOfAPPfile(bstrFileName: BSTR; out pbstrAPPversion: ^BSTR; out pbVersionValid: ^Bool; out pbstrAppNumber: ^BSTR; out pbNumberValid: ^Bool): HResult; stdcall;
  //method GetSupportedBands
  function GetSupportedBands(out pulBands: ^UI4): HResult; stdcall;
  //method GetCOMBuildVersionID
  function GetCOMBuildVersionID(out pulVersion: ^UI4): HResult; stdcall;
  //Invoke a custom method
  function InvokeMethod(bstrMethod: BSTR; out pulParam: ^UI4; out pbstrParam: ^BSTR): HResult; stdcall;
  //property ConnectType
  property-get ConnectType(out pVal: ^CFP_TYPE): HResult; stdcall;
  //property ConnectType
  property-put ConnectType(pVal: CFP_TYPE): HResult; stdcall;
  //method GetPatriotVersion
  function GetPatriotVersion(out pbstrPatVersion: ^BSTR): HResult; stdcall;
  //method PatriotGetOSVersionOfFileStr
  function PatriotGetOSVersionOfFileStr(bstrFileName: BSTR; out pbstrPatVer: ^BSTR): HResult; stdcall;
  //method PatriotInBerbugMode
  function PatriotInBerbugMode(out pbBerbugMode: ^Bool): HResult; stdcall;
  //method SetConnectValues
  function SetConnectValues(nMaxTimeoutMs: I4; bIncremental: Bool): HResult; stdcall;
  //method GetOSVersionOfSFIEx
  function GetOSVersionOfSFIEx(bstrFileName: BSTR; out pulOSver: ^UI4; out pbstrOSver: ^BSTR): HResult; stdcall;
  //method ResetPatriot
  function ResetPatriot: HResult; stdcall;
  //method WhoAmI
  function WhoAmI(bstrWhoAmI: BSTR): HResult; stdcall;
  //Load Bootrom Binary
  function LoadBootrom(bstrFileName: BSTR): HResult; stdcall;
  //MassStorage
  function SetMassStorage(nOn: I4): HResult; stdcall;


No tengo mas informacion de dicha libreria. Ya un companero lo pudo hacer funcionar en Linux en C++, como podria obtener yo que funciones hace cada funcion???
cuando uno es grande...
la calidad nunca la pierde...

my_sistemas

#11
Despues de indagar, y ver muchos comentarios de que no se puede obtener el source que se ejecuta en cada evento, me dijeron que si se posia pero en assembler, es decir, se puede programar en Assembler "orientado a objetos", gracias a Ildasm.exe me explico.


ildasm, desensambla tu dll o ejecutable, te genera código ensamblador (CIL), puedes modificar el código, agregar o quitar instrucciones, y enseguida con ilasm volver a generar el ejecutable con los cambios realizados. Son herramientas que proporciona el Visual Studio y Mono, ni siquiera tienes que descargar otros programas, más que el propio framework


Entonces segun me dicen con el Ilsdam se puede ver lo que hace cada funcion en ensamblador y se puede agregar eso en VB.NET???

Por favor confirmenme esa teoria? de todas maneras ya estoy descargando .NT Framework 4 (que es dodne viene incluido Ildasm.exe)
cuando uno es grande...
la calidad nunca la pierde...

my_sistemas

#12
Listo el Ildasm me hizo el volcado de lA DLL y me dio lo siguiente


// Muchas lineas de codigo borradas



--------------------- EDITADO-------------

Disculpen por poner tanto codigo, subi el TXT a mi server. para verlo click aqui:

http://www.mysistemas.com/volcado2.txt
cuando uno es grande...
la calidad nunca la pierde...

my_sistemas

#13
Listo el Ildasm me hizo el volcado de lA DLL y me dio lo siguiente


// Muchas lineas de codigo borradas



--------------------- EDITADO-------------

Disculpen por poner tanto codigo, subi el TXT a mi server. para verlo click aqui:

http://www.mysistemas.com/volcado2.txt
cuando uno es grande...
la calidad nunca la pierde...

my_sistemas

cuando uno es grande...
la calidad nunca la pierde...