Столкнулся с проблемой заполнения полей структуры при миграции из VB6 в VB.Net..
Например, есть структура:
Public Structure PciNonBridge
Dim VendorId As Short 'первая группа
Dim DeviceId As Short
Dim command_reg As Short
Dim status_reg As Short
Dim revisionID As Byte 'вторая группа
Dim progIF As Byte
Dim subclass As Byte
Dim classcode As Byte
Dim cacheline_size As Byte 'третья группа
Dim latency As Byte
Dim header_type As Byte
Dim BIST As Byte
...
Тут много еще чего (массивов нет).
...
End Structure
При вызове функции из DLL, заполняющей эту структуру, происходит следующее: первая группа заполняется корректно, а информация из
третьей группы попадает во вторую. Из следующих в третью и т.д. Т.е. происходит смещение влево на 4 байта всей структуры, начиная с третьей группы.
Думаю, излишне говорить, что в VB6 это все работает.