Newsgroup: it.comp.programmare.win32
Titolo: Memoria Video

Ciao ragazzi, c'è qualcuno che sa come fare in C++ a scrivere direttamente
sulla scheda video (A000:0000)?
Ovviamente su piattaforma Winzozz che cerca di mettermi il bastone fra le
ruote con la memoria protetta.
Grazie in anticipo.
Saluti dal Grande VEGETA PRINCIPE DEI SAIYAN
     /\    /\
\_/    \/    \_/



finalmente hai azzeccato il newsgroup esatto...
la risposta é semplice :) non puoi farlo.
xché non puoi farlo?
xché esiste un meccanismo che si chiama protezione della memoria
implementato nei moderni sistemi operativi (sembra detta grossa..
win9x moderno s.o. )
tra l'altro non capisco che necessità abbia tu di scrivere in una
locazione che oramai non viene + usata se non x metterci del kernel di
sistema...
la memoria video non é mappata nella ram, x poter scrivere sul video
ti conviene usare directx  o le primitive di windows
cod

 Subject: 	Memoria Video


mentre nella famiglia NT dovrai scriverti un driver apposito...
Sicuro? Un applicazione win9x non può accedere direttamente
all'hardware.
Cerca di quotare meglio.
-- 
Marco Barisione (ICQ 84277092)


Piu' che altro A000:0000 non e' un indirizzo valido su qualunque Win32...
E' chiaramente un indirizzo a 16 bit (registro:puntatore), mentre sotto Win
i puntatori sono tutti a 32 bit (anche se teoricamente quelli far dovrebbero
essere a 48 ma per motivi ignoti soon anche loro a 32 :-?).
Senza contare che la memoria della scheda video non esiste... O meglio, in
realta' esiste ma non e' a quell'indirizzo.
Magari in Real Mode le schede lo supportano ancora, ma la mia GeForce2 con
il server X per SVGA non funziona, quindi mi sorgono dei dubbi...
Ciaotutti,
*

sotto Win i puntatori sono tutti a 32 bit
Quindi si mette il codice in una dll a 16 bit e la si thunka. E' un 
classico. Anche per l'accesso diretto ai dischi si fa cosě. In NT puoi 
fare tutto tranquillamente a 32 bit, senza usare l'assembler e dall'user 
mode (ecco la differenza tra un accrocco mal riuscito e un vero sistema 
operativo), come spiego in un messaggio precedente. Se vuoi sapere come 
si fa in kernel mode, qui c'č un bel driver VGA semplice semplice:
http://mok.lvcm.com/cgi-bin/reactos/ros-cvs/reactos/services/dd/blue/

 fra le ruote con la memoria protetta.
In NT c'è una sezione di memoria condivisa con path \Device
\PhysicalMemory. Devi aprirla, mapparne la porzione che inizia da 
0xA000000 e intervenire su quella. Vedi 
www.sysinternals.com
 per un 
esempio di come realizzarlo. Attenzione che l'oggetto in questione è 
accessibile solo da Administrators (in sola lettura) e da SYSTEM, se 
vuoi scriverci dovrai anche modificarne la ACL

 operativo),
Vabe', si sentono cose su Win9x che fanno rizzare i capelli...
Pare che gli schermi blu si potessero evitare quasi totalmente, ma per
motivi di marketing non l'abbiano fatto (serviva piu' memoria fisica)...
Spero che non sia vero, altrimenti perche' oggi continuiamo ad avere schermi
blu come se piovessero?
Ciaotutti,
*

 vuoi scriverci dovrai anche modificarne la ACL
Scusa, cosa è la ACL?
Ciao e grazie  Manlio Perillo


Scusa ma se la memoria video non è mappata nella RAM, le directx o le
primitive di windows come ci scrivono sopra? La memoria video è o non è
mappata comunque da qualke parte? E poi lo so ke non sempre A000:0000 è
l'indirizzo della memoria video, ma alcune funzioni dell' INT 0x10 mi
dicono, fra le varie cose, l'indirizzo in cui è mappata.
Saluti dal Grande VEGETA PRINCIPE DEI SAIYAN
     /\    /\
\_/    \/    \_/

Scusa, cosa č la ACL?
Access Control List. La hanno tutti gli oggetti in Windows NT. E' una 
serie di ACE (Access Control Entry), ossia di record che definiscono un 
tipo di accesso all'oggetto (lettura, scrittura, lettura degli 
attributi, ecc.), garantito o negato ad un particolare SID (Security 
Identifier). Nel nostro caso occorre aggiungere all'ACL dell'oggetto 
un'ACE che garantisca accesso in scrittura (GENERIC_WRITE) ad 
Administrators. Per ragioni di sicurezza, occorrerebbe anche eliminare 
questa ACE quando non č piů necessaria

non è mappata comunque da qualke parte?
Non è detto che lo sia nella RAM. In fondo le schede video hanno la 
loro, di RAM