Ich habe zwei Projekte in C:
Das erste:
#include windows.h
#include stdio.h
#include tchar.h
int main()
{
HANDLE hFile = CreateFile("D:\\f.txt",
GENERIC_WRITE,
FILE_SHARE_READ,
NULL,
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL,
NULL);
if(hFile == INVALID_HANDLE_VALUE)
_tprintf("Fehler: CreateFile %d\n",GetLastError());
Sleep(5000);
return 0;
}
Das Zweite:
#include windows.h
#include stdio.h
#include tchar.h
int main()
{
HANDLE hFile = CreateFile("D:\\f.txt",
GENERIC_READ,
FILE_SHARE_READ,
NULL,
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL,
NULL);
if(hFile == INVALID_HANDLE_VALUE)
_tprintf("Fehler: CreateFile %d\n",GetLastError());
return 0;
}
Das erste Programm soll die Datei zum Lesen öffnen und anderen das Lesen ermöglichen. Das zweite soll die Datei zum Lesen öffnen.
Wenn ich das Programm ausführe, gibt mir das zweite einen Fehler 32 (ERROR_SHARING_VIOLATION).
Ich dachte, dass genau der Sinn von FILE_SHARE_READ war, dass andere Threads/Prozesse eine Datei zum Lesen öffnen können, unabhängig davon, ob sie bereits geöffnet ist oder nicht.
Kann mir jemand helfen, dieses Problem zu lösen?
P.S. Würde es einen Unterschied machen, wenn die Datei ein Mailslot wäre?