उम्मीद है कि इस एसओ के लिए भी अस्पष्ट नहीं है, लेकिन निम्नलिखित पी पर विचार/आह्वान हस्ताक्षर:एक पी/Invoke हस्ताक्षर में एक सुरक्षित हैंडल का उपयोग कैसे किया जा सकता है जिसके लिए कुछ मामलों में एक शून्य सूचक की आवश्यकता होती है?
[DllImport("odbc32.dll", CharSet = CharSet.Unicode)]
internal static extern OdbcResult SQLAllocHandle(
OdbcHandleType HandleType,
IntPtr InputHandle,
ref IntPtr OutputHandlePtr);
मैं इस प्रकार इस हस्ताक्षर SafeHandles उपयोग करने के लिए नया स्वरूप, चाहते हैं:
[DllImport("odbc32.dll", CharSet = CharSet.Unicode)]
internal static extern OdbcResult SQLAllocHandle(
OdbcHandleType HandleType,
MySafeHandle InputHandle,
ref MySafeHandle OutputHandlePtr);
हालांकि, according to MSDN, इनपुट हैडल तर्क एक शून्य सूचक होना चाहिए जब हैंडलटाइप तर्क SQL_HANDLE_ENV और गैर-शून्य सूचक अन्यथा है।
मैं एक ही पी/आमंत्रण हस्ताक्षर में उन अर्थशास्त्र को कैप्चर कैसे करूं? कृपया अपने उत्तर में एक उदाहरण कॉल-साइट शामिल करें। मेरा वर्तमान समाधान दो हस्ताक्षरों का उपयोग करना है।
'सुरक्षित हेन्डहैंडल' पैरामीटर घोषित करना भी संभव है। –
यहां काम नहीं करता है, मुझे 'System.StubHelpers.StubHelpers.SafeHandleAddRef (सेफहैंडल पीएचंडल, बूलियन और सफलता) से' ArgumentNullException' प्राप्त हो रहा है। ' – ordag
हां, @ shf301, यह पी/आमंत्रण कॉल में काम नहीं करता है। क्या आपने इसे आजमाया? – jnm2