Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > C++ Builder
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

 
 
Herramientas Buscar en Tema Desplegado
  #3  
Antiguo 20-05-2020
Avatar de aguml
aguml aguml is offline
Miembro
 
Registrado: may 2013
Posts: 885
Poder: 14
aguml Va por buen camino
Gracias, me está sirviendo de ayuda aunque esto va para largo ya que una vez me compile tendré que revisar todo y ver como funciona cada cosa y estudiar como funcionan en x64 porque hay muchas que seguramente no coincidan con el funcionamiento de x32.
Tengo ahora mismo tres problemas/dudas:
1-No se que pasa con el tipo CONTEXT que si hago por ejemplo
Código PHP:
CONTEXT con;
con
el único método que sale es operator= y no aparecen ni los registros, ni flags ni nada de esa estructura. Estuve viendo que por internet decian que era por no tener el SDK y no lo tenia porque al instalarlo desde el instalador de RAD 10.3 Rio me daba error diciendo que no se podía conectar a internet o algo así por lo que me lo descargué directamente de Microsoft y lo añadí desde Tools->Options...->Deployment->SDK Manager y no tuve problemas al hacerlo pero sigo teniendo el mismo problema de que no puedo trabajar con el contenido de la estructura CONTEXT. He hecho clic derecho sobre CONTEXT y buscado su declaración y me sale en winnt.h toda la estructura pero sin embargo no puedo usarla T.T
Código PHP:
typedef struct DECLSPEC_ALIGN(16_CONTEXT {

    
//
    // Register parameter home addresses.
    //
    // N.B. These fields are for convience - they could be used to extend the
    //      context record in the future.
    //

    
DWORD64 P1Home;
    
DWORD64 P2Home;
    
DWORD64 P3Home;
    
DWORD64 P4Home;
    
DWORD64 P5Home;
    
DWORD64 P6Home;

    
//
    // Control flags.
    //

    
DWORD ContextFlags;
    
DWORD MxCsr;

    
//
    // Segment Registers and processor flags.
    //

    
WORD   SegCs;
    
WORD   SegDs;
    
WORD   SegEs;
    
WORD   SegFs;
    
WORD   SegGs;
    
WORD   SegSs;
    
DWORD EFlags;

    
//
    // Debug registers
    //

    
DWORD64 Dr0;
    
DWORD64 Dr1;
    
DWORD64 Dr2;
    
DWORD64 Dr3;
    
DWORD64 Dr6;
    
DWORD64 Dr7;

    
//
    // Integer registers.
    //

    
DWORD64 Rax;
    
DWORD64 Rcx;
    
DWORD64 Rdx;
    
DWORD64 Rbx;
    
DWORD64 Rsp;
    
DWORD64 Rbp;
    
DWORD64 Rsi;
    
DWORD64 Rdi;
    
DWORD64 R8;
    
DWORD64 R9;
    
DWORD64 R10;
    
DWORD64 R11;
    
DWORD64 R12;
    
DWORD64 R13;
    
DWORD64 R14;
    
DWORD64 R15;

    
//
    // Program counter.
    //

    
DWORD64 Rip;

    
//
    // Floating point state.
    //

    
union {
        
XMM_SAVE_AREA32 FltSave;
        
struct {
            
M128A Header[2];
            
M128A Legacy[8];
            
M128A Xmm0;
            
M128A Xmm1;
            
M128A Xmm2;
            
M128A Xmm3;
            
M128A Xmm4;
            
M128A Xmm5;
            
M128A Xmm6;
            
M128A Xmm7;
            
M128A Xmm8;
            
M128A Xmm9;
            
M128A Xmm10;
            
M128A Xmm11;
            
M128A Xmm12;
            
M128A Xmm13;
            
M128A Xmm14;
            
M128A Xmm15;
        } 
DUMMYSTRUCTNAME;
    } 
DUMMYUNIONNAME;

    
//
    // Vector registers.
    //

    
M128A VectorRegister[26];
    
DWORD64 VectorControl;

    
//
    // Special debug control registers.
    //

    
DWORD64 DebugControl;
    
DWORD64 LastBranchToRip;
    
DWORD64 LastBranchFromRip;
    
DWORD64 LastExceptionToRip;
    
DWORD64 LastExceptionFromRip;
CONTEXT, *PCONTEXT
2-Tengo varios TList los cuales uso para guardar cosas como datos de DLLs, BPs, HBPs... los cuales cuando ya no lo necesito tengo que liberar toda esa memoria y en x32 lo tenia así:
Código PHP:
delete ListaBPs->Items[pos];
ListaBPs->Delete(pos); 
En la primera linea, donde intento liberar la memoria del item, me da el siguiente Warning:
Código:
[bcc64 Warning] THiloDebugger.cpp(1839): cannot delete expression with pointer-to-'void' type 'void *'
No se si tengo que preocuparme o no por esa advertencia.

3-No me acepta la estructura __try catch(...), en su lugar he tenido que usar __try __except(EXCEPTION_EXECUTE_HANDLER)
¿hay alguna diferencia entre uno y otro? y por otro lado ¿que diferencia hay entre __try catch(...) y try catch(...)?
Ahora mismo los tengo así:
Código PHP:
void __fastcall TAntiAntiDebug::DeactiveInvalidHandle(bool estado)
{
        
__try{
                if(
HiloDepuracion != NULL)
                        
HiloDepuracion->DeactiveInvalidHandle(estado);
        }
__except(EXCEPTION_EXECUTE_HANDLER){
        }

Pero no se si con un try catch(...) bastaría.

Última edición por aguml fecha: 20-05-2020 a las 10:54:54.
Responder Con Cita
 



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Aportación del código de un stored procedure para conversión literal de números birmain Firebird e Interbase 12 16-07-2015 19:12:29
Problemas con el codigo SQL Vales08 SQL 26 13-01-2012 03:05:46
Conversión de código altp .NET 2 10-06-2008 12:22:36
problemas de conversión a PDF con ReportBuilder y TExtraDevices agustibaldo Impresión 10 06-07-2007 14:52:41
problemas de conversion... User_baja1 Varios 2 30-08-2005 13:45:58


La franja horaria es GMT +2. Ahora son las 20:38:45.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi