No good deed goes unpunished, part 2
Raymond Chen, оказывается, такой душка.
На месте Exchange Server team я бы уже начал писать ругательное письмо.
Not a kernel guy… in the Windows kernel team |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Thursday, October 19, 2006No good deed goes unpunished, part 2Raymond Chen, оказывается, такой душка. Tuesday, October 17, 2006Есть у меня мечта…… причем, судя по всему, несбыточная. Хочу чтобы Visual C++, Platform SDK и WDK (бывший DDK) можно было использовать как отдельные кирпичики, из которых можно составить нужное окружение для сборки программ. Ведь по сути каждый их них это набор из компилятора, библиотек и подсистемы сборки (nmake, build или Visual Studio IDE). Выбрать бы из этой россыпи нужную версию компилятора и требуемый набор библиотек… Казалось бы все должно быть довольно просто, однако кругом рассыпано столько граблей, что просто руки опускаются. Вот, скажем, пытался я собрать небольшую DLL, написанную на Managed C++ с помощью свежего WDK. В WDK не входит mscoree.lib, однако её можно взять из Platform SDK. Добавляю её в TARGETLIBS и натыкаюсь на древнее как сам build.exe ограничение - запрет на использование пробелов в путях. Наверняка build.exe использовался для сборки самой Windows NT 4.0 которая вышла больше 10-ти лет назад и которая дружила с пробелами в путях с самого рожденья. За 10-то лет можно было побороть эту проблему? Понятно, что можно использовать короткий путь, вместо длинного, либо создать символическую ссылку. Однако это ограничивает переносимость между разными машинами, поскольку требует дополнительной настройки каждого из компьютеров. Остаётся только использовать nmake или что-то стороннее вроде Boost.Build и городить кучу умных скриптов, которые будут анализировать конфигурацию и настраивать все более-менее автоматически. Эх! Upd: запрет на пробелы в TARGETLIBS удалось таки обойти. Достаточно добавить вот такую строчку в SOURCES: LINKER_OPTIDATA = \\
"$(VS80COMNTOOLS)..\\..\\VC\\PlatformSDK\\lib\\mscoree.lib"
Значение LINKER_OPTIDATA пишется в файл ответов (response file) линкера как есть, без изменений. Это работает для WDK build 5759. Вечером попробую на 5600. Friday, October 13, 2006Дело о невидимых файлах.Как вы думаете, какой сообщение выведет нижеследующая программа, в случае если её запустить на Windows Vista 64 с правами обычного пользователя, т.е. пользователя, у которого нет прав на запись в каталог “C:\Program Files”?
Thursday, October 12, 2006Зеркало на blogs.gotdotnet.ru.Со вчерашнего дня у блога появилось зеркало на blogs.gotdotnet.ru. Тyда будут копироваться заметки, посвяшённые разработке софта вообще и программированию под Windows в частности. Отдельное спасибо Александру Ложечкину за приглашение и помощь в создании зеркала. Wednesday, October 11, 2006COM marshalling: создание proxy/stub на коленке.Хочу поделиться рецептом победы над коварным IShellLinkDataList (см. предыдущие посты COM marshalling. и Shortcuts, shell and COM apartments.) Итак, исходная задача: вызвать метод локального интерфейса (интерфейса, помеченного атрибутом [local]) удалённо. Tuesday, October 10, 2006Работа над ошибками.Наткнулся сегодня на блог Александра Ложечкина и на его пост SAL - кое-что новое для С++ в частности. В двух словах SAL (Standard Annotation Language) - это способ дать компилятору немного больше информации о том, как та или иная функция использует переданные ей параметры: in/out аттрибуты, размеры буферов и т.п. Компилятор, используя эту информацию, может делать дополнительные проверки кода, находя, скажем, ошибки переполнение буфера. Более того, статические анализаторы кода, тот же PREfast, также могут использовать эту информацию, повышая тем самым эффективность и точность анализа. Так вот меня удивило количество, да и качество тоже, негативных комментариев. Как-то очень явно чувствуется отношение “нам это не надо, мы и сами умные”. Интересно, а кто тогда рассаживает баги, как не сами программисты? Я даже разразился речью в комментариях:
Monday, October 9, 2006COM marshalling, документация и все, все, все…Все-таки, наверное, Европейский Суд не зря судит Microsoft за недостаточно хорошую документацию. Пытаясь разобраться как, все таки, написать proxy для интерфейса IShellLinkDataList (см. предыдущие посты: COM Marshalling. и Shortcuts, shell and COM apartments.), перечитал уйму документации, пока не нашел толкового описания того, что я хочу сделать на сайте Dr. Dobb’s. Если попытаться описать весь процесс “метаний”, то выглядело это так: |
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Powered by WordPress