Bien, creo que esa seria una solucion, antes de leer todo eso. En la funcion OnSAMPQuery si es un Linux quieres que retorne a alguna direccion. Bien colocando una etiqueta que no es mas que un simbolo enrealidad saltas a una direccion, pues pon esa etiqueta donde quieras que salte si es un Linux, para que no cree un ciclo infnito, o lo que sea.
Como ya tengo un lio montado no se si te refieres a esto.
void funcion_original()
{
hook_funcion(); // Esperar a que termine
asm ("_Linux:"); // No se si te refieres a esto, si es un Linux pues que vuelva a la funcion original, despues de la llamada.
// continuamos
}
Si no es asi, puedes colocar esa etiqueta donde quieras que salte, en los if de OnSAMPQuery. Espero que lo entiendas.
Un saludo.