27 December, 2008

Очень старый .NET VB compiler bug

Это эту неделю написал несколько классов на C++ для работы с телом .NET IL метода. Данный код жизненно необходим в новом dotTrace для line-by-line & coverage profiling. Прошло 1.5 года с того момента, когда я нашел несоответствие кода порождаемого .NET VB compiler спецификации Ecma-335, Partition II (Metadata Definition and Semantics), 25.4.5 (Method data section). После нескольких .NET Framework Service Pack и выхода VS2008 ничего не поменялось - эта bug живет и здравствует.

Суть проблемы в том, что поле DataSize для структур IMAGE_COR_ILMETHOD_SECT_FAT и IMAGE_COR_ILMETHOD_SECT_SMALL содержит длину секции БЕЗ УЧЕТА заголовка секции (4 байта). По спецификации значение должно быть 4+24*n или 4+12*n соответственно.

02 December, 2008

Особенности реализации стандартных API функций в WindowsMobile

MSDN for WindowsMobile 5.0

"... If the thread is making a kernel call, SuspendThread fails. An application might need to repeat the SuspendThread several times for it to succeed. ..."