title: Monitoring certain system calls done by a process in Windows
body: <p>I would like to be able to monitor certain system calls made by a process, primarily file I/O calls. On Linux I can probably get away using <a href="https://en.wikipedia.org/wiki/Strace" rel="noreferrer">strace</a> with suitable parameters, but how can I do this on Windows?</p>
  
  <p>I'm primarily interested in running a process and figuring out which files it has read and written.</p>
  
  <p>I want to do this programmatically from another process. I'm aware of <a href="http://en.wikipedia.org/wiki/Process_Monitor" rel="noreferrer">Process Monitor</a>, but I would like to receive the data in a form which I can import into another program for further analysis.</p>
  
  <p>If I narrow down my requirements even further, it is probably enough to be able to monitor calls to CreateFile(). I'm really only interested in what files are opened, and if they are opened for read/write or just read. Another requirement which I didn't really state is that <em>speed</em> is fairly important; I was planning on doing this for things like compiling a C++-file, and pulling up a full GUI which generates a 20&nbsp;MB logfile will have prohibitive overhead.</p>
  
  <p>It would also be nice if it did not require administrative privileges.</p>