Newsgroup: it.comp.lang.c
Titolo: XMS - Memoria estesa

Ciao a tutto il NG, ho due domande da fare riguardanti l'uso della memoria
estesa.
1) Ho fatto un'applicazione di prova (modalità reale, 16 bit) che alloca una
porzione di memoria e cerca di "lockarla" per potervi accedere. Sotto DOS
tutto funziona correttamente mentre invece sotto Windows 95 il prog non
riesce a lockare la memoria precedentemente allocata. E' un malfunzionamento
"normale"? Esiste qualche controindicazione a far girare un eseguibile che
utilizza l'XMS in modalità V86? O è solo uno dei tanti problemi di Windows?
Quello che succede mi sembra strano perchè vedo molti altri programmi DOS
(il mio compilatore è un esempio) che utilizzano la memoria estesa senza
alcun problema.......
2) La funzione che "locka" una EBM (Extendend Memory Block - Blocco di
memoria estesa) ritorna per puntatore un valore a 32 bit rappresentante
l'indirizzo fisico del blocco in memoria. Lavorando io in modalità reale,
come posso utilizzare questo valore? Dovrei forse passare alla modalità
protetta, ma ciò non avrebbe senso perchè non avrei più bisogno della XMS e
il problema non si porrebbe. Devo trasformare il puntatore nella forma
SEG:OFF? In quest'ultimo caso come faccio?
Grazie in anticipo a tutti coloro che si interesseranno.
Ciao, Giuseppe
PS per Mainardi Gianfranco: queste prove le sto facendo per te, esempio in
lavorazione......
---------------------------------------------------------------------------
_Guybrush su IRCNet canale #programmazione
ICQ: 42227764
---------------------------------------------------------------------------

you wrote :
#1) Ho fatto un'applicazione di prova (modalità reale, 16 bit) che alloca una
#porzione di memoria e cerca di "lockarla" per potervi accedere. Sotto DOS
#tutto funziona correttamente mentre invece sotto Windows 95 il prog non
#riesce a lockare la memoria precedentemente allocata. E' un malfunzionamento
#"normale"? Esiste qualche controindicazione a far girare un eseguibile che
#utilizza l'XMS in modalità V86? O è solo uno dei tanti problemi di Windows?
#Quello che succede mi sembra strano perchè vedo molti altri programmi DOS
#(il mio compilatore è un esempio) che utilizzano la memoria estesa senza
#alcun problema.......
Windows95 non conosce la differenza tra memoria convenzionale e
memoria estesa.
La memoria viene gestita in modalita' protetta e si accede ad essa in
modo lineare.
#2) La funzione che "locka" una EBM (Extendend Memory Block - Blocco di
#memoria estesa) ritorna per puntatore un valore a 32 bit rappresentante
#l'indirizzo fisico del blocco in memoria. Lavorando io in modalità reale,
#come posso utilizzare questo valore? Dovrei forse passare alla modalità
#protetta, ma ciò non avrebbe senso perchè non avrei più bisogno della XMS e
#il problema non si porrebbe. Devo trasformare il puntatore nella forma
#SEG:OFF? In quest'ultimo caso come faccio?
Non c'e' corrispondenza, devi lavorare o in modalita' reale o in
modalita' protetta.
Andrea Laforgia        (
andrea_...@bigfoot.com
)
----------------------------------------------------
There is nothing better for understanding a kangaroo
than seeing it jump.
----------------------------------------------------

modalita' protetta.
Se lavorassi in modalità protetta non avrei più bisogno di utilizzare la
memoria estesa e il problema non si porrebbe. Ma dato che sono in modalità
reale (o V86 sotto Win9x, ma non cambia nulla) mi sembra strano che la
funzione ritorni un indirizzo fisico a 32 bit utilizzabile con un
indirizzamento flat....
Ciao, Giuseppe


you wrote :
#Se lavorassi in modalità protetta non avrei più bisogno di utilizzare la
#memoria estesa e il problema non si porrebbe. Ma dato che sono in modalità
#reale (o V86 sotto Win9x, ma non cambia nulla) mi sembra strano che la
#funzione ritorni un indirizzo fisico a 32 bit utilizzabile con un
#indirizzamento flat....
Scusami, ma sinceramente non capisco la necessita' di utilizzare la
modalita' reale in ambiente Windows.
Con che compilatore produci l'eseguibile ?
........................................................
.                                                      .
. Andrea Laforgia        (
andrea_...@bigfoot.com
) .
.                                                      .
........................................................

Con che compilatore produci l'eseguibile ?
Borland Turbo C++ 1.01 + Tasm 4.0


Io ho scritto tempo fa una libreria di funzioni per il C che permette
di usare la XMS. E' documentata e permette di non scrivere neanche una
riga in ASM. Se ti interessa, scrivimi per posta che ti mando tutto
quanto.
Ciao,
Stefano Costa
^^^^^^^^^^^^^
sco...@enjoy.it
cos...@odino.unipv.it