Estoy tratando de registrar las acciones realizadas por un servicio que escribí utilizando el lenguaje C de Windows-API &, así que hice un sistema de archivos de registro.CreateFile siempre reemplaza el archivo especificado
El problema es que en cada llamada a CreateFile, el archivo se reemplaza en lugar de abrirlo y escribir al final del archivo.
Aquí está el código de mi función WriteInLogfile
:
void WriteInLogFile(LPCTSTR log_string)
{
HANDLE hFile;
DWORD dBytesWritten;
if ((hFile = CreateFile(LOG_FILE_PATH, GENERIC_WRITE, 0, NULL,
OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL)) == INVALID_HANDLE_VALUE
&& (GetLastError() == ERROR_FILE_NOT_FOUND))
{
if ((hFile = CreateFile(LOG_FILE_PATH, GENERIC_WRITE, 0, NULL,
CREATE_NEW, FILE_ATTRIBUTE_NORMAL, NULL)) != INVALID_HANDLE_VALUE)
{
if (!WriteFile(hFile, log_string, strlen(log_string), &dBytesWritten, NULL))
aff_error("WriteInLogFile");
CloseHandle(hFile);
}
}
else
{
if (!WriteFile(hFile, log_string, strlen(log_string), &dBytesWritten, NULL))
aff_error("WriteInLogFile");
CloseHandle(hFile);
}
}
¿Conoce a alguien en donde el tema viene de?
Gracias;)
Por cierto, puede simplificar este código usando 'OPEN_ALWAYS', que dice' CreateFile' para abrir el archivo si existe o para crear el archivo si no lo hace. Entonces no tendrás que duplicar tanto tu código. –