Cómo crear real-el modo de memoria baja punteros.
Colaborador: LEOPOLDO SALDANHA
{Aquí está el código que he prometido a enviado. El funcionamiento es bueno. Usted puede leer
cualquier parte de la real-el modo de memoria baja con él.}
función allocRealModePointer(var P: puntero Tamaño: longInt): boolean
var
& nbsp & nbsp Selector,
& nbsp & nbsp base : word
& nbsp & nbsp LinearBase : longint
begin
& nbsp & nbsp resultado := false
& nbsp & nbsp LinearBase := MakeLong(0,hiword(longint(p)) shr de 12)
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp hiword(longint(P)) shl 4 loword(longint(P))
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp {convierte dirección de 20 bits en una de 32-bits}
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp {es decir, $ffff:0006 en $000ffff6}
& nbsp & nbsp: Selector= AllocSelector(DSeg) {Copias DSeg Selector de propiedades }
& nbsp & nbsp base := SetSelectorBase(Selector, LinearBase)
& nbsp & nbsp SetSelectorLimit(Selector de Tamaño)
& nbsp & nbsp si (Selector <> 0) y (base<>0) then begin
& nbsp & nbsp & nbsp & nbsp P := Ptr(Selector, 0)
& nbsp & nbsp & nbsp & nbsp resultado := true
& nbsp & nbsp final
fin
función freeRealModePointer(var p: puntero): boolean
var
& nbsp & nbsp fr : Word
begin
& nbsp & nbsp fr := FreeSelector(hiword(longint(p)))
& nbsp & nbsp {seletor es en hiword(p)}
& nbsp & nbsp si (fr=0) then begin {aceptar}
& nbsp & nbsp & nbsp & nbsp p := nil
& nbsp & nbsp & nbsp & nbsp resultado := true
& nbsp & nbsp end else begin{fallar}
& nbsp & nbsp & nbsp & nbsp resultado := false
& nbsp & nbsp final
fin
{ código de La Prueba: el de la Rom-Bios' fecha es siempre a $ffff:0005 (modo real)}
var
& nbsp & nbsp P: pChar
begin
& nbsp & nbsp P := Ptr($FFFF, $0005) {FFFF5 -> datos da de la Rom-Bios}
& nbsp & nbsp si AllocRealModePointer(Puntero(p), 8), entonces {8 caracteres a RomBios' date}
& nbsp & nbsp empezar
& nbsp & nbsp & nbsp & nbsp { Utilice p para leer ROM de la Bios' fecha aquí}
& nbsp & nbsp & nbsp & nbsp FreeRealModePointer(Puntero(p)) {dispose p}
& nbsp & nbsp final
final.
El modo Real de windows
El modo Real de windows : Multi-millones de consejos para hacer su vida mas facil.
Como crear real-el modo de memoria baja punteros.
Colaborador: LEOPOLDO SALDANHA
{Aqui esta el codigo que he prometido a enviado. El funcionamiento es bueno. Usted puede leer
cualquier parte de la real-el modo de memoria baja con el.}
funcion allocRealModePointer(var P: puntero Tamaño: longInt): boolean
var
& nbsp & nbsp Selector,
& nbsp & nbsp base : word
& nbsp & nbsp LinearBase : longint
begin
& nbsp & nbsp resultado := false
& nbsp & nbsp LinearBase := MakeLong(0,hiword(longint(p)) shr de 12)
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp hiword(longint(P)) shl 4 loword(longint(P))
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp {convierte direccion de 20 bits en una de 32-bits}
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp {es decir, $ffff:0006 en $000ffff6}
& nbsp & nbsp: Selector= AllocSelector(DSeg) {Copias DSeg Selector de propiedades }
& nbsp & nbsp base := SetSelectorBase(Selector, LinearBase)
& nbsp & nbsp SetSelectorLimit(Selector de Tamaño)
& nbsp & nbsp si (Selector <> 0) y (base<>0) then begin
& nbsp & nbsp & nbsp & nbsp P := Ptr(Selector, 0)
& nbsp & nbsp & nbsp & nbsp resultado := true
& nbsp & nbsp final
fin
funcion freeRealModePointer(var p: puntero): boolean
var
& nbsp & nbsp fr : Word
begin
& nbsp & nbsp fr := FreeSelector(hiword(longint(p)))
& nbsp & nbsp {seletor es en hiword(p)}
& nbsp & nbsp si (fr=0) then begin {aceptar}
& nbsp & nbsp & nbsp & nbsp p := nil
& nbsp & nbsp & nbsp & nbsp resultado := true
& nbsp & nbsp end else begin{fallar}
& nbsp & nbsp & nbsp & nbsp resultado := false
& nbsp & nbsp final
fin
{ codigo de La Prueba: el de la Rom-Bios' fecha es siempre a $ffff:0005 (modo real)}
var
& nbsp & nbsp P: pChar
begin
& nbsp & nbsp P := Ptr($FFFF, $0005) {FFFF5 -> datos da de la Rom-Bios}
& nbsp & nbsp si AllocRealModePointer(Puntero(p), 8), entonces {8 caracteres a RomBios' date}
& nbsp & nbsp empezar
& nbsp & nbsp & nbsp & nbsp { Utilice p para leer ROM de la Bios' fecha aqui}
& nbsp & nbsp & nbsp & nbsp FreeRealModePointer(Puntero(p)) {dispose p}
& nbsp & nbsp final
final.