首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Windows和ctime / st_ctime

Windows和ctime / st_ctime
EN

Stack Overflow用户
提问于 2012-09-19 21:29:45
回答 1查看 1K关注 0票数 8

Windows是否提供了类似POSIX stat的st_ctime字段,它提供了最后一次元数据更改的时间戳?

背景:我有一些数据文件,我想检查它们自特定时间戳以来是否被修改过。检查修改后的时间戳(mtime)很容易,并且可以处理“正常”修改,但是如果用户复制了旧版本的数据文件,那么修改后的时间戳将显示它们是旧的。在POSIX系统上,即使mtime较旧,复制旧文件也会导致ctime较新。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-08-30 05:49:04

据我所知,Windows确实提供了一个“最后修改时间”字段,但是我还没有找到任何访问它的Win32接口,所以你必须使用Native API。

具体地说:(我还没有真正尝试过。)

  • 调用NtOpenFile以获取句柄。
  • 使用FileNetworkOpenInformationFileInformationClass参数调用NtQueryInformationFile以获取FILE_NETWORK_OPEN_INFORMATION结构。<代码>H29
  • FILE_NETWORK_OPEN_INFORMATION结构的D11成员等效于POSIX ctime。H213

使用Native API并不是很简单。This question and answer描述了如何做到这一点。

正如on their mailing list所讨论的那样,Cygwin利用这一点在Windows下提供了POSIX语义。我从their implementation那里得到我的信息。

尽管它只是切线相关,但this article对Window提供的“创建”时间戳有很好的描述(不幸的是,它被称为ctime)。如果将文件复制到新位置,则创建的时间戳可以比修改的时间戳新(因为created then指的是创建副本的时间,而modified指的是上次修改原件的时间),但在其他情况下,元数据改变时不会更新该时间戳。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12495784

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档