← All posts tagged MS

iorlas

Сколько не сижу на венде, не пишу под ней и для неё, всё диву даюсь как на этом ещё кто-то сидит, как оно стало популярно и как вообще MS хватает терпения писать и поддерживать такое, простите, дерьмище. Дерьмище, оно же ВСЁ, всё что пишут MS.
Чуть больше конкретики:
Все знают, что не редко приложение может терять контекст, устройство Direct3D. После его потери, необходимо произвести восстановление как ресурсов, так и самого устройства. Алгоритм прост:
1) Удалить D3D ресурсы(Release или OnLostDevice)
2) Восстановить устройство(Reset)
3) Восстановить ресурсы(с нуля создать или OnResetDevice)

Но вот есть одна проблема. Если хоть ОДИН из ресурсов не будет удалён до Reset, но будет использован для рендера до потери устройства, то Reset будет невозможен, а иногда даже может вызывать Access Violation Exception, который, обычно, не хендлится приложением, так как это SEH-исключение.
А знаете что хуже всего? Отловить где же и почему это исключение появилось — не реально. Как и не реально узнать, какой ресурс, а главное где, не был релизнут. Приходится отрубать куски кода, пока не заработает.

iorlas

Буст не поддерживает wstring, только string("т.к. буст вызывает сразу winapi, а хуй знает как там, в венде, с юникодом, поэтому и юзаем так", почти цитата с rsdn), а в "студии" юникод нормально не отключить. Вот и получается что буст с юникодом никак, а студия без него никуда, приходится хачить-трюкачить, блеать.

iorlas

Как и обещал, выкладываю готовую D3D9 прокси-длл — github.com
Суть проста:
Одна функция для хукинга — первый аргумент — оффсет функции в vtable(можно взять из enum'а в common.h), вторая — ссылка на функцию-хук.
Одна для анхукинга — то же самое, но без ссылки на функцию.
Пока всё очень скомканно и только для функции EndScene, но этого хватает.

iorlas

MSVS11 — сырое, недопиленное, медленное говно. IntelliSence для CPP? Охуенно, да. Вот только оно ТАКОЕ МЕДЛЕННОЕ, что пиздец. Создал метод. Объявил его в хёдере. Хочу имплементацию сделать:
void SimpleClass:: <ctrl>+<space>
И всё! Можно сделать кофе, поесть печенек, а ещё можно повеситься! АХАХАХА! Я сошёл с ума, да. Однако, когда приедут спасатели и снимут тебя, ты сможешь наблюдать как на скрине начинает вырисовываться неполный список методов. И знаете что? Того, что ты объявил в хёдере, там нет! АХАХАХХААХХАХА. Мне лечиться пора, думаю.
А ещё, если ты не можешь сразу написать валидный код, за один выдох, то студия начнёт обрабатывать и, если ты задумаешься над строкой, перед тем чтобы её допечатать, пометит весь код ошибками. И студии похуй что ты не поставил ";", но поставил её сейчас. Студия будет думать минут 10, пока не определит что ты пофиксил ошибку.
Я так уже раз 10 думал что я дурак, но опроверг сие компиляцией проекта. Оказалось это студия, блядь.
Ставлю эклипс, нахуй. Или нет?

iorlas

У вас проблемы? Не компилится? Выдаёт 4-страничные ошибки? Мистика, магия, ужасы, заговоры против вас? Выключите в проекте поддержку CLR и всё решится само собой!
Жена не любит? На работе не платят? Нет любовницы? Друзья бухают без тебя? Умер тамогочи? В WoW не достался лут? Проблемы с потенцией? Выключи в проекте поддержку CLR и всё будет лучше!

iorlas

Оказывается, в MSVS 2010 интелли сенс не работает с C++ и CLI. Они просто его отключили, так и сказав: "мы не осилили".
Так вот и ворую сейчас "ультимейт", чтобы поставить "вакс", который тоже придётся воровать.

iorlas

Открыл для себя библиотеку MS Detours. Стоит бешеных денег, но есть ограниченная платная версия и, что самое хорошее, есть древняя версия, в которой есть многое из новейшей платной версии, при этом старая версия не ограничена в распространении.
Что такое MS Detours? Это библиотека для перехвата исполняемых процедур. Проще говоря, это библиотека, которая сама за тебя сделает jmp после выполнения нужной функции, даст возможность выполнить свой код в её теле, а потом вернуть управление оригинальной функции. Иными словами — хороший инструмент для хукинга функций приложений, к которым можно подобраться только через инъекцию DLL.
А использую я её для сервисного приложения, отображающего оверлей в популярных игрушечках(привет, реклама в круизисе и дед айсланде).

iorlas

Фотошоп это просто пиздец. Нигде нет информации о текущем выделении(да хоть x, y дали бы!), всё тормозит, собственный формат открывает пол-часа, сохраняет всё через ж.
Вот у меня был слой в дизайне, там была сильная прозрачность. С бэкграундом всё ок, а без него — не сохраняет в нужной прозрачности. Пришлось кусок изображения сохранять с бекграундом, редактировать в гимпе, а потом вставлять в полученное изображение. Пиздец.

iorlas

Смотрю не самый плохой боевичок — Остров. Представлен город будущего: в автоматных будках терминалы для доступа к поиску MSN Search, везде развешаны логотипы msn, бабочки. Ужас.