2017-11-01 7 views
3

私はMarshalクラスを使用して管理されていない構造体を解析しています。これまでのところ、すべてが期待どおりに機能しますが、管理されていないCharをManaged列挙型に変換する方法を苦労しています。例えば列挙するバイトをマーシャル

:これはエラーになります

<StructLayout(LayoutKind.Sequential, Pack:=1)> 
Public Structure UnamangedToManaged 
    <MarshalAs(UnmanagedType.I1)> 
    Public _Enum As ManagedCustomEnum 
end structure 


Public Enum ManagedCustomEnum 
    Value_1 
    Value_2 
    Value_3 
    Value_4 
    Value_etc 
End Enum 

Unvalid combination

私は単に構造体の残りのためのインデックスを除く<MarshalAs(UnmanagedType.I1)>、その後の解析作品を削除する場合はオフになっている、unvalid値を与えます。

多くの可能性を試してみましたが、MSDNのすべての記事も読んでいますが、まだ運がありません。

誰かが私を正しい方向に向けることができたらいいと思います。

答えて

5

Enumには、デフォルトの基本タイプInt32があります。

Public Enum ManagedCustomEnum As Byte 
    Value_1 
    Value_2 
    Value_3 
    Value_4 
    Value_etc 
End Enum 
+0

正確には私が探していたもの、時にはそれはあなたが思うより簡単です:-)あなたは宣言の中でByteに変更する必要があります。 – Gforse

関連する問題