Las funciones como CreateProcess tienen firmas que toman punteros a structs. En C, simplemente pasaría NULL
como un puntero para los parámetros opcionales, en lugar de crear un objeto struct ficticio en la pila y pasar un puntero al maniquí.P/Función de invocación que toma el puntero a struct
En C#, que han declarado como (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);
Pero si trato de pasar null
para el argumento lpProcessAttributes
o lpThreadAttributes
argumento, me sale un error de compilación:
Error 2 Argument 3: cannot convert from '<null>' to 'ref Debugging.Wrappers.SECURITY_ATTRIBUTES'
¿Cómo puedo modificar la firma de función anterior para que pueda pasar null
por los argumentos SECURITY_ATTRIBUTES, sin este error de compilación? (¿Y también podrá pasar una estructura real si quiero?)
Parece que mi pregunta es la misma que esta, aunque no lo habría adivinado por el título. http://stackoverflow.com/questions/1049623/how-to-pass-a-nullable-type-to-a-p-invoked-function –