我正在使用几个磁盘/分区(C:、D:、E:、F: 等)的 NTFS MasterFileTable / USN 日志,并且我想为每个文件/目录使用唯一的 ID。
当我阅读USN_RECORD(也称为 PUSN_RECORD)时,有这个 int64:
DWORDLONG FileReferenceNumber;
这是一个唯一的文件/目录标识符,至少在当前分区中是唯一的。
但可能会发生碰撞:
- C 中的文件:可能有 FileReferenceNumber 1932847
- D: 中的另一个文件也可能有 FileReferenceNumber 1932847!
我想避免不得不使用这样一个大的东西int128
(这将是FileReferenceNumber
驱动器号 C:、D:、E:、...、Z: 的 64 位 + 5 位)。
我还想避免使用一对(char DriveLetter, DWORDLONG FileReferenceNumber)
来识别计算机中的文件。
如何使用 64 位 int 编码FileReferenceNumber
+ 盘符?
是否有可能因为FileReferenceNumber
有一些空闲的未使用位?
如果不是,您将如何处理?