Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 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.49 MB
Время: 0.029 c
11-71568
Puke Zero
2003-01-16 23:29
2003.09.22
PopupMenu


6-71810
borg
2003-07-16 08:49
2003.09.22
mailto


6-71797
servs
2003-07-21 12:08
2003.09.22
WebBrowser и History


1-71685
Пубертанец
2003-09-11 11:58
2003.09.22
Можно ли в параметр функции передать другую функцию? И как?


7-71970
bloodman
2003-07-08 21:23
2003.09.22
HOOk & DLL