Текущий архив: 2003.09.22;
Скачать: CL | DM;
ВнизOpenFile Найти похожие ветки
← →
R4D][ (2003-07-07 12:01) [0]Насколько я знаю, большинство OPEN функций используются для межпроцессной связи(пример: OpenMutex, OpenFileMapping etc). Но какой смысл функции OpenFile если в ее параметрах нет hProccess??? То есть в системе могут быть открыты 10 фаилов с одним и тем ж именем, поэтому по имени нельзя однозначно идентифицировать объект ядра. Я хочу спросить openfile имеет смысл только для "своего" процесса?
← →
MBo (2003-07-07 12:03) [1]This function is provided for compatibility with 16-bit versions of Windows
Win32-based applications should use the CreateFile function.
← →
R4D][ (2003-07-07 13:29) [2]А далее указана причина почему - "In particular, the OpenFile function cannot open a named pipe". Но фаилы-то она открывает...
← →
Cobalt (2003-07-07 15:45) [3]>R4D][ (07.07.03 12:01)
В общем случае - Да, только для своего процесса.
Понимаешь ли, тут такая вещь - ведь имя-то у файла на самом деле вместе с путем к нему - то есть, в общем же случае - уникально.
>какой смысл функции OpenFile если в ее параметрах нет hProccess???
вот эту фразу поясни, плиз. что за "hProccess?!!!"
← →
Игорь Шевченко (2003-07-07 15:50) [4]У OpenFileMapping тоже нет hProcess - и что ? :) Сдается мне, что ни у одной из Open-функций hProcess нету...
← →
R4D][ (2003-07-07 18:30) [5]hProcess - это индификатор процесса.
А то, что у OpenFileMapping нет hProcess - это значит, что в системе может быть только один объект ядра FileMapping и идентифицируется он по имени lpName, которое однозначно определяет объект. Загвоздка-то в том, что в системе может быть открыто, например, 10 фаилов с именем "C:\1.txt", поэтому имя фаила однозначно не идентифицирует объект.
← →
MBo (2003-07-08 06:12) [6]>hProcess - это индификатор процесса
Нет, ты путаешь ID процесса (уникальный) и его дескриптор, хэндл, который в каждом процессе разный
← →
R4D][ (2003-07-08 13:35) [7]Ну на самом деле я это и имел в виду, просто опечатался :)
← →
MBo (2003-07-08 13:43) [8]Все равно, никакие Open-функции не требуют и не нуждаются ни в дескрипторах, ни в идентификаторах процесса, достаточно имени.
← →
R4D][ (2003-07-09 13:28) [9]Хорошо, возьмем пример - я открываю фаил(CreateFile), далее в своей программе использую OpenFile для "открытия" ранее открытого фаила(увеличивую счетчик у старого объекта ядра, созданного createfile"ом) - существует ли гарантия того, что я получу хэндл именно нужного мне фаила. Представим, что приложение "Блокнот" открыло этот же фаил между вызовами createfile и openfile(или до вызова createfile).
← →
Verg (2003-07-09 14:38) [10]
> Хорошо, возьмем пример - я открываю фаил(CreateFile), далее
> в своей программе использую OpenFile для "открытия" ранее
> открытого фаила(увеличивую счетчик у старого объекта ядра,
> созданного createfile"ом) - существует ли гарантия того,
Имя файла - это не имя объекта ядра. Поэтому применив OpenFile ты создаешь просто еще один объект ядра - хэндл файла. Поэтому никакого увеличения счетчика у "старого" не будет. Для этого, по-моему, надо применить DuplicateHandle к старому хэндлу. Точно не помню.
← →
R4D][ (2003-07-09 18:24) [11]DuplicateHandle - это, конечно, хорошо, но проблемы с OpenFile не решает. Из того, что ты сказал - OpenFile - не ОТКРЫВАЕТ(увеличивает счетчик и возвращает хэндл), а СОЗДАЕТ(создает новый объект ядра, увеличивает у него счетчик и возвращает хэндл) новый объект ядра. Мне не верится :) подтвердите кто-нибудь еще для верности.
Страницы: 1 вся ветка
Текущий архив: 2003.09.22;
Скачать: CL | DM;
Память: 0.46 MB
Время: 0.012 c