Vale, el problema no era ese porque mi condicional, aunque algo menos eficiente, tambien era válido. Al final ha quedado así:
Código:
if((ExceptionAccess.LastExceptionTypeOnMBP == 0 && (Dbg->MemoryBP.Type == int(ON_ACCESS) ||
(Dbg->MemoryBP.Type == int(ON_EXECUTION) &&
(ExceptionAccess.LastExceptionAddressOnMBP >= ExceptionAccess.LastExceptionAccessAddressOnMBP) &&
(ExceptionAccess.LastExceptionAddressOnMBP <= ExceptionAccess.LastExceptionAccessAddressOnMBP)))) ||
(ExceptionAccess.LastExceptionTypeOnMBP == 1 && Dbg->MemoryBP.Type == int(ON_WRITE)))
{
OnMemoryBPEventThread();
}
El problema estaba en que las constantes que defino, por alguna razón, no funcionan bien sin el cast ese que le pongo. ¿No hay manera de crear esas constantes usando #define y que se creen como enteros para no tener que hacerles cast?