Funkcje takie jak CreateProcess mają podpisy pobierające wskaźniki do struktur. W C chciałbym po prostu przekazać NULL
jako wskaźnik dla opcjonalnych parametrów, zamiast tworzyć fikcyjny obiekt struct na stosie i przekazywać wskaźnik do manekina.P/wywołanie funkcji przyjmującej wskaźnik do struktury
W języku C#, mam zadeklarowane jako (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);
Ale gdy próbuję przekazać null
dla argumentu lpProcessAttributes
lub lpThreadAttributes
argumentu, otrzymuję błąd kompilatora:
Error 2 Argument 3: cannot convert from '<null>' to 'ref Debugging.Wrappers.SECURITY_ATTRIBUTES'
Jak mogę zmodyfikować powyższy podpis funkcji, aby móc po prostu przekazać null
dla argumentów SECURITY_ATTRIBUTES, bez błędu kompilatora? (A także być w stanie przekazać prawdziwą strukturę, jeśli chcę?)
Wygląda na to, że moje pytanie jest takie samo jak to, chociaż nie zgadłbym tego z tytułu. http://stackoverflow.com/questions/1049623/how-to-pass-a-ululowane-type-to-a-p-invoked-function –