Como verificar se um arquivo já está aberto por outro processo em C?

Eu vejo que o padrão C não tem como saber se um arquivo já está aberto em outro processo. Portanto, a resposta deve conter vários exemplos para cada plataforma. Eu preciso dessa verificação para Visual C ++ / Windows embora.