Pages vues depuis 25/07/2007 : 25 256 274
Index du forum »» OS4 sur AmigaOne X5000 »» A la recherche de RAM disparue
Et encore si on enlève les tests de bon fonctionnement et autres de l'exemple du WIKI on a que ça qui fait le boulot:
// init du programme: on crée un gros bloc mémoire de la taille blocksize64 au delà des 2 Go
iextmem = AllocSysObjectTags(ASOT_EXTMEM, ASOEXTMEM_Size, &blocksize64, ASOEXTMEM_AllocationPolicy, EXTMEMPOLICY_IMMEDIATE, TAG_END);
// adresse de la fenêtre sur le gros bloc commençant à l'offset windowoffset64 et de la taille windowsize32
data = iextmem->Map(0,windowsize32, windowoffset64, 0);
// là on modifie les données du bloc en lecture ou écriture comme on veut
x=data[100];
y=data[101];
data[10]=100;
data[12]=200;
etc...
// on relâche la mémoire
iextmem->Unmap(data, windowsize32);
// on a fini le programme on libère le gros bloc mémoire
FreeSysObject(ASOT_EXTMEM,iextmem);
Il semblerait que NetSurf les utilise aussi
Utiliser ce procédé permet aussi de pas utiliser la mémoire sous les 2 Go et donc d'en laisser plus aux autres applis moins malines
SketchBlock et NetSurf l'utilisent de la même manière : avec des blocs pouvant tenir dans une seule fenêtre (cad windowsize32=blocksize64 )