WriteFile 是原子的吗?

2023-11-22

我正在设计一个将时间序列数据写入文件的系统。数据是 8 字节的块,分为两个 4 字节部分:时间和有效负载。

根据 MSDN,WriteFile 函数是原子的(http://msdn.microsoft.com/en-us/library/aa365747(VS.85).aspx),如果写入的数据小于一个扇区的大小。

由于文件仅包含这些块(没有文件的“结构”,因此不可能重建损坏的文件),逐个添加,因此至关重要的是整个块或没有任何内容写入文件一直。

所以问题是,我是否正确理解了大小小于扇区的 writefile 总是完全写入磁盘或根本不写入,无论实际调用 writefile 期间发生什么情况?


只要写入不跨越文件中的扇区边界,WriteFile 就是原子的。因此,如果扇区大小为 512 字节,则从文件偏移 0 开始写入 20 个字节将是原子的,但在文件偏移 500 写入相同的数据将不是原子的。在您的情况下,写入应该是原子的,因为扇区大小应该是 8 的倍数。

这个 MSDN 博客有关如何在不使用事务处理 NTFS 的情况下执行原子多扇区写入的更多信息。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

WriteFile 是原子的吗? 的相关文章

  • 我可以保存控制台窗口的缓冲区或内容以供将来使用吗?

    我对控制台应用程序很感兴趣 只是想知道 保存控制台窗口的当前缓冲区以供以后使用并提供某种历史导航功能的最佳方法是什么 我知道 Diagnostics 命名空间提供了读取标准输出的能力 但这只是在您重定向它的情况下进行的 所以基本上您必须在新
  • 读取 .ini 文件 vb.net?

    我有一个具有读取 ini 文件功能的项目 我无法显示我想要的 ini 文件的内容 我的代码读取 ini 文件 Public Function GetSettingItem ByVal File As String ByVal Identif
  • Windows BlockInput 功能不起作用

    Why BlockInput不工作 include
  • C++:获取注册表值仅给出第一个字符[重复]

    这个问题在这里已经有答案了 我试图从注册表中获取字符串值 但我只得到第一个字母 HKEY hKey char gamePath MAX PATH if RegOpenKeyEx HKEY CURRENT USER L Software Bl
  • 二进制模式下的 Windows 管道

    我在windows中编写了一个程序 它将播放通过stdin发送给它的二进制音频 我将其称为play 就像linux程序一样 然后我写了一个单独的程序如下 FILE f popen aplay exe wb FILE song fopen C
  • GetDeviceCaps获取的物理屏幕尺寸不是我屏幕的实际物理尺寸

    在 Windows 7 下 我使用以下代码来获取屏幕的物理宽度 以毫米为单位 hSize 为 482 比实际尺寸约 310 用尺子测量 大得多 这是为什么 HDC screen GetDC NULL int hSize GetDeviceC
  • 如何查找 Outlook .pst 文件的完整路径?

    有没有办法通过 API 调用或注册表项以编程方式查找当前用户的 Outlook pst 文件的位置 With 展望赎回 http www dimastr com redemption 您可以使用 VBA 迭代消息存储RDOStores集合
  • 在 C++ 应用程序中显示/隐藏桌面图标

    右键单击桌面 取消选中 视图 gt 显示桌面图标 桌面上的所有图标都会消失 是否可以从 C 应用程序显示 隐藏桌面图标 你有c 代码的例子吗 预先非常感谢您的任何建议 SHGetSet设置 http msdn microsoft com e
  • VirtualProtectEx 失败并显示 ERROR_NOACCESS(错误代码 998)

    CreateProcess something exe NULL NULL NULL FALSE CREATE SUSPENDED NULL NULL sInfo pInfo ReadProcessMemory pInfo hProcess
  • FAT-32 上的 Unicode 文件名?

    据我了解 NTFS 支持 Unicode 文件名 正如 Microsoft 声称的那样 UTF 16 但官方 MSDN 文档对于使用什么代码页在 FAT 32 上存储文件名 文件路径 非常模糊 这里说的是OEM 代码页 我假设是CP437
  • 在 win32 API 应用程序中实现全球化/多语言功能

    我用 Visual C 开发了一个窗口应用程序 Win32 API 我必须在此应用程序中添加多语言功能 任何人都可以指导我如何完成这项任务 Windows 上多语言应用程序的基础是 资源 的使用 资源是附加在可执行文件末尾的块 它仅包含数据
  • C# 4.0 动态对象和 WinAPI 接口,如 IShellItem(无需在 C# 源代码中定义它们)

    是否可以 使用 C 4 0 中的新动态关键字 使用接口 如 IShellItem 或其他 WinAPI 接口 而无需在 C 源代码中定义它们 或者至少不定义接口成员 我正在尝试类似的事情 const string IShellItemGui
  • 32 位 OpenFileDialog --> 64 位 System32?

    在 32 位程序中 如何让打开 保存文件对话框显示 64 位系统的 System32 文件夹中的文件 Wow64DisableWow64FsRedirection不起作用 因为由于某种原因它不适用于对话框 我猜是因为它位于不同的线程上 当然
  • 以编程方式最小化/恢复窗口,跳过动画效果

    我需要对窗口列表执行多项操作 最小化其中一些 恢复其他 以便立即在两组或多组窗口之间切换 这样做的问题是最小化和恢复窗口时可以看到的动画 整个过程看起来很糟糕 所有这些动画都进进出出 上下移动 但是 我无法禁用这些动画 因为这是针对其他计算
  • MoveWindow死锁?

    我在线程 A 上有一个窗口 它在某个时刻 由于在其 wndproc 上收到消息 触发线程 B 上的操作 然后等待该操作完成 使用某种同步机制 然后线程B调用MoveWindow 在线程 A 的窗口 例如标准文本框 内移动子窗口 此时程序由于
  • 移动/调整窗口大小时闪烁

    我开发了一个显示 jpeg 图像的应用程序 它可以显示 4 个图像 屏幕的每个象限各一个 为此 它使用了 4 个窗口 窗口没有边框 框架 也没有标题栏 当加载新图像时 窗口大小会根据新图像进行调整 然后显示该图像 尤其是当窗户做得较大时 经
  • 使用 WGL 创建现代 OpenGL 上下文?

    我正在尝试使用 Windows 函数创建 OpenGL 上下文 现代版本 基本上代码就是 创建窗口类 注册班级 创建一个窗口 choose PIXELFORMATDESCRIPTOR并设置它 创建旧版 OpenGL 上下文 使上下文成为当前
  • Windows 窗口对接

    我想知道如何在 Windows 中将窗口停靠 捕捉到屏幕的一侧 最好使用直接的 Win32 API 我正在寻找的效果就像任务栏 一个在屏幕上有保留空间的窗口 因此最大化另一个窗口会使该窗口占据屏幕的其余部分 但使我的窗口保持在适当的位置并可
  • SetCurrentDirectoryW 中的错误 206

    在我之后之前不清楚的问题 https stackoverflow com questions 44389617 long path name in setcurrentdirectoryw 我以某种方式能够创建一个具有长路径名的目录 但是
  • 编写一个加载 msvcr80.dll 并公开 free() 函数的 DLL

    我有一个依赖于 MSVCR80 的第三方 DLL 并分配我需要清理的资源 图书馆有not暴露一个free 执行此操作的函数 相反 我需要加载相同的运行时库并手动调用free功能 作为一种解决方法 我尝试编写一个 包装器 DLL 它加载正确的

随机推荐

  • 在 UserControl 中使用依赖属性的 wpf 问题

    我制作了一个用户控件 该控件每隔几秒就使用来自串行端口的数据更新一次 这个 UserControl 应该非常简单 由一个用于字段名称的 Label 和另一个包含字段值的 Label 组成 我说它should很简单 但是行不通 它根本不更新
  • 使用 youtube v3 API 检索 youtube 播放列表中的所有视频

    我正在使用 youtube v3 API 检索播放列表的视频并获得 50 个项目 此链接没有任何问题 但视频数量是 100 而我只获得 50 我怎样才能获得接下来的 50 个项目 我试过起始索引但它不适用于 v3 API 任何帮助表示赞赏
  • 使用 CSS 强制纵横比在 Safari 上不起作用

    以下代码在 Firefox 和 Chrome 中运行良好 但在Safari 在 Mac 和 iPad 上测试 http jsfiddle net eFd87 div div img src http farm3 staticflickr c
  • 获取用户 Xbox 成就列表?

    有没有办法从 Xbox 获取用户的成就列表而不处理屏幕抓取等 网站如何喜欢http www trueachievements com做吗 他们绝对不是屏幕抓取 因为他们没有我的 Live ID 凭据 我知道 Xbox LIVE 社区开发者计
  • 如何获取包中 setup.py (setuptools) 中定义的版本?

    我怎样才能获得定义的版本setup py从我的包裹中 对于 version 或其他目的 询问已安装发行版的版本字符串 要在运行时从包内检索版本 您的问题实际上是在问什么 您可以使用 import pkg resources part of
  • 如何在 VSCODE 终端中实现平滑滚动?

    我正在 VSC 中工作并编写 Nodejs 我在长终端输出中遇到滚动问题 如果我使用滑块 在终端右侧滚动滑块会走太多行太快 所以 问题是 我们是否有集成终端中的平滑滚动选项可以轻松地用箭头逐行读取输出 或者我们必须使用另一个外部终端 谢谢
  • 未找到派生类中具有相同名称但不同签名的函数

    我有一个具有相同名称的函数 但在基类和派生类中具有不同的签名 当我尝试在从派生类继承的另一个类中使用基类的函数时 我收到错误 请看下面的代码 class A public void foo string s class B public A
  • JQuery 动画边框而不移动 div

    我想通过首先在 mouseenter 上将其边框加粗 5px 然后在 mouseleave 上将边框减小 5px 来对 div 进行动画处理 棘手的部分是我不希望 div 看起来像在移动 如果您只是对边框进行动画处理 整个 div 看起来会
  • 如何创建接受用户输入的 Siri Intent

    我创建了一个自定义 Intent 其参数如下 我已经捐了 let intent PlayIntent intent color color let interaction INInteraction intent intent respon
  • Silverlight HTTP POST 几个变量,最简单的示例(最少的代码)

    您好 我想将一些数据从 silverlight 发布到网站 我发现了以下内容link它有效 然而 这个例子太复杂了 看得我眼睛疼 另外 Flex 示例更干净 更少的代码 我想说一定有更好的解决方案 供参考 我们发布 2 个变量 字符串 并读
  • 访问 Bottlepy after_request 挂钩中的响应对象

    我有以下网络应用程序 import bottle app bottle Bottle app route ping def ping print pong return pong app hook after request def aft
  • IndexedDB 性能和 IndexedDB 与 WebSQL 性能比较

    WebSQL 和 IndexedDB 都是用于在 Web 浏览器中访问 CRUD 底层嵌入式数据库的 DB API 如果我没猜错的话 这就像用于访问 CRUD 任何客户端服务器数据库 如 Oracle 等 的 SQL 在许多情况下 同一浏览
  • 属性错误:next()

    我想使用循环一层深度next with os walk 我的代码的关键行 for root dirs files in os walk dir next 1 Error AttributeError 生成器 对象没有属性 下一个 我尝试使用
  • 如何在 React 中使用钩子预先初始化状态?

    基本上在类组件中 我们使用如下所示的初始值在构造函数中预先初始化状态 constructor props super props this state count 0 但是引入钩子之后 所有类组件都变成了带有状态的功能组件 但我的问题是如何
  • 将节点/属性添加到表达式树

    这是我第一次真正处理表达式树 我有点迷失 我很抱歉 如果 这个问题根本没有任何意义 考虑以下类 public class Foo
  • stargazer omit.labels 中的潜在错误

    5 2版本似乎有一个bugstargazer包 其中omit label根据所包含模型的顺序 功能不会一致地工作 library stargazer library ggplot2 as data frame data midwest fi
  • 我可以强制 SoapClient 将数组作为数组返回吗?

    我正在使用 SoapClient 获取一些数据 我从其中一个电话中得到了这个结果 stdClass Object payTransIncome gt stdClass Object item gt stdClass Object payTr
  • 为 iOS 创建 ionic 资源不再有效

    我正在准备我的离子应用程序在 iOS 应用程序商店中进行更新 但我现在真的陷入困境 因为使用生成资源ionic resources不再起作用了 在终端中运行命令后 它开始上传我放入文件夹中的资源 然后告诉我上传已成功完成 然后完全冻结 An
  • 是否可以并行运行同一子项目中的两个独立的 gradle 任务?

    在我工作的项目 基于 gradle 中 有一个非常大的模块 gradle 子项目 在 CI 构建过程中 该子项目中的两个任务按顺序执行 这会导致大量的执行时间 该项目使用org gradle parallel true 但是当我创建简单的项
  • WriteFile 是原子的吗?

    我正在设计一个将时间序列数据写入文件的系统 数据是 8 字节的块 分为两个 4 字节部分 时间和有效负载 根据 MSDN WriteFile 函数是原子的 http msdn microsoft com en us library aa36