Mi programa de Windows recibe información de otro programa a través de la interfaz de directorio/archivo. Ese es el otro programa que suelta archivos en un directorio especial. Mi programa escanea periódicamente el directorio, encuentra los archivos, los procesa y luego los elimina.Eliminar un archivo abierto para acceso exclusivo en el mismo proceso
Utilizo la función CreateFile() para abrir dichos archivos. Para garantizar que el otro programa haya terminado de escribir en el archivo y lo haya cerrado, configuré el parámetro dwShareMode en 0. Si CreateFile falla con un error de uso compartido, salte el archivo hasta la siguiente iteración.
El problema es que DeleteFile() falla con el error ERROR_SHARING_VIOLATION mientras que el archivo se abre en mi programa.
pude cerrar el archivo antes de deleteing, pero me gustaría evitar la posibilidad de algún otro programa de abrir el archivo justo antes de borrar el archivo.
que utiliza este código para abrir archivos
CreateFile(filePath,DELETE|FILE_READ_DATA,0,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL)
¿Es posible lograr lo que quiero: abrir el archivo exclusivamente un borrarla, por lo que ningún otro programa puede interferir entre openning y deleteting el archivo.