諸如CreateProcess之類的函數具有指向結構的指針。在C中,我只是通過NULL
作爲可選參數的指針,而不是在堆棧上創建一個啞元結構對象,並將指針傳遞給啞元。P /調用函數將指針指向結構
在C#中,我已經聲明它(的P/Invoke)
[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);
但是,如果我嘗試通過null
爲lpProcessAttributes
參數或lpThreadAttributes
的說法,我得到一個編譯錯誤:
Error 2 Argument 3: cannot convert from '<null>' to 'ref Debugging.Wrappers.SECURITY_ATTRIBUTES'
如何修改上述函數簽名,以便我可以通過null
作爲SECURITY_ATTRIBUTES參數,而不會出現此編譯器錯誤? (如果我願意,還能夠傳遞一個真實的結構?)
看起來我的問題和這個一樣,儘管我不會從標題中猜出它。 http://stackoverflow.com/questions/1049623/how-to-pass-a-nullable-type-to-a-p-invoked-function – 2010-07-06 04:45:59