¿Cómo comprobar si un archivo ya está abierto por otro proceso en C?

Veo que el estándar C no tiene forma de saber si un archivo ya está abierto en otro proceso. Así que la respuesta debe contener varios ejemplos para cada plataforma. Necesito ese cheque para Visual C ++ / Windows sin embargo.