Модераторы: bsa

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> тип параметров в функции 
:(
    Опции темы
bems
Дата 20.4.2011, 00:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 3400
Регистрация: 5.1.2006

Репутация: нет
Всего: 88



В общем случае это разные хендлы. Если стандартный вывод перенаправлен, то CreateFile("CONOUT$" возвращает не то, что GetStdHandle

Добавлено через 9 минут и 41 секунду
Цитата(bems @  20.4.2011,  00:58 Найти цитируемый пост)
В общем случае это разные хендлы

то есть хендлы конечно же в любом случае разные, я про сам объект говорю.


--------------------
Обижено школьников: 8
PM MAIL   Вверх
xvr
Дата 20.4.2011, 11:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 35
Всего: 223



Цитата(bems @  20.4.2011,  00:43 Найти цитируемый пост)
Апи очень последователен: есть объект ядра, значит есть функция, где первое слово Create, а дальше - название объекта 

Не хватает еще одного слова -
Цитата

CreateMutexObject
CreateThreadObject
CreateEventObject
CreateFileObject
CreateProcessObject
CreateFileMappingObject
вот теперь 'последователен'. Согласитесь, что File и FileObject - это несколько разные сущности  smile 

PM MAIL   Вверх
bems
Дата 20.4.2011, 11:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 3400
Регистрация: 5.1.2006

Репутация: нет
Всего: 88



Ну ты программист или куда? Конечно ж объект, потому что всё суть объекты


--------------------
Обижено школьников: 8
PM MAIL   Вверх
bsa
Дата 20.4.2011, 16:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 85
Всего: 196



bems, вот цитата из документации на CreateFile:
Цитата
Creates or opens a file or I/O device. The most commonly used I/O devices are as follows: file, file stream, directory, physical disk, volume, console buffer, tape drive, communications resource, mailslot, and pipe. The function returns a handle that can be used to access the file or device for various types of I/O depending on the file or device and the flags and attributes specified.
Где ты тут видишь упоминание о "объекте ядра"? Нет такого! Я конечно рад за разработчиков API, которые создавали его для себя. Но я, как пользователь, чувствую себя не комфортно от того, что функции делают не то, что следует из их названия.
Согласись, прикладному программисту должно быть глубоко фиолетово от того, что происходит внутри системы. Он захотел открыть файл, файл открылся. А то, что система для этого сделала миллион операций, его волновать вообще не должно.
PM   Вверх
bems
Дата 20.4.2011, 18:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 3400
Регистрация: 5.1.2006

Репутация: нет
Всего: 88



Цитата(bsa @  20.4.2011,  16:31 Найти цитируемый пост)
Где ты тут видишь упоминание о "объекте ядра"? Нет такого!
А вот описалово писали уже для таких как ты, которые за деревьями леса не видят. Пришлось перечислить всякие file, file stream, directory, physical disk и тд.
Также для детей природы есть такой топик http://msdn.microsoft.com/en-us/library/ms...28VS.85%29.aspx

Цитата(bsa @  20.4.2011,  16:31 Найти цитируемый пост)
Но я, как пользователь, чувствую себя не комфортно от того, что функции делают не то, что следует из их названия.
Согласись, прикладному программисту должно быть глубоко фиолетово от того, что происходит внутри системы
Люди, которым фиолетово работают в бухгалтерии. Им действительно не нужно знать что такое логарифм, чтобы считать сложные проценты.


Это сообщение отредактировал(а) bems - 20.4.2011, 18:46


--------------------
Обижено школьников: 8
PM MAIL   Вверх
xvr
Дата 20.4.2011, 19:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 35
Всего: 223



Ну если подходить ко всему с точки зрения ядра, то Mutex надо было назвать Mutant. Ибо в ядре он именно так называется  smile 

PM MAIL   Вверх
bsa
Дата 20.4.2011, 20:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 85
Всего: 196



Цитата(bems @ 20.4.2011,  18:46)
Цитата(bsa @  20.4.2011,  16:31 Найти цитируемый пост)
Где ты тут видишь упоминание о "объекте ядра"? Нет такого!
А вот описалово писали уже для таких как ты, которые за деревьями леса не видят. Пришлось перечислить всякие file, file stream, directory, physical disk и тд.
Также для детей природы есть такой топик http://msdn.microsoft.com/en-us/library/ms...28VS.85%29.aspx

Цитата(bsa @  20.4.2011,  16:31 Найти цитируемый пост)
Но я, как пользователь, чувствую себя не комфортно от того, что функции делают не то, что следует из их названия.
Согласись, прикладному программисту должно быть глубоко фиолетово от того, что происходит внутри системы
Люди, которым фиолетово работают в бухгалтерии. Им действительно не нужно знать что такое логарифм, чтобы считать сложные проценты.

Т.е. ты считаешь, что для того, чтобы работать таксистом, необходимо не только уметь хорошо водить машину и знать местность, но и понимать алгоритмы работы прошивки микроконтроллера двигателя, а так же знать в каком контуре повысится давление при нажатии вон на ту кнопку?
Лично я считаю, что системным программистам одно, прикладным другое, а вэб-дизайнерам третье. И незачем все смешивать в одну кучу. Система очень сложная, и, если отвлекаться на внутреннее устройство ядра системы, можно не сделать свою работу в срок.

Если ты считаешь, что в документации пользователя нужно оперировать терминами внутреннего устройства девайса - это твое право. Только имей в виду, что ты можешь заблуждаться. Я, например, считаю, что в документации должно быть в первую очередь написано то, что я получу на выходе при подаче чего-то на вход.
А названия функций - это краткое описание. Если ты не знаешь WinAPI, то для того, чтобы понять код, нужно вдумчиво читать документацию на каждую встречную функцию.

Еще пример. Мне нужна работа с СОМ портом. В частности, узнать, сколько байт во входном и выходном буферах. Так вот, ни одна функция, отвечающая за получение информации не позволяет это получить. Зато есть магическая функция ClearCommError, которая кроме того, что сбрасывает флаги ошибок порта (ну в принципе следует из ее названия), еще и позволяет получить определенную информацию о состоянии порта. Догадаться не используя поиск по примерам и не перечитывая все описания НЕВОЗМОЖНО!
PM   Вверх
bems
Дата 21.4.2011, 00:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 3400
Регистрация: 5.1.2006

Репутация: нет
Всего: 88



Цитата(xvr @  20.4.2011,  19:59 Найти цитируемый пост)
Ну если подходить ко всему с точки зрения ядра, то Mutex надо было назвать Mutant. Ибо в ядре он именно так называется
Во-первых KMUTANT и KMUTEX синонимы, и строго ядерные (не винапи) функции для манипуляции с ним часто ссылаются на него как на мютекс, например KeInitializeMutex, так что тут скорее просто два названия
Во-вторых понятие "объект ядра" вводится именно в винапи, прикладному коду не нужно знать подробностей, но примерное представление имень необходимо.

Цитата(bsa @  20.4.2011,  20:18 Найти цитируемый пост)
Т.е. ты считаешь, что для того, чтобы работать таксистом, необходимо не только уметь хорошо водить машину и знать местность, но и понимать алгоритмы работы прошивки микроконтроллера двигателя, а так же знать в каком контуре повысится давление при нажатии вон на ту кнопку?
нет, таксисту не надо. но ты не таксист, ты программист, это инженерная специальность. А веб-программистам нужно знать веб-сервер, даже если по началу сначала кажется что "я нажимаю кнопочку и это работает"

Цитата(bsa @  20.4.2011,  20:18 Найти цитируемый пост)
Система очень сложная, и, если отвлекаться на внутреннее устройство ядра системы, можно не сделать свою работу в срок.
Внутренне устройство - дело другое. Тебя же никто не заставляет работать со структурой FILE_OBJECT напрямую, но что есть объект файл, что он представлен для тебя хендлом, что объект reference-counted, и счетчик ссылок уменьшается вызовом CloseHandle ты знать обязан, если хочешь использовать апи

Цитата(bsa @  20.4.2011,  20:18 Найти цитируемый пост)
ще пример. Мне нужна работа с СОМ портом

Когда ты используя CreateFile открываешь ком-порт, то получаешь хендл на реальный FILE_OBJECT, обслуживаемый соответствующим драйвером. Но файловый объект он больше для поточного обмена данными, а драйвероспецифичные вещи всю жизнь делались посылкой драйверу ioctl. И это есть в msdn, да. в этом случае указывается тот же хендл файлового объенкта, но он служит скорее неким ключем у нужному DEVICE_OBJECT. 
Исходя их этого, уж не является ли тем несуществующим способом, о котором ты говоришь вызов DeviceIoControl с кодом IOCTL_SERIAL_GET_COMMSTATUS? 
кстати эта штука тоже заодно сбрасывает флаги. Если поведение драйвера делает из этих вещей одну цельную операцию, то не удивительно что разработчики апи сделали это одним вызовом.

Это сообщение отредактировал(а) bems - 21.4.2011, 00:21


--------------------
Обижено школьников: 8
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0558 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.