def get_next_max_usn(self, drive):
'''On windows/ntfs this is 'next usn' - the usn index to latest change made.
Also returns max_usn since enumdata requires an upper boundary. Not needed
when using readjournal.
fsutil usn queryjournal result:
Usn Journal ID : 0x01d2a26e17dbc5e8
First Usn : 0x0000000000000000
Next Usn : 0x0000000000acddf0 <--- index #2
Lowest Valid Usn : 0x0000000000000000
Max Usn : 0x7fffffffffff0000 <--- index #4
.
. '''
if 'win' in sys.platform and drive == '/':
''' using '/' on windows works for scandir but not for fsutil'''
drive='c:'
else:
# Removing trailing slashes
drive=drive.split(':')[0]+':'
journal_specs=Popen(('fsutil', 'usn', 'queryjournal', drive), stdout=PIPE).communicate()[0].split('\r\n')
next_usn=journal_specs[2].split(': ')[1]
max_usn=journal_specs[4].split(': ')[1]
return next_usn, max_usn #int(next_usn, 16), int(max_usn, 16)
评论列表
文章目录