В настоящее время я работаю над кодом C #, который вызывает пользовательскую, собственную dll. При маршалинге данных обратно в C # мне нужно явно выровнять поля классов / структур, используемых для маршалинга. У меня был ряд проблем с этим из-за неполного понимания маршалера и его правил. Например, я недавно через вопрос SO узнал, что маршалер требует, чтобы массивы были выровнены по DWORD. Если бы я знал это раньше, это избавило бы меня от головной боли.
У меня вопрос двоякий:
1) Есть ли хорошая документация для маршалера, предоставляющая этот тип информации?
2) Какие еще подобные ограничения я должен знать? (Например, все поля размера DWORD должны быть выровнены по DWORD)?