1

Je veux extraire un fichier d'un pack.

ExtractFile me convient pas trop, parce que si on a deux packs du même programme dans des versions différentes, alors je suppose que si le pack de version inférieure est dans un répertoire situé avant celui qu'on veut via SymFindNext, le mauvais pack sera choisi.

ExtractFromPack demande un pointeur sur la signature du pack, et j'aime pas trop aller chercher cette adresse à la main, le kernel ne proposant aucune fonction d'accès. Et ça demande de trouver manuellement le pack archive, ce qui soulève un autre problème (cf ci-dessous).

ExtractFileFromPack me semble mieux, c'est de plus haut niveau, mais il reste un problème. Si le nom du pack a été changé (ou pire, si un autre pack porte le nom du pack d'origine), comment faire pour le trouver dans le répertoire courant ? Impossible d'utiliser kernel::Ptr2Hd, on aura le handle du fichier en cours d'exécution et non celui du pack (je fais ça à partir du premier fichier du pack, donc il aura été extrait et relogé si le pack est archivé).

Comment faire proprement, ie extraire le bon fichier du bon pack ?

2

Comment en fait peut faire un fichier pour déterminer de quel pack il provient ? C'est plutôt ça la vraie question.

3

Utilises un fichier checksum dans ton pack que tu compareras avec le fichier que tu veux extraire tongue

4

En fait t'as pas de solution quoi grin Fais plutôt une fonction d'accès propre dans le kernel : kernel::GetOrgPack tongue
Le plus simple en l'occurence reste d'utiliser un magic il me semble, mais j'aime pas ce type de méthode. J'aime bien le 200% safe et j'aime pas hacker.

(ah oué puis en plus faut changer le magic à chaque version triso)

5

Au fait sous AMS, si j'utilise pedrom::printf avec la lib perdom compressée dans le pack, le kernel ira chercher la lib ? Ou faut-il nécessairement faire un LibsBegin ?

6

Oui, non

7

Cool. happy