सी # में PInvoke का उपयोग करना सीखने के प्रयास में, मुझे थोड़ा सा अनिश्चितता है कि विभिन्न मूल्यों को सरल मूल्य प्रकारों वाले पॉइंटर्स के साथ कैसे संभालना है।पॉइंटर्स शामिल होने पर P/Invoke कैसे करें
मैं एक अप्रबंधित DLL से निम्नलिखित दो कार्यों का आयात कर रहा हूँ:
public int USB4_Initialize(short* device);
public int USB4_GetCount(short device, short encoder, unsigned long* value);
पहले समारोह एक इनपुट, एक आउटपुट के रूप में दूसरे के रूप में सूचक का उपयोग करता है। उनके उपयोग सी में काफी सरल है ++:
// 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
मेरे निम्नलिखित पी/में सी # परिणामों में पहला प्रयास का आह्वान:
[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*
मैं कैसे के रूप में एक ही तरह से सी # में इन कार्यों का उपयोग करते हैं ऊपर + सी + कोड? क्या इन प्रकारों को घोषित करने का कोई बेहतर तरीका है, शायद MarshalAs
का उपयोग कर?
अरे, यूएसबी 4 पहले से ही? मैं अभी भी 3.0 –
की प्रतीक्षा कर रहा हूं। इसका यूएसबी 4 के साथ कुछ लेना देना नहीं है। यह सिर्फ एक यूएसबी डिवाइस है जो कंपनी को एन्कोडर से कनेक्ट करने के लिए है, और चूंकि यह उनके उत्पाद का चौथा संशोधन है, इसलिए उन्होंने बेवकूफ उत्पाद यूएसबी 4 नाम दिया। –