Tema: WriteFile
Ver Mensaje Individual
  #1 (permalink)  
Antiguo 06/09/2008, 19:41
Avatar de Eddie1986
Eddie1986
 
Fecha de Ingreso: enero-2007
Mensajes: 37
Antigüedad: 17 años, 11 meses
Puntos: 0
WriteFile

Wenas :P, tengo un pequeño problema con las funciones WriteFile,CreateFile y ReadFile. Basicamente lo que hace el programa es abre un archivos binario cualquiera , lo va leyendo y copiando en un nuevo archivos.

El problema que tengo es que el programa no para de escribir osea abre una foto de 100 Kb y copia hasta que yo lo pare ( El nuevo archivo llego a pesar 25 megas :P )

Estoy programando para windows en C

no se si necesitan algo mas pero cualquier ayuda o consejo es bienvenido :P

Un abrazo

Eddie


#include <windows.h>
#include <tchar.h>
#include <stdio.h>

#define BUFFER_SIZE 512

main()

{
HANDLE hFile;
HANDLE hFile2;
DWORD dwBytesRead = 0;
char ReadBuffer[BUFFER_SIZE] = {0};
char DataBuffer[512];
DWORD dwBytesToWrite = (DWORD)strlen(DataBuffer);
DWORD dwBytesWritten = 0;
printf("\n");



/************** Creacion de archivos para lectura y escritura ************/


if ((hFile = CreateFile("Historias nuevas (Highway Blues).wma", // Nombre del archivo a abrir
GENERIC_READ, // Abrir para leer
0, //Sin compartir
NULL, //Seguridad por defecto
OPEN_EXISTING, //Abrir solo si el archivo existe
FILE_ATTRIBUTE_NORMAL, //Archivo normal
NULL))<0) //Sin atributos

{
printf("open failed on input file" );
exit(1);
}


if
((hFile2=CreateFile("Historias nuevas (Highway Blues)2.wma", //Nombre del archivo nuevo

GENERIC_WRITE, //Abrir para escribir
0, //Sin compartir
NULL, //Seguridad por defecto
CREATE_ALWAYS, //Sobreescribi si existe
FILE_ATTRIBUTE_NORMAL, //Archivo normal
NULL) )<0) //Sin atributos

{
printf(
"Error en la creacion del archivo %d)\n", GetLastError());
return;
}



/*************** Lectura y escritura de los archivos ****************/

while ((ReadFile(hFile, ReadBuffer, BUFFER_SIZE-2, &dwBytesRead, NULL))>0)
{
if (dwBytesRead > 0)
{
ReadBuffer[dwBytesRead+1]='0'; // NULL
printf(TEXT("Writing %d bytes .\n"), dwBytesToWrite);
}
else
{
printf(TEXT("Nada fue leido del archivo \n"));
}

WriteFile(hFile2,// Abre el descriptor
DataBuffer + dwBytesWritten,// Info a escribir
dwBytesToWrite - dwBytesWritten,// numero de bytes a escribir
&dwBytesWritten,// numero de bytes escritos
NULL); // Sin overlap

printf(TEXT("Wrote %d bytes successfully.\n"), dwBytesWritten);

}

CloseHandle(hFile);

CloseHandle(hFile2);

}