2011-07-21 11 views
6

जब मैं अपने कोडनेट पोर्टेबिलिटी चेतावनी: CA1901 PInvoke घोषणा पोर्टेबल शुड बी

[DllImport("user32.dll")] 
static extern void keybd_event(byte key, byte scan, int flags, int extraInfo); 

में निम्नलिखित लाइनों को जोड़ने और माइक्रोसॉफ्ट बेसिक शुद्धता नियम के खिलाफ एक कोड विश्लेषण चलाने के लिए, मैं एक CA1901 चेतावनी मिलती है। असल में, यह 4 वें पैरामीटर intextraInfo 32-बिट प्लेटफॉर्म पर ठीक काम करता है लेकिन 64-बिट प्लेटफ़ॉर्म पर 64-बिट पूर्णांक प्रकार की अपेक्षा की जाती है।

जब मैं extraInfoलंबेमें कोड को संशोधित किया, 64-बिट मंच आवश्यकता पूरी की जाती है लेकिन 32-बिट मंच एक 32-बिट पूर्णांक उम्मीद कर रही है।

चेतावनी को दबाए बिना इस दुविधा को कैसे हल करें?

उत्तर

4

एक IntPtr का उपयोग कर जो एक प्लेटफ़ॉर्म-विशिष्ट प्रकार है कि एक सूचक या एक हैंडल प्रतिनिधित्व करने के लिए प्रयोग किया जाता है द्वारा:

[DllImport("user32.dll")] 
static extern void keybd_event(byte key, byte scan, int flags, IntPtr extraInfo); 
संबंधित मुद्दे