2012-02-20 1 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이 열거입니다 :