CreateProcess जैसे फ़ंक्शंस को पॉइंटर्स लेने के लिए हस्ताक्षर करने वाले हस्ताक्षर होते हैं जो पॉइंटर्स को structs पर लेते हैं। सी में मैं स्टैक पर एक डमी स्ट्रक्चर ऑब्जेक्ट बनाने और डमी को पॉइंटर पास करने के बजाय वैकल्पिक पैरामीटर के लिए पॉइंटर के रूप में NULL
पास कर दूंगा।पी/स्ट्रोक
सी # में, मैं के रूप में (पी/आह्वान)
[DllImport("kernel32.dll", CharSet = CharSet.Auto)]
public static extern bool CreateProcess(
string lpApplicationName,
string lpCommandLine,
ref SECURITY_ATTRIBUTES lpProcessAttributes,
ref SECURITY_ATTRIBUTES lpThreadAttributes,
bool bInheritHandles,
CreateProcessFlags dwProcessCreationFlags,
IntPtr lpEnvironment,
string lpCurrentDirectory,
ref STARTUPINFO lpStartupInfo,
ref PROCESS_INFORMATION lpProcessInformation);
यह घोषणा की है लेकिन अगर मैं lpProcessAttributes
तर्क या lpThreadAttributes
तर्क के लिए null
पारित करने के लिए प्रयास करते हैं, मैं एक संकलक त्रुटि मिलती है:
Error 2 Argument 3: cannot convert from '<null>' to 'ref Debugging.Wrappers.SECURITY_ATTRIBUTES'
मैं उपरोक्त फ़ंक्शन हस्ताक्षर को कैसे संशोधित कर सकता हूं ताकि मैं इस कंपाइलर त्रुटि के बिना, SECURITY_ATTRIBUTES तर्कों के लिए null
पास कर सकूं? (और यदि मैं चाहता हूं तो एक वास्तविक संरचना को पार करने में भी सक्षम हो सकता है?)
ऐसा लगता है कि मेरा प्रश्न इस जैसा ही है, हालांकि मैं इसे शीर्षक से अनुमानित नहीं करता। http://stackoverflow.com/questions/1049623/how-to-pass-a-nullable-type-to-a-p-invoked- कार्यक्षमता –