sim*_*ack 10 windows filesystems ntfs
NTFS文件可以包含对象ID.可以使用这些ID进行设置FSCTL_SET_OBJECT_ID
.但是,msdn文章说:
修改对象标识符可能导致文件部分丢失数据,直至并包括整个数据量.
但它没有详细说明.这怎么会导致数据丢失?它是在讨论文件系统中潜在的对象id冲突吗?NTFS是否以某种方式依赖它们?
侧节点:我在找到该段落之前做了一些实验,并设置了一些新创建的文件的对象id,这里希望我的文件系统仍然完好无损.
它们由分布式链接跟踪服务使用,该服务使客户端应用程序能够跟踪已移动的链接源。链接跟踪服务仅通过使用这些对象标识符 (ID) 来维护其与对象的链接。
那么回到你的问题,
它是在谈论文件系统中潜在的对象 ID 冲突吗?
我不这么认为。Windows 确实为我们提供了使用 FSCTL_SET_OBJECT_ID 设置对象 ID 的选项,但这不会带来 ID 冲突的风险。 尝试在已经具有对象标识符的对象上设置对象标识符将会失败。
.. NTFS 是否以某种方式依赖它们?
是的。对象标识符用于跟踪文件和目录。所有对象 ID 的索引都存储在卷上。重命名、备份和恢复操作会保留对象 ID。但是,复制操作不会保留对象 ID,因为这会违反它们的唯一性。
这怎么会导致数据丢失呢?
如果您更改(或更确切地说设置)用户创建的文件的对象 ID(就像您所做的那样),您不会遇到严重的问题。但是,如果用户(有意/无意)设置共享对象文件/库使用的对象 ID,则更改将不会按原样反映。
由于 Windows 不希望每个人(除了开发人员)都使用重要的库文件,因此它会发出通用警告:
修改对象标识符可能会导致文件部分数据丢失,直至并包括整个数据卷。
底线:如果你知道自己在做什么,就改变它。
还有另一篇关于分布式链接跟踪和对象标识符的msn文章。
希望能帮助到你!
编辑:
感谢@Mehrdad 指出。我的意思不是 DLL 本身的对象标识符,而是它们内部使用的对象标识符。
OLEACC(一个 dll),提供 Active Accessibility 运行时并管理来自 Active Accessibility 客户端的请求[来源]。它使用 OBJID_QUERYCLASSNAMEIDX 对象标识符 [来源]
归档时间: |
|
查看次数: |
285 次 |
最近记录: |