Originariamente inviato da Mutato
Non e` questo il punto. Immagino che Windows scriva da qualche parte che quel file e` "occupato", se non sono gli attributi allora deve usare un altro meccanismo. E a questo punto la mia domanda e`: quale? e` possibile interagire con esso?
Gli attributi quali "readonly", "nascosto", "di sistema", ecc... sono memorizzati sul file system. Mentre invece un lock su un file è una condizione che nasce dall'uso che ne fanno le applicazioni in un determinato momento. Quindi è una situazione, per così dire, "dinamica".
Ho scritto questo codice che usa funzioni Win32:
codice:
HANDLE hFile;
hFile = CreateFile (szNomeFile, GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, NULL);
if (hFile != INVALID_HANDLE_VALUE)
{
CloseHandle (hFile);
printf ("File is not locked\n");
}
else
{
DWORD dwError = GetLastError ();
if (dwError == ERROR_SHARING_VIOLATION)
printf ("File is locked\n");
else
printf ("ERROR: %lu\n", dwError);
}
Non ho la pretesa di dire che è perfetto (e non so neanche se è il modo migliore per fare il test sul lock) ma sembra funzionare.