2012-02-20 4 views
2

InterOpServicesを使用して外部DLLに渡すUInt32値があります。PInvokeでI8タイプとしてマーシャルする方法は?

アンマネージコードのプロトタイプは次のとおりです。

[DllImport("svr.dll")] 
public static extern UInt32 CreateTag (
    [MarshalAs(UnmanagedType.LPStr)] String Name, 
    Object Value, 
    UInt16 InitialQuality, 
    bool IsWritable); 

呼び出し元のコードは次のとおりです。

int myValue = Convert.ToInt32(item); //How to marshal as I8 type 
tagNumber = (UInt32)svr_DLL.CreateTag(
    DeviceName + "." + el.tagName, 
    myValue, // <-- this argument 
    192, 
    Convert.ToBoolean(el.tagEditable)); 

私はI8タイプとしてオブジェクト値「myValue」に渡します。

どうすればいいですか?あなたに、この便利

string value = "9"; 
UnmanagedType i8 = (UnmanagedType)Enum.Parse(typeof(UnmanagedType), value); 

希望:あなたはEnum.Parse方法を試すことができますので、[MarshalAs(UnmanagedType.I8)]

答えて

6

あなたはパラメータ宣言にそれを指定する必要があります。

1

UnmanagedTypeが列挙型である:

関連する問題