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:
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
El path esta mal, mira el color del texto y te vas a dar cuenta.
Entonces como es?¿
Hay una barra que esta mal ... mira con atencion el resaltado del codigo.
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
lo que te dice no tiene que ver con la MSDN, tiene qeu salirte un warning sobre secuencia de escape desconocida.
http://msdn.microsoft.com/en-us/library/h21280bw
Saludos :P
Advertencia - mientras estabas escribiendo, una nueva respuesta fue publicada. Probablemente desees revisar tu mensaje.
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!
:(
Lee todo el hilo de nuevo y presta atencion, si no podes ver el error ya sinceramente no se que decirte.
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.
¿De verdad que con el enlace que te dí aún no lo entendiste?
Saludos :P
Ya esta resolvido,se mne paso por alto que en verdad solo tenia \D
saluts y siento el supuesto estres causado
:)
¿Pero viste como la primera estaba en azul y la segunda en rojo, no?
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=?
SetFilePointer/Ex.
Hola eternal que hay?
bueno ya lo probe y me queda esto
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
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*/
}