C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
CreateFile, Еще раз про открытие сетевых файлов
Joseph Sweik
Отправлено: 03.06.2005, 13:10


Не зарегистрирован







Открывается сетевой файл в монопольном режиме при помощи функции CreateFile. При этом значение параметра ShareMode = 0. Файл открывается с нескольких локальных машин. Если уже открытый файл открывается со станции с установленной WinNT 4.0, то все как по книжке — файл не открывается ACCESS_DENIED. Если теже действия со станции, с установленной Win2000 с ServicePack> 2 или WinXP, то процесс зависает намертво до освобождения ресурса. После освобождения ресурса, файл открывается, но ждать освобождения можно очень долго. Я хочу, чтобы мне сразу дали отлуп.

А вот и код:
hFile = CreateFile(szLabelName.c_str(), GENERIC_READ | GENERIC_WRITE, 0,
NULL, OPEN_ALWAYS, 0, NULL);
if (hFile != INVALID_HANDLE_VALUE) {
WriteFile(hFile, szString.c_str(), szString.Length(), &dwBytesRead, NULL);
SetEndOfFile(hFile);
return hFile; // файл открылся в монопольном режиме и окажется занятым для других пользователей
}
else {
return 0; // файл занят другим пользователем
}

Gedeon уже отвечал, но может я что-то не так рассказал о своей проблеме или, что скорее всего, дело в локальных настройках системы.
Может что-нибудь подскажите?
sad.gif

Вернуться в Вопросы программирования в C++Builder