C# içinde PInvoke kullanmayı öğrenmek için bir girişimde, basit değerler türlerini içeren işaretçilerle çeşitli durumların nasıl ele alınacağından emin değilim.İşaretçiler dahil olduğunda P/Invoke nasıl
Bir yönetilmeyen DLL aşağıdaki iki işlevi içe ediyorum:
public int USB4_Initialize(short* device);
public int USB4_GetCount(short device, short encoder, unsigned long* value);
ilk fonksiyon bir giriş, bir çıkış olarak, ikinci olarak işaret kullanır. Onların kullanımı C++ oldukça basittir:
// Pointer as an input
short device = 0; // Always using device 0.
USB4_Initialize(&device);
// Pointer as an output
unsigned long count;
USB4_GetCount(0,0,&count); // count is output
aşağıdaki P/C# sonuçlarında Benim ilk girişimi çağırır: Ben aynı şekilde C# bu işlevleri nasıl kullanırım
[DllImport("USB4.dll")]
public static extern int USB4_Initialize(IntPtr deviceCount); //short*
[DllImport("USB4.dll")]
public static extern int USB4_GetCount(short deviceNumber, short encoder, IntPtr value); //ulong*
Yukarıdaki C++ kodu?MarshalAs
kullanarak bu türleri bildirmenin daha iyi bir yolu var mı? işaretçi tek basit tür ve bir dizi ise
Hey USB 4 zaten? Hâlâ 3.0 –
için bekliyorum. USB4 ile ilgisi yok. Bu, şirketin bir kodlayıcıya bağlanmak için sahip olduğu bir USB aygıtıdır ve ürününün 4. revizyonu olduğundan, aptalca USB4 ürününü adlandırmışlardır. –