Listado de todas las páginas de memoria asignada por todos los procesos accesible


como la lista de todas las páginas de memoria asignada por todas accesible procesos
Crear un formulario con un botón y un treeview, el nombre de la vista en árbol tvwProcessList. Nombre en el botón btnProcessList.

usos de Windows
procedure TForm1.btnProcessListClick(Sender: TObject)
var i,l:integer
& nbsp & nbsp & nbsp & nbsp pid:THandle
& nbsp & nbsp & nbsp & nbsp meminfo:MEMORY_BASIC_INFORMATION
& nbsp & nbsp & nbsp & nbsp memstart:puntero
& nbsp & nbsp & nbsp & nbsp memsize:Integer
& nbsp & nbsp & nbsp & nbsp s,attr:Cadena
& nbsp & nbsp & nbsp & nbsp totuse:Integer
& nbsp & nbsp & nbsp & nbsp lpMsgBuf : PCHAR
& nbsp & nbsp & nbsp & nbsp pn, pidn, ln:TTreeNode
begin
& nbsp & nbsp btnProcessList.Enabled := false
& nbsp & nbsp tvwProcessList.Elementos.Claro
& nbsp & nbsp pn:=tvwProcessList.Elementos.AddFirst (nil, 'en Este ordenador')
& nbsp & nbsp for i:=0 hasta 2000 //
& nbsp & nbsp & nbsp & nbsp begin //PROCESS_QUERY_INFORMATION
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp pid:=OpenProcess (PROCESS_ALL_ACCESS{PROCESS_VM_OPERATION o PROCESS_QUERY_INFORMATION o PROCESS_VM_WRITE}, false, i*4)
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp si pid<>0 then
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp empezar
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp //agregar treenode:
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp pidn := tvwProcessList.Elementos.AddChild (pn, IntToStr(i*4{pid}))
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp memstart := 0
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp totuse := 0
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp l:=VirtualQueryEx (pid,
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp memstart,
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp MemInfo,
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp SizeOf(MEMORY_BASIC_INFORMATION))
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp mientras (l=SizeOf(MEMORY_BASIC_INFORMATION)) hacer
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp empezar
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp si la Aplicación.Terminado, a continuación,
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp salida
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp si meminfo.Estado=MEM_COMMIT, a continuación,
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp empezar
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp totuse := totuse meminfo.RegionSize
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp attr := '
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp if (0<>meminfo.Proteger y PAGE_NOACCESS), a continuación,
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp attr := attr 'NO ACCESO'
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp if (0<>meminfo.Proteger y PAGE_READONLY), a continuación,
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp attr := attr 'READONLY'
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp if (0<>meminfo.Proteger y PAGE_READWRITE), a continuación,
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp attr := attr 'READWRITE'
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp if (0<>meminfo.Proteger y PAGE_WRITECOPY), a continuación,
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp attr := attr 'WRITECOPY'
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp if (0<>meminfo.Proteger y PAGE_EXECUTE), a continuación,
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp attr := attr 'EJECUTAR'

& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp if (0<>meminfo.Proteger y PAGE_EXECUTE_READ), a continuación,
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp attr := attr 'EXECUTE_READ'
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp if (0<>meminfo.Proteger y PAGE_EXECUTE_READWRITE), a continuación,
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp attr := attr 'EXECUTE_READWRITE'
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp if (0<>meminfo.Proteger y PAGE_EXECUTE_WRITECOPY), a continuación,
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp attr := attr 'EXECUTE_WRITECOPY'
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp if (0<>meminfo.Proteger y PAGE_GUARD), a continuación,
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp attr := attr 'de GUARDIA'
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp if (0<>meminfo.Proteger y PAGE_NOCACHE), a continuación,
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp attr := attr 'NOCACHE'
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp ln := tvwProcessList.Elementos.AddChild (pidn,
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp - nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp Format ('Attr: %d: %s, Base: %d, tamaño: %d',
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp [meminfo.proteger, attr, integer(meminfo.Dirección base), meminfo.RegionSize]))
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp Aplicación.ProcessMessages
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp final
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp entero(memstart) := integer(meminfo.Dirección base) meminfo.regionsize
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp entero(memstart):=integer(memstart) memsize
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp l:=VirtualQueryEx (pid,
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp memstart,
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp MemInfo,
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp SizeOf(MEMORY_BASIC_INFORMATION))
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp final
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp pidn.Texto := Format ('pid: %d, asignado: %d', [i*4, totuse])
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp final
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp CloseHandle(pid)
& nbsp & nbsp & nbsp & nbsp final
& nbsp & nbsp btnProcessList.Enabled := true
fin

Explanetion:
El proceso de windows ID es siempre una multiplicar de 4. ASÍ, el proceso de acceso nr. 8 tendrán acceso al mismo proceso de como manejar 9,10 y 11.
simplemente de repetir una lista de posibles ID. Hay mejores maneras de hacer esto, pero eso está fuera del alcance de este artículo, y este método funciona muy bien.
SI tenemos han abierto un proceso, la lista de la primera página. Añadimos el tamaño de esta página a la dirección de inicio de la página siguiente para recuperar.
No todas las páginas son asignados, podemos verificar esto con el MEM_COMMIT etiqueta.
Si una página está comprometido, examinamos los atributos, y agregar un nodo de árbol.
Esto puede tomar un tiempo (especialmente la adición de todos los nodos del árbol).
Después de que hayamos terminado, cerramos el processhandle con CloseHandle. Estar muy seguro de ello!!! No cierre la manija de plomo divertido de los resultados, y si usted hace esto varias veces, usted puede terminar también en la necesidad de tener que reiniciar el sistema sincew todo se vuelve lento.









Listado de todas las paginas de memoria asignada por todos los procesos accesible


Listado de todas las paginas de memoria asignada por todos los procesos accesible : Multi-millones de consejos para hacer su vida mas facil.


como la lista de todas las paginas de memoria asignada por todas accesible procesos
Crear un formulario con un boton y un treeview, el nombre de la vista en arbol tvwProcessList. Nombre en el boton btnProcessList.

usos de Windows
procedure TForm1.btnProcessListClick(Sender: TObject)
var i,l:integer
& nbsp & nbsp & nbsp & nbsp pid:THandle
& nbsp & nbsp & nbsp & nbsp meminfo:MEMORY_BASIC_INFORMATION
& nbsp & nbsp & nbsp & nbsp memstart:puntero
& nbsp & nbsp & nbsp & nbsp memsize:Integer
& nbsp & nbsp & nbsp & nbsp s,attr:Cadena
& nbsp & nbsp & nbsp & nbsp totuse:Integer
& nbsp & nbsp & nbsp & nbsp lpMsgBuf : PCHAR
& nbsp & nbsp & nbsp & nbsp pn, pidn, ln:TTreeNode
begin
& nbsp & nbsp btnProcessList.Enabled := false
& nbsp & nbsp tvwProcessList.Elementos.Claro
& nbsp & nbsp pn:=tvwProcessList.Elementos.AddFirst (nil, 'en Este ordenador')
& nbsp & nbsp for i:=0 hasta 2000 //
& nbsp & nbsp & nbsp & nbsp begin //PROCESS_QUERY_INFORMATION
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp pid:=OpenProcess (PROCESS_ALL_ACCESS{PROCESS_VM_OPERATION o PROCESS_QUERY_INFORMATION o PROCESS_VM_WRITE}, false, i*4)
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp si pid<>0 then
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp empezar
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp //agregar treenode:
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp pidn := tvwProcessList.Elementos.AddChild (pn, IntToStr(i*4{pid}))
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp memstart := 0
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp totuse := 0
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp l:=VirtualQueryEx (pid,
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp memstart,
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp MemInfo,
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp SizeOf(MEMORY_BASIC_INFORMATION))
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp mientras (l=SizeOf(MEMORY_BASIC_INFORMATION)) hacer
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp empezar
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp si la Aplicacion.Terminado, a continuacion,
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp salida
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp si meminfo.Estado=MEM_COMMIT, a continuacion,
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp empezar
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp totuse := totuse meminfo.RegionSize
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp attr := '
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp if (0<>meminfo.Proteger y PAGE_NOACCESS), a continuacion,
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp attr := attr 'NO ACCESO'
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp if (0<>meminfo.Proteger y PAGE_READONLY), a continuacion,
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp attr := attr 'READONLY'
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp if (0<>meminfo.Proteger y PAGE_READWRITE), a continuacion,
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp attr := attr 'READWRITE'
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp if (0<>meminfo.Proteger y PAGE_WRITECOPY), a continuacion,
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp attr := attr 'WRITECOPY'
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp if (0<>meminfo.Proteger y PAGE_EXECUTE), a continuacion,
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp attr := attr 'EJECUTAR'

& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp if (0<>meminfo.Proteger y PAGE_EXECUTE_READ), a continuacion,
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp attr := attr 'EXECUTE_READ'
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp if (0<>meminfo.Proteger y PAGE_EXECUTE_READWRITE), a continuacion,
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp attr := attr 'EXECUTE_READWRITE'
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp if (0<>meminfo.Proteger y PAGE_EXECUTE_WRITECOPY), a continuacion,
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp attr := attr 'EXECUTE_WRITECOPY'
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp if (0<>meminfo.Proteger y PAGE_GUARD), a continuacion,
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp attr := attr 'de GUARDIA'
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp if (0<>meminfo.Proteger y PAGE_NOCACHE), a continuacion,
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp attr := attr 'NOCACHE'
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp ln := tvwProcessList.Elementos.AddChild (pidn,
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp - nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp Format ('Attr: %d: %s, Base: %d, tamaño: %d',
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp [meminfo.proteger, attr, integer(meminfo.Direccion base), meminfo.RegionSize]))
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp Aplicacion.ProcessMessages
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp final
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp entero(memstart) := integer(meminfo.Direccion base) meminfo.regionsize
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp entero(memstart):=integer(memstart) memsize
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp l:=VirtualQueryEx (pid,
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp memstart,
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp MemInfo,
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp SizeOf(MEMORY_BASIC_INFORMATION))
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp final
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp pidn.Texto := Format ('pid: %d, asignado: %d', [i*4, totuse])
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp final
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp CloseHandle(pid)
& nbsp & nbsp & nbsp & nbsp final
& nbsp & nbsp btnProcessList.Enabled := true
fin

Explanetion:
El proceso de windows ID es siempre una multiplicar de 4. ASI, el proceso de acceso nr. 8 tendran acceso al mismo proceso de como manejar 9,10 y 11.
simplemente de repetir una lista de posibles ID. Hay mejores maneras de hacer esto, pero eso esta fuera del alcance de este articulo, y este metodo funciona muy bien.
SI tenemos han abierto un proceso, la lista de la primera pagina. Añadimos el tamaño de esta pagina a la direccion de inicio de la pagina siguiente para recuperar.
No todas las paginas son asignados, podemos verificar esto con el MEM_COMMIT etiqueta.
Si una pagina esta comprometido, examinamos los atributos, y agregar un nodo de arbol.
Esto puede tomar un tiempo (especialmente la adicion de todos los nodos del arbol).
Despues de que hayamos terminado, cerramos el processhandle con CloseHandle. Estar muy seguro de ello!!! No cierre la manija de plomo divertido de los resultados, y si usted hace esto varias veces, usted puede terminar tambien en la necesidad de tener que reiniciar el sistema sincew todo se vuelve lento.


Listado de todas las páginas de memoria asignada por todos los procesos accesible

Listado de todas las páginas de memoria asignada por todos los procesos accesible : Multi-millones de consejos para hacer su vida más fácil.
Recommander aux amis
  • gplus
  • pinterest

Comentario

Dejar un comentario

Clasificación