Monitorare alcune chiamate di sistema eseguite da un processo in Windows

Mi piacerebbe essere in grado di monitorare determinate chiamate di sistema effettuate da un processo, principalmente le chiamate I / O su file. Su Linux posso probabilmente andare via usando strace con parametri adatti, ma come posso farlo su Windows?

Sono principalmente interessato a eseguire un processo e capire quali file ha letto e scritto.

EDIT: voglio farlo a livello di codice da un altro processo. Sono a conoscenza di ProcessMonitor, ma vorrei ricevere i dati in un formato che posso importare in un altro programma per ulteriori analisi.

EDIT: Se si restringono ulteriormente le mie esigenze, è probabilmente sufficiente essere in grado di monitorare le chiamate a CreateFile (). Sono davvero interessato solo a quali file vengono aperti e se sono aperti per lettura / scrittura o solo lettura. Un altro requisito che non ho davvero affermato è che la velocità è abbastanza importante; Stavo pensando di farlo per cose come la compilazione di un file C ++ e la creazione di un’interfaccia grafica completa che genera un file di log di 20 MB avrà un overhead proibitivo.

EDIT: Sarebbe anche bello se non avesse bisogno di privilegi amministrativi.