Trong một nỗ lực để tìm hiểu để sử dụng PInvoke trong C#, tôi là một chút không chắc chắn làm thế nào để xử lý các trường hợp khác nhau với con trỏ liên quan đến các loại giá trị đơn giản.Làm thế nào để P/Gọi khi con trỏ được tham gia
tôi nhập khẩu hai chức năng sau đây từ một DLL không quản:
public int USB4_Initialize(short* device);
public int USB4_GetCount(short device, short encoder, unsigned long* value);
Chức năng đầu tiên sử dụng con trỏ như một đầu vào, thứ hai như một đầu ra. sử dụng của họ là khá đơn giản trong C++:
// 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
nỗ lực đầu tiên của tôi trong C kết quả # trong P sau/Gọi ra:
[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*
Làm thế nào để sử dụng các chức năng này trong C# trong cùng một cách như Mã C++ ở trên? Có cách nào tốt hơn để khai báo các loại này, có thể sử dụng MarshalAs
?
Hey, USB 4 chưa? Tôi vẫn đang chờ đợi 3,0 –
Tôi ước. Nó không có gì để làm với USB4. Đây chỉ là một thiết bị USB công ty có để kết nối với một bộ mã hóa, và vì nó là phiên bản thứ 4 của sản phẩm của họ, họ ngu ngốc đặt tên cho sản phẩm USB4. –