2011-03-30 2 views
5

포인터를 인수로 사용하는 관리되지 않는 DLL이 있습니다. C#에서 '안전하지 않은'포인터를 어떻게 전달합니까?C#에서 관리되지 않는 DLL로 포인터를 전달하는 방법은 무엇입니까?

[DllImport(@"Bird.dll")] 
private static extern bool foo(ushort *comport); 

헤더에 해당하는 항목 : "포인터 :

BOOL DLLEXPORT foo(WORD *pwComport); 

나는 시도하고 단순히 역 참조 그것을 (&comport), 내 말은 오류가 여기에

몇 가지 예제 코드입니다 고정 크기 버퍼는 안전하지 않은 컨텍스트에서만 사용할 수 있습니다.
"

어떻게 해결할 수 있습니까?

답변

13

사용 ref :

[DllImport(@"Bird.dll")] 
private static extern bool foo(ref ushort comport); 

전화를 그렇게 등 :

ushort comport; 
foo(ref comport); 

이 같은 상호 운용성을 위해, 나는 WORD에 동등하게 UInt16보다는 ushort를 사용하는 것을 선호 것입니다.

+0

오, 그 사람은 간단합니다! –