[C con Clase] Duda sobre offset de un PtrInt

Elmer David Entenza Madrigal elmer en oc.minjus.cu
Mie Sep 29 21:47:51 CEST 2010


Saludos colegas:

 

Estoy haciendo una herramienta forense de recuperación en la que tengo que
recorrer la superficie de una memoria flash y tengo que leer sus entradas
byte a byte…  para poderlas recuperar. Sé que existen clases y funciones en
.NET, maravillosas pero el proyecto requiere que muestre dominio de la
estructura FAT32. La aplicación la estoy desarrollando el VS2008 Express
Edition en C#.

 

Para leer un área de memoria y luego analizar los bytes leídos, estoy usando
las funciones “CreateFile” y “ReadFile” de la API de Windows de esta manera

-----------------------------------------

byte[] data = new byte[count];

int n = 0;

IntPtr handle = CreateFile(FileName, GENERIC_READ, 0, 0, OPEN_EXISTING, 0,
0);

fixed (byte* p = data)

{

      

    if (!ReadFile(handle, p, count, &n, 0))

        Console.WriteLine("Error de lectura en el medio");

}

 

if (n > 0)

{

    MemoryStream memStream = new MemoryStream(data);

    return memStream;

}

-----------------------------------------

De esta forma puedo leer los primeros bytes incluso como hasta 10 megas,
poniendo en  “count” la representación en bytes.

 

El problema es el siguiente. Esta manera siempre lee a partir del inicio de
la memoria y cuando tengo que leer en el area de los datos, la cantidad de
momoria al parecer es mucha y me da error… es decir, no me lee. Lo que
quiero es ver la posibilidad de realizar algún offset, tal ves del handle,
no se?? O de alguna manera en caso de que quiera leer un simple sector o
cluster… posicionarme en ese lugar y luego leer… y punto solo un pedacito,
no todo el disco completo hasta esa posición.

 

Necesito saber si esto es posible o si estoy muscando pinguinos en el
Amazona.

 

De antemano agradecido..

EEDEM

------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20100929/dbc42c6a/attachment.html>


Más información sobre la lista de distribución Cconclase