2011-03-30 15 views
5

Bir işaretçi bir argüman olarak alan bir işlevle yönetilmeyen bir DLL var. C# 'dan bir işaretçiyi' güvensiz 'olmadan nasıl geçebilirim?Bir # işaretçisini yönetilmeyen bir DLL'ye nasıl iletebilirim?

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

başlığında karşılık gelen giriş: "İşaretçiler:

BOOL DLLEXPORT foo(WORD *pwComport); 

denemek ve sadece KQUEUE o (&comport), Şu hatayı olsun İşte

bazı örnek kod ve sabit boyutlu tamponlar yalnızca güvenli olmayan bir bağlamda kullanılabilir.
"

Bu konu üzerinde nasıl çalışıyorum?

cevap

13

Kullanım ref:

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

Çağrı bunu şöyle:

ushort comport; 
foo(ref comport); 

böyle birlikte çalışma için, ben WORD eşdeğer olarak UInt16 yerine ushort kullanmayı tercih ediyorum.

+0

Oh adam bu kadar basit! –