Test Foro de elhacker.net SMF 2.1

Programación => Programación C/C++ => Mensaje iniciado por: Riki_89D en 26 Septiembre 2010, 19:35 PM

Título: Leer sector con API
Publicado por: Riki_89D en 26 Septiembre 2010, 19:35 PM
Hola como andan?

necesito saber exactamente como aplicar la API CreateFile para ller sectores de CD mi unidad es la D:

Yo ago lo siguiente:
Código (cpp) [Seleccionar]

HANDLE CD = CreateFile("\\.\D:",FILE_ALL_ACCESS,FILE_SHARE_WRITE|FILE_SHARE_READ,0,OPEN_EXISTING,0,0);

Eso en teoria me tiene que abrir la unidad D no?¿

entonces compruebo con if INVALID_HANDLE_VALUE i si es asin que me de un mensaje de error y efectivamente me da el mensaje,osea que es como si no lo encontrara,que puede pasar?¿

para  leer sectores imagino que debere usar ReadFile no?¿ como le indico el sector a leer?¿


saludos
Título: Re: Leer sector con API
Publicado por: Eternal Idol en 26 Septiembre 2010, 20:48 PM
El path esta mal, mira el color del texto y te vas a dar cuenta.
Título: Re: Leer sector con API
Publicado por: Riki_89D en 26 Septiembre 2010, 21:00 PM
Entonces como es?¿
Título: Re: Leer sector con API
Publicado por: Eternal Idol en 26 Septiembre 2010, 22:26 PM
Hay una barra que esta mal ... mira con atencion el resaltado del codigo.
Título: Re: Leer sector con API
Publicado por: Riki_89D en 26 Septiembre 2010, 22:33 PM
Hola eternal,es que no veo el fallo por que mira acabo de mirar en la MSDN y creao que esta bien escrito:

http://msdn.microsoft.com/en-us/library/aa363858(VS.85).aspx
(http://msdn.microsoft.com/en-us/library/aa363858(VS.85).aspx)


no lo entiendo :S
Título: Re: Leer sector con API
Publicado por: bizco en 26 Septiembre 2010, 22:45 PM
lo que te dice no tiene que ver con la MSDN, tiene qeu salirte un warning sobre secuencia de escape desconocida.
Título: Re: Leer sector con API
Publicado por: Horricreu en 26 Septiembre 2010, 22:46 PM
http://msdn.microsoft.com/en-us/library/h21280bw

Saludos :P

Advertencia - mientras estabas escribiendo, una nueva respuesta fue publicada. Probablemente desees revisar tu mensaje.
Título: Re: Leer sector con API
Publicado por: Riki_89D en 26 Septiembre 2010, 22:58 PM
Pues no...no me sale ningun warning :S lo he comprobado varias veces i no no sale nada compila erfectamente sin wrnings ni errores ni nada de nada esta limpio!


:(
Título: Re: Leer sector con API
Publicado por: Eternal Idol en 26 Septiembre 2010, 23:30 PM
Lee todo el hilo de nuevo y presta atencion, si no podes ver el error ya sinceramente no se que decirte.
Título: Re: Leer sector con API
Publicado por: [L]ord [R]NA en 26 Septiembre 2010, 23:42 PM
Esto me esta estresando a mi tambien... "\\.\D:" ahi esta el error, tienes "\D" y al no tener "\\" considera que "\D" es una secuencia de escape desconocida.
Título: Re: Leer sector con API
Publicado por: Horricreu en 27 Septiembre 2010, 17:42 PM
¿De verdad que con el enlace que te dí aún no lo entendiste?

Saludos :P
Título: Re: Leer sector con API
Publicado por: Riki_89D en 27 Septiembre 2010, 20:51 PM
Ya esta resolvido,se mne paso por alto que en verdad solo tenia \D


saluts y siento el supuesto estres causado

:)
Título: Re: Leer sector con API
Publicado por: Eternal Idol en 27 Septiembre 2010, 22:29 PM
¿Pero viste como la primera estaba en azul y la segunda en rojo, no?
Título: Re: Leer sector con API
Publicado por: Riki_89D en 29 Septiembre 2010, 20:39 PM
Hola etern xd si me di cuenta si

aprovecho para realizar otrapregunta,para ller sector imagino que sera con ReadFile no? pero como indico el sector eacto que quiero leer=?
Título: Re: Leer sector con API
Publicado por: Eternal Idol en 30 Septiembre 2010, 00:11 AM
SetFilePointer/Ex.
Título: Re: Leer sector con API
Publicado por: Riki_89D en 1 Octubre 2010, 21:18 PM
Hola eternal que hay?

bueno ya lo probe y me queda esto
Código (cpp) [Seleccionar]

HANDLE CD_ROM = CreateFile("\\\\.\\D:",GENERIC_READ|GENERIC_WRITE,FILE_SHARE_READ|FILE_SHARE_WRITE,0,OPEN_EXISTING,0,0);
if(CD_ROM == INVALID_HANDLE_VALUE)
{
MessageBox(0,"Device not found",0,0);
}
else{
DWORD Ptr = SetFilePointer(CD_ROM,0x1000,NULL,0);
ReadFile(CD_ROM,Buffer,512,&Bytes,0);
}


Desgraciadamente no lee,ni siquiera se enciende el lector del CD,que pasa?¿


saludos
Título: Re: Leer sector con API
Publicado por: Eternal Idol en 2 Octubre 2010, 11:37 AM
El tamaño del sector de un CD (2048) no es ese (512):

DISK_GEOMETRY dg;
BOOL ret = DeviceIoControl(CD_ROM, IOCTL_DISK_GET_DRIVE_GEOMETRY, 0, 0, &dg, sizeof(DISK_GEOMETRY), &Bytes, 0);
if (ret)
{
  /*dg.BytesPerSector*/
}