Vorrei poter monitorare determinate chiamate di sistema eseguite da un processo, principalmente chiamate di I/O su file. Su Linux posso probabilmente andare via usando strace con parametri adatti, ma come posso farlo su Windows?Monitoraggio di determinate chiamate di sistema eseguite da un processo in Windows
Sono principalmente interessato all'esecuzione di un processo e alla determinazione di quali file ha letto e scritto.
MODIFICA: 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.
MODIFICA: 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 richiedesse privilegi amministrativi.
Interessante. Non c'è qualcosa di simile a Linux ptrace syscall in Windows? Tutte le risposte riguardano l'uso di altri programmi, ma con qualcosa come ptrace() potresti farlo tu stesso. – ktulur
Nel caso in cui sei interessato ad un approccio diverso, ti ho chiesto una finestra equivalente a ptrace: http://stackoverflow.com/questions/865106/is-there-something-like-linux-ptrace-syscall-in- windows – ktulur