Здравствуйте!
собственно вопрос: почему Write file не может использовать объект напрямую, и ему обязательно нужен дескриптор?
4-я строчка с конца.
Заранее благодарен...
Здравствуйте, Santuz, Вы писали:
S>Здравствуйте! S>собственно вопрос: почему Write file не может использовать объект напрямую, и ему обязательно нужен дескриптор? S>4-я строчка с конца. S>Заранее благодарен...
Что значит на прямую? Функция же должна знать с какому файлу обращаться.
Здравствуйте, BlackEric, Вы писали:
BE>Что значит на прямую? Функция же должна знать с какому файлу обращаться.
Прошу прощения, если не правильно выразился, дело в том, что это вопрос преподавателя мне, а я не очень сильно во всём этом разбираюсь...
То-есть получается, что функция сама по себе вызвать объект не может, и для этого ей требуется дескриптор...я правильно понял?
и ещё...на вопрос: "почему не может?", какой ответ будет правильным...
заранее благодарен...
Re: почему Write file не может исп. объект напрямую, без дескриптора
Здравствуйте, Santuz, Вы писали:
S>Здравствуйте! S>собственно вопрос: почему Write file не может использовать объект напрямую, и ему обязательно нужен дескриптор? S>4-я строчка с конца. S>Заранее благодарен...
Считайте, что hFile — это некое устройство, которое можно включить, использовать, и выключить.
Для этого у вас есть инструменты: чтобы включить — CreateFile, чтобы использовать — WriteFile, ReadFile и т.п., а чтобы выключить — CloseFile.
Поэтому понятно, что нельзя начать использовать устройство, пока оно не включено.
Точно так же понятно, что после использования устройство обязательно надо выключить ("Уходя, гасите свет!") во избежание разных несчастий.
Устройство запомнает свое состояние каждый раз после того, как в нем поковырялись инструментами.
Если бы у вас не было дескриптора устройства и нужно было бы использовать объект напрямую, то вам пришлось бы самостоятельно запоминать и управлять тучей состояний этого устройства.
Re: почему Write file не может исп. объект напрямую, без дескриптора
Здравствуйте, Santuz, Вы писали:
S>Здравствуйте! S>собственно вопрос: почему Write file не может использовать объект напрямую, и ему обязательно нужен дескриптор?
Понятие дескриптора файла есть во всех ОС. И его смысл заключается в реализации системных вызовов ОС для операций
с объектами, которые представляет ОС-файлы, сокеты, каналы. В случае с файлами, дескриптор-это числовой идентификатор
открытого файла. Именно дескриптор связывает конкретные операции с конкретным файлом. По дескриптору, передаваемому
через системный вызов, драйвер файловой системы распознаёт с какими структурами данных, относящихся к открытому
файлу проводить операции. Эти структуры создаются и инициализируются в ядре при каждом открытии файла драйвером
файловой системы, и дескриптор является числовым идентификатором этих структур. В ядре ОС имеется промежуточная
подсистема между драйвером файловой системы и реализацией системнах вызовов для работы с файлами. И создание
и передача драйвером файловой системы дескриптора это её требование. Соответствующий интерфейс есть часть
процедуры регистрации драйвера файловой системы в ядре.