Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.144.160.219] |
|
Прикр. сообщ.
#1
,
|
|
|
В связи с некоторыми вопросами, поступившими за последнее время, решил создать тему и прояснить ситуацию по поводу наполнения нашей базы знаний.
Итак, на форуме существует две категории разделов: Какие исходники нужны форуму: Что нужно, что бы ваш код попал в FAQ или в раздел Наши Исходники: Естественно, крайне желательно, что бы код был написан в хорошем стиле, без магических чисел, магических конструкций и неинформативных названий переменных Что вы получаете за пополнение базы знаний форума: Прежде всего, благодарность участников форума Так же, за каждую тему в FAQ автору полагается от 1-го до нескольких DGM , на усмотрение модератора раздела. Виртуальные деньги форума всегда отображаются в вашем профиле, рядом с рейтингом. Кроме того, вы можете за них приобрести один из товаров, доступных в нашем магазине DigiMania. Спрашивайте, что не ясно, постараюсь ответить |
Сообщ.
#1
,
|
|
|
B.V.
А вот и мой исходник (см. .pdf)!!! Может быть переместить в FAQ как "Аналог команды PAGE системного отладчика"? Или хотя бы 1 D.g. получить бы мне?!!! Прикреплённый файлx86__i386_________________________.pdf (291,97 Кбайт, скачиваний: 2025) Это сообщение было перенесено сюда или объединено из темы "Аналог команды PAGE системного отладчика" |
Сообщ.
#2
,
|
|
|
Что делает команда PAGE отладчика Syser? Где комментарии? Где описание?
Это сообщение было перенесено сюда или объединено из темы "Аналог команды PAGE системного отладчика" |
Сообщ.
#3
,
|
|
|
Цитата B.V. @ Что делает команда PAGE отладчика Syser? Где комментарии? Где описание? Выводит по виртуальному (линейному) адресу его физический. Вот! А описание там излишне, и так по коду всё понятненько! Это сообщение было перенесено сюда или объединено из темы "Аналог команды PAGE системного отладчика" |
Сообщ.
#4
,
|
|
|
а зачем нам физический адрес ?
Это сообщение было перенесено сюда или объединено из темы "Аналог команды PAGE системного отладчика" |
Сообщ.
#5
,
|
|
|
Цитата Dem_max @ а зачем нам физический адрес ? Можно его и подменить на любой другой физический... А, вааще, язык учат начиная с азбуки, а эта PAGE - это уже понимание трансляции адресов, своего рода ABC для ПК. Добавлено B.V. Мне бы хотя бы одну Dgm!!! А то я Senior Member и без наследства. Это сообщение было перенесено сюда или объединено из темы "Аналог команды PAGE системного отладчика" |
Сообщ.
#6
,
|
|
|
Азбука это не понимание как какая нибудь ОС транслирует адреса виртуальные в физические, это внутренние механизмы ОС.
Это сообщение было перенесено сюда или объединено из темы "Аналог команды PAGE системного отладчика" |
Сообщ.
#7
,
|
|
|
Dem_max
Отвяжись! Мне от B.V. денюжка нужна, а ты все портишь! Это сообщение было перенесено сюда или объединено из темы "Аналог команды PAGE системного отладчика" |
Сообщ.
#8
,
|
|
|
Давай я тебе в репу дам
Это сообщение было перенесено сюда или объединено из темы "Аналог команды PAGE системного отладчика" |
Сообщ.
#9
,
|
|
|
Это сообщение было перенесено сюда или объединено из темы "Аналог команды PAGE системного отладчика" |
Сообщ.
#10
,
|
|
|
Цитата Бублик @ Выводит по виртуальному (линейному) адресу его физический. Вот! А описание там излишне, и так по коду всё понятненько! Описание там не излишне. В таком виде я эту статью в ФАК принять не могу Опиши смысл кода, и хотя бы коротко -- принцип действия, и прокомментируй ключевые моменты Цитата Бублик @ Мне от B.V. денюжка нужна За любое пополнение ФАКа полагается награда, это даже не обсуждается Это сообщение было перенесено сюда или объединено из темы "Аналог команды PAGE системного отладчика" |
Сообщ.
#11
,
|
|
|
Хорошо. Спасибо! Я за выходные сделаю.
Это сообщение было перенесено сюда или объединено из темы "Аналог команды PAGE системного отладчика" |
Сообщ.
#12
,
|
|
|
B.V.
В облом что-то ещё писать. Извини за потерянное из-за меня время! Это сообщение было перенесено сюда или объединено из темы "Аналог команды PAGE системного отладчика" |
Сообщ.
#13
,
|
|
|
Бублик, жаль
Если передумаешь, подними тему Это сообщение было перенесено сюда или объединено из темы "Аналог команды PAGE системного отладчика" |
Сообщ.
#14
,
|
|
|
Цитата Бублик @ Или хотя бы 1 D.g. получить бы мне?!!! А в чём фишка этих D.g.? Для чего они? B.V., какие темы нужны в FAQ? Вот к примеру недавно я приводил код для получения букв подключенного виртуального диска. Такой код годится для FAQ? Это сообщение было перенесено сюда или объединено из темы "Аналог команды PAGE системного отладчика" |
Сообщ.
#15
,
|
|
|
Цитата neokoder @ А в чём фишка этих D.g.? Для чего они? Для повышения ЧСВ Цитата neokoder @ B.V., какие темы нужны в FAQ? В основном, те, которые поднимаются часто (Frequently Asked Questions) Цитата neokoder @ Вот к примеру недавно я приводил код для получения букв подключенного виртуального диска. Такой код годится для FAQ? Нет, такой код годится для Наших Исходников Собственно, код, предложенный Бубликом, тоже годится скорее для этого раздела, чем для раздела FAQ. Не припомню вопросов про трансляцию адресов в нашем разделе. Зато у нас неоднократно всплывали вопросы по различию флешки от жесткого диска и получения уведомления/управления новым USB-Storage устройством, и такой код однозначно пойдет в FAQ. За награждения за пополнение C++ FAQ отвечаю я, за пополнение раздела Наши Исходники отвечает модератор раздела, сейчас это Флекс. Это сообщение было перенесено сюда или объединено из темы "Аналог команды PAGE системного отладчика" |
Сообщ.
#16
,
|
|
|
Цитата B.V. @ Зато у нас неоднократно всплывали вопросы по различию флешки от жесткого диска и получения уведомления/управления новым USB-Storage устройством, и такой код однозначно пойдет в FAQ. Моя функция http://forum.sources.ru/index.php?showtopi...9368IsFlasDrive подойдёт? Цитата B.V. @ получения уведомления/управления новым USB-Storage устройством Немного не понял что имеется ввиду. Ещё к примеру я постил код-шаблон для обработки исключений по RAII и в стиле C. Пойдёт в FAQ? Наверняка часто задают, я сам пару тем здесь замечал. И вообще какой механизм пополнения FAQ? Вот к примеру вопрос задаётся несколько раз и задающий получает на него ответ в одной теме, и получается как-бы можно уже этот ответ добавлять в FAQ, поскольку несколько раз спрашивается. Это сообщение было перенесено сюда или объединено из темы "Аналог команды PAGE системного отладчика" |
Сообщ.
#17
,
|
|
|
Цитата neokoder @ Моя функция http://forum.sources.ru/index.php?showtopi...9368IsFlasDrive подойдёт? Подойдет, только пост стоит немного почистить от переписки по теме Цитата neokoder @ И вообще какой механизм пополнения FAQ? Вот к примеру вопрос задаётся несколько раз и задающий получает на него ответ в одной теме, и получается как-бы можно уже этот ответ добавлять в FAQ, поскольку несколько раз спрашивается. Постарался описать в прикрепленном посте. Ответ, как правило, дается с минимальным описанием, лишней перепиской по теме, и не всегда с законченным кодом. Для добавления в FAQ пост может потребовать некоторой правки |
Сообщ.
#18
,
|
|
|
Цитата B.V. @ Ответ, как правило, дается с минимальным описанием, лишней перепиской по теме, и не всегда с законченным кодом. Для добавления в FAQ пост может потребовать некоторой правки Я всегда стараюсь дать законченный код, там где это возможно. Цитата B.V. @ Код должен сопровождаться описанием "Что код решает", "Как он работает" и "Как им пользоваться" Сделаю. Цитата B.V. @ Постарался описать в прикрепленном посте. Значит я понял, что мне надо добавить описание. А вот следующее не очень: Цитата B.V. @ Если код предназначен для FAQ, он должен быть написано на ЯП раздела Насколько я увидел, есть только один общий раздел FAQ C++. Т.е. ты имеешь ввиду ЯП это С/С++? Или же у нас в разделе "Системное прогнраммирование" ты сделаешь отдельную тему для FAQ? Цитата B.V. @ Код должен использовать только стандартные возможности платформы, для которой он предназначен А вот это не понял, что подразумевается под стандартные возможности платформы? К примеру DecviceIOControl - это стандартные возможности? Добавлено Цитата B.V. @ Для добавления в FAQ пост может потребовать некоторой правки Да я вообще могу отдельным текстом всё сделать. Или же надо обязательно чтобы была ссылка на пост в теме? Сейчас посмотрел Раздел FAQ там вроде тему можно самому создавать. Так что я постю туда IsFlasDrive с описанием? |
Сообщ.
#19
,
|
|
|
Цитата neokoder @ Насколько я увидел, есть только один общий раздел FAQ C++. Т.е. ты имеешь ввиду ЯП это С/С++? Именно так. У нас один раздел FAQ на все C/C++ разделы из-за сравнительно малой активности пополнения. Как только активность увеличится, вполне вероятно, что С++ WinAPI обзаведется собственным подразделом Цитата neokoder @ А вот это не понял, что подразумевается под стандартные возможности платформы? К примеру DecviceIOControl - это стандартные возможности? Подразумевается не использование сторонних компонентов и библиотек, таких, как libusb, fmod, tinyxml и т.п., потому как это отдельные чужие проекты Добавлено Цитата neokoder @ Сейчас посмотрел C/C++ FAQ]Раздел FAQ там вроде тему можно самому создавать. Так что я постю туда IsFlasDrive с описанием? Нет, темы в этот раздел могут добавлять только модераторы. Ты создаешь тему или пост в этом разделе, а я переношу в раздел FAQ |
Сообщ.
#20
,
|
|
|
Цитата B.V. @ Подразумевается не использование сторонних компонентов и библиотек, таких, как libusb, fmod, tinyxml и т.п. Ясно. Т.е. без дополнительных либ, токмо чистый WinAPI и Standard C/C++ Libraries. Ok. Добавлено Цитата B.V. @ Нет, темы в этот раздел могут добавлять только модераторы. Ты создаешь тему или пост в этом разделе, а я переношу в раздел FAQ в этом разделе имеется ввиду "Системное программирование"? |
Сообщ.
#21
,
|
|
|
Цитата neokoder @ в этом разделе имеется ввиду "Системное программирование"? Да |
Сообщ.
#22
,
|
|
|
Цитата B.V. @ Да Как озаглавливать тему? |
Сообщ.
#23
,
|
|
|
На твое усмотрение. Если название будет соответствовать содержанию, его и оставлю
|
Сообщ.
#24
,
|
|
|
В общем трендец! Не вижу больше никакого смысла тратить время на наполнение FAQ, после своих 2-х попыток.
Мне просто смешно, когда некоторые здешние спецы(вроде Dem_max и Мальчиша), вместо того, чтобы обращать внимание на функционал парят себе мозг синтаксисом. Откройте тогда FAQ по синтаксису C/C++ и занимайтесь там этим вдвоём на здоровье . p.s. хотел было написать следующий FAQ по определению серийника жесткого диска(вопросы такие возникали здесь) в 2-х вариантах, с помощью WMI и DeviceIOControl, но теперь уже точно не буду. А то пришьют ещё неправильное использование стиля(есть такой? ) С/C++ и будут мне усердно доказывать как правильно писать программы . Да ну его нафиг такие приколы! |
Сообщ.
#25
,
|
|
|
Ребята, давайте поактивнее как-то. У вас же есть свои заготовки, можете обработать и выложить, и получить за это DGM'ку
|
Сообщ.
#26
,
|
|
|
У меня есть исходник, который писал для друга, чтоб показать разные фичи.
Возбудился после его фразы: "так каждый дурак сможет, а вот без стандартной библиотеки, на чистом C и windows api." Программа бесполезная. Делает окошко на windows api и изображает оживление. Но можно посмотреть следующее: 0. Компиляция командными файлами. 1. отключение стандартных библиотек и функция WinMainCRTStartup. 2. Создание главного немодального окна CreateWindowEx, RegisterClassEx. 3. Добавление в окно дочерних контролов. WC_STATIC, WC_BUTTON. 4. Загрузка внешней библиотеки LoadLibrary, FreeLibrary. и Добавление дочернего контрола richedit. 5. Работа с кучей процесса HeapAlloc, HeapFree. 6. создание таблици строк в ресурсах и загрузка строки LoadString. Особенно интересна сама компиляция ресурсов под ms vs 2012 7. Вывод сообщения об ошибке, т.е. получение текста FormatMessage 8. Клавишная навигация по окну. IsDialogMessage, DefDlgProc. 9. Обработка акселераторов TranslateAccelerator. Ну и по мелочи немного. Оно такое интересно, или нафиг? Прикладываю во вложении. Код надо бы подчистить. Да и приму замечания. Пишите в личку. Прикреплённый файлumnik.zip (16 Кбайт, скачиваний: 972) Думаю, что в таком виде не очень годится. Если интересно постораюсь оформить. p.s. Друг положил его на дальнюю полочку и сказал, что обязательно посмотрит, когда освободится от текущих дел. А я развлекаюсь наворачиванием. p.p.s. Возможно буду из этого "шаблона" разворачивать боевой код. Может чатик сделаю. Или чего-нибудь по круче. |
Сообщ.
#27
,
|
|
|
Цитата Eric-S @ У меня есть исходник, который писал для друга, чтоб показать разные фичи. В этом примере много всего ненужного или малоинтересного, к тому же, для ФАКа важен не только пример, но и пояснения принципа работы, или хотя бы, достаточно наглядный код Цитата Eric-S @ 1. отключение стандартных библиотек и функция WinMainCRTStartup. В принципе, вопрос интересный, но не популярный Цитата Eric-S @ 7. Вывод сообщения об ошибке, т.е. получение текста FormatMessage А вот это может быть интересно в качестве отдельной мини-статьи. Туда же, было бы очень желательно добавить пример DbgHelp-API с выводом не только подробного описания ошибки, но и стека, загруженных модулей и информации о каждом модуле в отдельности (версия, разрядность и т.д.) |
Сообщ.
#28
,
|
|
|
B.V., вроде бы не часто про это спрашивают, но, ИМХО, будет полезно иметь такую функцию в исходниках. Как считаете?
|
Сообщ.
#29
,
|
|
|
Цитата B.V. @ В этом примере много всего ненужного или малоинтересного, к тому же, для ФАКа важен не только пример, но и пояснения принципа работы, или хотя бы, достаточно наглядный код Согласен. Много.. С другой стороны простое "hello, world'" или точнее "mi first window неинтересно и легко ищется. А вот что дальше, не всегда и понятно. Тестовый код пишется так, а приближаясь к боевому, уже совсем иначе. Та же обработка ошибок, меня очень напрягла. У меня есть. Предложил к рассмотрению, в качестве исходной точки. Описать и объяснить могу почти всё. Но вот нужно ли кому-то? Цитата Eric-S @ 1. отключение стандартных библиотек и функция WinMainCRTStartup. Цитата B.V. @ В принципе, вопрос интересный, но не популярный С этого всё и началось и это была как раз основная фича всей затеи. Требовался проект без стандартной библиотеки, причом работающий. Дело было 1 апреля, и друг, пытался меня развести, что главной функцией является StartFunction. А не какая-то MainCRTStartup Даже кинул мне упоротый проект, якобы доказывающий его правоту. И что со стандартной библиотекой каждый дурак может. Я же кинулся доказывать, что он не прав. До сих пор не понимаю, это была попытка развода или он гнал на полном серьёзе. Цитата Eric-S @ 7. Вывод сообщения об ошибке, т.е. получение текста FormatMessage Цитата B.V. @ А вот это может быть интересно в качестве отдельной мини-статьи. Туда же, было бы очень желательно добавить пример DbgHelp-API с выводом не только подробного описания ошибки, но и стека, загруженных модулей и информации о каждом модуле в отдельности (версия, разрядность и т.д.) Ха-эм. У меня это всё есть но уже на C++. symbols - загрузка символьной информации, трансформация адреса функции в символьное имя. stack_trace - трассировка стека и возврат его строкового представления messages - локализация сообщений на основе функции FormatMessage Плюс некоторые сервисы, чтоб по ходу исполнения выводить диагностические сообщения об ошибках. Правда вот не помню куда потерял класс получающий информацию о модуле. Но что-то такое писал. Получение названия, версии, описания, языка ресурсов, имени разработчика... Но я думаю, что такое надо разбирать по отдельности. 1. Локализация и компиляция сообщений . 2. Трассировка и распечатка стека. 3. перехват исключений и Диагностическое окно с информацией об ошибке. Плюс к этому затрагиваются темы обработки структурных и векторных исключений. Да и работу обычных плюсовых исключений нужно расковырять, для понимания нюансов. Если же упрощать, то конечно можно накалякать чего-нибудь простенькое на чистом си. Но вот в боевом коде, я такого не использовал и не знаю, что ожидать. Будет круто, но бесполезно. |
Сообщ.
#30
,
|
|
|
Цитата artsb @ B.V., вроде бы не часто про это спрашивают, но, ИМХО, будет полезно иметь такую функцию в исходниках. Как считаете? Я, честно говоря, не очень понял, чем она отличается от LoadString.. В отличие от последней не смотрит языковой идентификатор? Цитата Eric-S @ У меня это всё есть но уже на C++. Собственно, на C++ оно было бы и предпочтительнее И да, было бы неплохо так же пройтись немного по C++ Exceptions. Подробно писать в рамках одной статьи не вижу смысла, лучше коротко суть, а при желании, подробности вынести в отдельную статью Цитата Eric-S @ Правда вот не помню куда потерял класс получающий информацию о модуле. Но что-то такое писал. Получение названия, версии, описания, языка ресурсов, имени разработчика... Я не совсем это имел ввиду, это уже чтение ресурсов, использование GetFileVersionInfo и сопутствующих Я же имел ввиду чтение инфы из PE-заголовка посредством DbgHelp Цитата Eric-S @ Но я думаю, что такое надо разбирать по отдельности. 1. Локализация и компиляция сообщений . 2. Трассировка и распечатка стека. 3. перехват исключений и Диагностическое окно с информацией об ошибке. Согласен, каждая тема тянет на отдельную статью в ФАК, но было бы так же неплохо иметь обобщенный пример создания отчета |
Сообщ.
#31
,
|
|
|
Цитата B.V. @ Я, честно говоря, не очень понял, чем она отличается от LoadString.. В отличие от последней не смотрит языковой идентификатор? Разница большая. У нас с ЫукпШ на эту тему дискуссия была в той же ветке. Почитайте там. А то мне лень всё заново объяснять Я ж поэтому и предлагаю добавить её в исходники, т.к. там не всё так просто. |
Сообщ.
#32
,
|
|
|
Цитата artsb @ У нас с ЫукпШ на эту тему дискуссия была в той же ветке. Почитайте там Все, что я смог выцепить из вашей дискуссии, это Цитата artsb @ я сейчас не буду рассказывать что и как. Я прочитал на эту тему много информации на форумах и накатал функцию Может, вкратце объяснишь, что в твоей функции особенного? |
Сообщ.
#33
,
|
|
|
Ок. В общем, суть в том, что строки в ресурсах хранятся не просто так, а блоками по 16 штук. Поэтому, простой вызов:
FindResource(hInstance, StringID, RT_STRING); ничего не даст. Так как строки с идентификатором StringID в ресурсах нет. Нужно определить, в каком блоке находится строка. Получить этот блок. И уже из него вытащить саму строку. Мало кто об этом знает. Обычно все сразу пытаются скормить FindResource свой идентификатор строки и ничего не находят. Вот поэтому, я и предложил эту функцию добавить в исходники |
Сообщ.
#34
,
|
|
|
Цитата artsb @ Мало кто об этом знает. Обычно все сразу пытаются скормить FindResource свой идентификатор строки и ничего не находят. ибо не многие пытаются прочитать, что такое RT_STRING.... |
Сообщ.
#35
,
|
|
|
Ой! Помню, как в давние времена, намучался, выковыривая стандартное сообщение об исключении!
Сейчас уже подробностей не помню. Но пришлось юзать RtlFindMessage, так как FormatMessage сообщение видел, но отдавать не хотел. Вспомнил, даже жутко стало. А ведь не пользуюсь этим кодом. Лениво подключать. И вообще, подозреваю, что сейчас, в ядре, тех сообщений нет в помине. Под хрюшей такие потрясающе информативные окошки были... "программа попыталась read память по адресу xxx" А на семёрке, всё не так. Окно для юзеров и даже придушить его системой не реально. Только из своей программы, исключительно для её процесса. |
Сообщ.
#36
,
|
|
|
Цитата ElcnU @ ибо не многие пытаются прочитать, что такое RT_STRING.... Так вот тож. |
Сообщ.
#37
,
|
|
|
Цитата artsb @ Нужно определить, в каком блоке находится строка. Получить этот блок. И уже из него вытащить саму строку. Тогда оформи, плиз, отдельным постом с пояснениями, в ФАК не уйдет, но в разделе Наши Исходники определенно лишним пример не будет |
Сообщ.
#38
,
|
|
|
B.V., проверяйте
|
Сообщ.
#39
,
|
|
|
Неплохо. Но я ожидал что-то вроде этого, т.е. немного более подробное описание технических моментов
Доработаешь или принимать в текущем виде? |
Сообщ.
#40
,
|
|
|
Цитата B.V. @ Неплохо. Но я ожидал что-то вроде этого, т.е. немного более подробное описание технических моментов Доработаешь или принимать в текущем виде? ага, я по инерции тоже с этим исходником сравнил |
Сообщ.
#41
,
|
|
|
Цитата B.V. @ Доработаешь или принимать в текущем виде? Ок. Прочитаю статью и доработаю |
Сообщ.
#42
,
|
|
|
Исправил. Проверяйте
|
Сообщ.
#43
,
|
|
|
О, вот это то, что надо
|
Сообщ.
#44
,
|
|
|
Рад стараться
|