информационная безопасность
без паники и всерьез
 подробно о проекте
Rambler's Top100За кого нас держат?Сетевые кракеры и правда о деле ЛевинаГде водятся OGRы
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Утекший код XP и Windows Server... 
 Дела виртуальные 
 Простое пробивание рабочего/провайдерского... 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / блог / архив / 2013
АРХИВ
архив
2020
2019
2018
2017
2016
2015
2014
2013
2012
2011
2010
2009
2008
2007
2006
2005
2004
2003
2002
archive




Paragon Partition Manager 7.0

ATLное
07.04.13 19:08 // оригинал
Нда, все-таки эти игры с отменой/возвратом поддержки XP в 2012-й студии не остались без последствий (причем ладно бы только в сторонних библиотеках, но ведь и с родными черт-те что). На первый взгляд все просто - в студии выбрать тулсет v110_xp, для консольной сборки определить _USING_V110_SDK71_ и наслаждаться процессом. Но вот сегодня убил буквально полдня, пытаясь понять, где же в проекте вылез код, дергающий под XP функцию InitializeCriticalSectionEx, которой в местном kernel32.dll просто нет - с понятными последствиями.

Поиски дошли до файла atlwinverapi.h, где _AtlInitializeCriticalSectionEx в зависимости от того, определен ли _USING_V110_SDK71_, вызывает либо ту самую InitializeCriticalSectionEx, либо InitializeCriticalSectionAndSpinCount. И совершенно фантастическое ощущение - смотреть, как дебаг-версия заходит в подсвеченную серым ветку, плюя на значение макроса. С причиной более менее понятно - MS не дает отдельную версию ATL, а собранная и используемая в MFC (причем с установленным _ATL_STATIC_LIB_IMPL, тоже любовался проходом по этой серой ветке) не в курсе про заморочки с v110_xp. Но как это обходить - совершенно непонятно, все настройки, до которых можно добраться в своем проекте, на это поведение не влияют по определению.

Пришлось смотреть, откуда идет этот вызов. Оказался единственным, но в CImage::CInitGDIPlus::CInitGDIPlus, что несколько напрягло - замаячила перспектива делать для XP версию без GDI+. По счастью все оказалось проще, пришлось избавиться только от ATL::CImage. Тоже дико, но не фатально.

Итого могу сказать, что хоть и неплохо, что появился v110_xp, но появился он в роли бедного родственника, далеко не весь код можно перенести без существенных потерь. Когда уж та XP вымрет...

   
теги: софт, программизм  |  обсудить  |  все отзывы (0)  |  обсудить в LJ [3081]
назад «  » вперед

аналогичные материалы
яблочнопереключальное // 26.07.20 17:07
яблочноденежное // 14.07.20 23:06
ГПБ vs TV // 06.06.20 21:32
гуглемитное-2 // 14.04.20 16:01
гуглемитное // 10.04.20 12:12
сиктранзитное // 19.12.18 20:27
OpenVPNское // 27.08.18 15:09
креаторскобожественное // 20.05.17 16:37
креаторскобэкапное // 08.04.17 19:07
студийнораздутое // 08.03.17 02:24
 
последние записи
яблочноучебное // 11.09.20 18:34
яблочнопереключальное // 26.07.20 17:07
яблочноденежное // 14.07.20 23:06
яблочноотличное // 14.07.20 15:37
памятное // 18.06.20 00:59
ГПБ vs TV // 06.06.20 21:32
викиисключительное // 20.05.20 21:20
гуглемитное-2 // 14.04.20 16:01
гуглемитное // 10.04.20 12:12
микрофонное // 27.03.20 17:49


авто венгрия вырвиглаз германия глюки греция гуглемап драйверы египет железки журнализм империя добра испания италия кино кипр клоуны книги криворучки оспорт португалия программизм сайт софт стрим студень турция уродцы фото франция цацки чехия читалки android bq e51 eeepc from facebook hd2 hpc htc ipad iphone onlime vista windows 10 windows 7 windows 8 yota



Rambler's Top100
Рейтинг@Mail.ru



  Copyright © 2001-2020 Dmitry Leonov   Page build time: 0 s   Design: Vadim Derkach