estoy trabajando con la API de windows.
Bien, la cuestion es que quiero editar un fichero.
Lo abro con CreateFileW asi:
Código:
HANDLE hInpFile = CreateFileW(filename, GENERIC_ALL, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
Ahora, quiero leer y escribir a la vez sobre el, esto seria, leo los X primeros bytes(trato el fichero como binario), los edito en el buffer y quiero volver a escribirlos en su correspondiente posicion.
Código:
while (bResult = ReadFile(hInpFile, chunk, chunk_size, &out_len, NULL)) {
if (0 == out_len) break;
readTotalSize += out_len;
if (readTotalSize == inputSize) isFinal = TRUE;
// Aqui edito chunk
if (!WriteFile(hInpFile, chunk, sizeof(chunk), &written, NULL)) break;
memset(chunk, 0, chunk_size);
}
Fichero original
Código:
HOLA MUNDO
HOLA MUNDO
Resultado que obtengo:
Código:
HOLA MUNDO XXXXXXXXXXXXXXXXXX
HOLA MUNDO XXXXXXXXXXXXXXXXXX
Resultado que espero:
Código:
XXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXX
Comentar que se que esto la manera de hacerlo correctamente seria con un stream, pero en este caso necesito utilizar estas funciones de la API.
Muchas gracias