As to the question of what happens when it gets to the end of the file, the answer is this:
19:37:48.8205374 vs.exe 40516 ReadFile F:\test\18.0.0\tagfiles\PIC32.vtg SUCCESS Offset: 80,297,984, Length: 8,192
19:37:49.9205824 vs.exe 40516 ReadFile F:\test\18.0.0\tagfiles\PIC32.vtg SUCCESS Offset: 80,306,176, Length: 8,192
19:37:51.0206132 vs.exe 40516 ReadFile F:\test\18.0.0\tagfiles\PIC32.vtg SUCCESS Offset: 80,314,368, Length: 8,192
19:37:52.1206639 vs.exe 40516 ReadFile F:\test\18.0.0\tagfiles\PIC32.vtg SUCCESS Offset: 80,322,560, Length: 8,192
19:37:53.2207648 vs.exe 40516 ReadFile F:\test\18.0.0\tagfiles\PIC32.vtg SUCCESS Offset: 80,330,752, Length: 8,192
19:37:54.3208389 vs.exe 40516 Thread Exit SUCCESS Thread ID: 40248, User Time: 0.0000000, Kernel Time: 0.0000000
I suspect there is another question: did the CPU hogging stop when it got to the end? The answer to that is: no, because it stopped earlier when I had a rootle around my source code.