6Fermer8
FarewellLe 05/11/2013 à 16:41
Voilà, de mon côté, je pensais à ça en fait :
short kernel__hd2full(HANDLE h, char buffer[18])
{
    SYM_ENTRY* se;

    SymFindFirst (NULL, FO_RECURSE);

    do
    {
        se = SymFindNext ();

        if (!se)
            return 0;

    } while (se.handle != h);

    return sprintf (buffer, "%s\%s", SymFindFolderName (), se);
}

Ca me parait plus rapide, et la validité du résultat est garantie par le TIOS, il n'y a qu'une erreur possible (le handle n'appartient pas à un fichier, ou n'est pas alloué).
En effet, les deux kernel::Hd2Sym font chacun un SymFindFirst/SymFindNext, et le kernel::Ptr2Hd fait carrément un lookup de la table des handles, avec calcul de l'adresse de fin du handle.