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

 
CreateFile
Joseph Sweik
Отправлено: 27.05.2005, 14:21


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







Открывается файл на сервере: Win2003 в монопольном режиме при помощи функции CreateFile. При этом значение параметра ShareMode = 0. Файл открывается с нескольких локальных машин. Если уже открытый файл открывается со станции с установленной WinNT 4.0, то все как по книжке — файл не открывается ACCESS_DENIED. Если теже действия со станции, с установленной Win2000 или WinXP, то процесс зависает намертво до освобождения ресурса. Может что-нибудь подскажите?
sad.gif
Gedeon
Отправлено: 27.05.2005, 14:35


Ветеран

Группа: Модератор
Сообщений: 1742



Покажите код.
Joseph Sweik
Отправлено: 27.05.2005, 14:42


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







А вот и код:
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; // файл занят другим пользователем
}
sad.gif
Gedeon
Отправлено: 27.05.2005, 16:04


Ветеран

Группа: Модератор
Сообщений: 1742



2003 сервера у меня нету, но проверил на 2000 сервер, ХР и на новеле, открывал все с ХР, все честно и корректно отрабатывает, не знаю че посоветовать, может процесс не на этой ф-ции виснет?

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