¿Cómo P / Invocar SetFileTime con parámetros nulos? [duplicar]

Esta pregunta ya tiene una respuesta aquí:

¿Cómo manejo los parámetros de estructura dll nulos u opcionales en C #? 1 respuesta

Tratando de P / Invocar elSetFileTime función Desde mi programa de C #, estoy usando la siguiente firma:

[DllImport(@"kernel32.dll", SetLastError = true)]
[return: MarshalAs(UnmanagedType.Bool)]
internal static extern bool SetFileTime(
    IntPtr hFile,
    ref long lpCreationTime,
    ref long lpLastAccessTime,
    ref long lpLastWriteTime);

La documentación establece la siguiente firma no administrada:

BOOL WINAPI SetFileTime(
  __in      HANDLE hFile,
  __in_opt  const FILETIME *lpCreationTime,
  __in_opt  const FILETIME *lpLastAccessTime,
  __in_opt  const FILETIME *lpLastWriteTime
);

Dice que para los parámetros 2, 3 y 4 que pueden ser opcionales:

Este parámetro puede ser NULL si la aplicación no necesita cambiar esta información.

Y esto es exactamente lo que quiero hacer: pasar solo uno de los tres valores de fecha y hora y tener los demás configurados paranull.

Estoy completamente perdido sobre cómo expresar esto en términos de firma P / Invoke.

Por lo tanto mi pregunta es:

¿Cuál es la firma P / Invoke correcta (o la forma correcta de llamar) para poder pasar?null alSetFileTime parámetros de función?

Edición 1:

Desde elFileInfo clase ya proporciona una propiedad de escritura para configurar los tiempos de archivo, puede preguntar, por qué lo hago por mi cuenta en lugar de usar la clase.

La razón es que estoy planeando usar esta función en miLargos caminos biblioteca que se utiliza para superar laMAX_PATH Límite y por lo tanto no puede usar las funciones estándar de .NET.

Por lo tanto utilizando elFileInfo La clase no es una opción, por desgracia.

Edición 2:

Lo he resuelto utilizando la solución sugerida por Hans. Después de eso, encontréun comentario contribuido por el usuario debajo de la función que dice:

Además, la especificación de un valor cero para uno de los parámetros tiene el mismo efecto que la especificación de NULL.

Aunque no verifiqué si esto es cierto, aún podría ser una opción para otros que tienen un requisito similar al mío.

Respuestas a la pregunta(1)

Su respuesta a la pregunta