Создание структуры C# из структуры C

У меня есть несколько десятков структур C, и мне нужно использовать их в C#. Типичная структура C выглядит следующим образом:

typedef struct _UM_EVENT
{
   ULONG32 Id;
   ULONG32 Orgin;          
   ULONG32 OperationType;  
   ULONG32 Size;           
   LARGE_INTEGER Time;     
   HANDLE ProcessId;
   HANDLE ThreadId;
} UM_EVENT, *PUM_EVENT;

Чтобы использовать эту структуру в C#, я объявляю ее в C#, а затем выполняю сортировку, что можно сделать примерно так:

public struct UM_EVENT
{
   public UInt32 Id;             
   public UInt32 Orgin;          
   public UInt32 OperationType;  
   public UInt32 Size;           
   public UInt64 Time;           
   public IntPtr ProcessId;      
   public IntPtr ThreadId;       
}

private void Load(IntPtr event) {

   unsafe
   {
       UM_EVENT header = *(UM_EVENT*)event;
   }
}

ИМХО, у этого подхода есть следующие недостатки, если код пишется много раз:

  1. Кодирование не быстрое и не требует много размышлений
  2. Код, вероятно, будет содержать много ошибок, которые могут оставаться незамеченными в течение длительного времени
  3. Код не очень удобен в обслуживании, потому что изменение структуры C требует того же изменения в структуре C#

Итак, кто-нибудь знает утилиту, которая автоматически генерирует представленный код C# из данных структур C? Или есть совершенно другой способ, как удобно использовать большое количество структур C в C#?

0 ответов

Другие вопросы по тегам