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 是原子的吗? 的相关文章

  • WritePrivateProfileString 未在末尾添加属性

    我正在使用以下命令在 ini 文件中写入一些属性WritePrivateProfileString函数并且一切正常 但是当我添加多行文本时 出现了问题 这是代码和输出 WritePrivateProfileString T General
  • 为什么 SetCursorPos 将光标位置重置到显示屏的左侧?

    SetCursorPos https learn microsoft com en us windows win32 api winuser nf winuser setcursorpos将光标移动到指定的屏幕坐标 然而 它似乎有一个错误
  • 屏幕截图忽略了一些窗口

    我正在 MFC 中工作 我正在尝试捕获桌面的 bmp 我正在使用 GetDC NULL 来执行此操作 但它似乎忽略了特殊的皮肤窗口 它似乎忽略了用 UpdateLayeredWindow 绘制的窗口 此行为似乎仅发生在 Vista x64
  • WaitForSingleObject 是否充当内存屏障?

    昨天一个关于双重检查锁定的问题引发了一系列的想法 让我对一个简单的情况感到不确定 在下面的代码中 是否可以点击printf 不再同步 在这个简单的示例中 这些值可能位于同一缓存行上 因此我认为这种可能性较小 假设一开始可能性 gt 0 如果
  • Win32 API:如何读取序列号,或者如果不是数据则在超时内退出

    我需要一个函数来从串行端口读取数据 或者如果在时间间隔内没有数据则返回 例如 在 GNU Linux 上你可以使用poll orselect read Windows 中有类似的东西吗 下面是我尝试过的 它应该可以工作 但是功能获取重叠结果
  • 如何在Windows上用C语言实现定时器

    如何在 C 中创建一个计时器 时间到期后 我应该能够调用回调函数 平台是windows 有人可以指导我吗 问候 米敦 看一眼SetTimer http msdn microsoft com en us library ms644906 28
  • 我可以在 C# 进程中使用 SetErrorMode 吗?

    我正在准备写一个在线法官核心 一个可以编译用户代码并运行程序来检查答案的程序 如uva online Judge 我在捕获提交程序的异常时遇到问题 如下所示 int main while scanf d d n m printf d n n
  • 检测反射 DLL 注入

    在过去的几年中 恶意软件 以及一些渗透测试工具 如 Metasploit 的 meterpreter 负载 已经开始使用反射 DLL 注入 PDF http www harmonysecurity com files HS P005 Ref
  • ListView 多选行为?

    Comtl32 dll v6 0中的ListView进行多项选择 使用Shift键时 如下 x表示选择 00xxxx xxxxxx xxxx00 早期版本的 ListView 的做法如下 00xx00 00xx00 00xx00 有没有办法
  • Win32 自定义绘制树视图控件

    我正在尝试使用 NM CUSTOMDRAW 消息自定义树视图控件 我只是想用灰色绘制所有其他可见的项目 这是绘制的代码 INT CResourceOutliner On WM NOTIFY HWND hDlg WPARAM wParam L
  • 如何带参数调用外部程序?

    我想在我的代码中调用一个 Windows 程序 并使用代码本身确定的参数 我不想调用外部函数或方法 而是调用 WinXP 环境中的实际 exe 或批处理 脚本文件 C 或 C 将是首选语言 但如果使用任何其他语言更容易完成此操作 请告诉我
  • 如何使用 Python 与窗口的 GUI 交互?

    假设您想打开myapp exe 打开第三个菜单 然后选择第二个菜单项 即像用户使用键盘或鼠标一样 然后在对话框窗口中选择第二个按钮 pyahk https pyahk readthedocs io en latest and pyautog
  • 检测桌面是否被锁定[重复]

    这个问题在这里已经有答案了 可能的重复 如何以编程方式确定我的工作站是否被锁定 https stackoverflow com questions 44980 how can i programmatically determine if
  • C# 如何使用 CallNtPowerInformation 和 Interop 来获取 SYSTEM_POWER_INFORMATION

    我正在尝试编写一个小程序 该程序作为服务运行并监视用户是否处于活动状态 如果用户空闲 没有鼠标 键盘 一个小时 则某些进程将被终止 如果用户使用 user32 dll 中的 LASTINPUTINFO 运行它 它就可以工作 但它不能作为服务
  • 资源文件是否编译为 UNICODE 或 ANSI 代码页?

    首先 如果这个问题已经被回答了一百次了 我深表歉意 噢 但我的搜索显然很糟糕 因为我没有运气回答这个基本问题 EXE DLL中的资源是如何存储的 作为 UNICODE UCS 2 Windows 本机内部字符格式 还是使用资源块的代码页作为
  • 如何让 Win32 使用 Windows XP 样式字体

    我正在使用纯 C 和 WinAPI 编写 Win32 应用程序 不允许使用 MFC 或 C 为了让控件使用适当的样式进行绘制 我使用了清单 如相应的 MSDN 文章中所述 一切都很好 当我更改系统样式时 我的应用程序也会更改样式 但使用的字
  • 如何查明 .exe 是否正在 C++ 中运行?

    给定进程名称 例如 程序 exe C 标准库没有这样的支持 您需要一个操作系统 API 来执行此操作 如果这是 Windows 那么您将使用 CreateToolhelp32Snapshot 然后使用 Process32First 和 Pr
  • 如何验证文件名称在 Windows 中是否有效?

    是否有一个 Windows API 函数可以将字符串值传递给该函数 该函数将返回一个指示文件名是否有效的值 我需要验证文件名是否有效 并且我正在寻找一种简单的方法来完成此操作 而无需重新发明轮子 我正在直接使用 C 但针对的是 Win32
  • GDI 函数 BitBlt 和 StretchBlt 在 Win32 中是否硬件加速?

    我似乎无法通过搜索得到明确的答案 Win32 blitting 操作是否硬件加速 GDI 而不是 GDI 我不知道这些函数如何与图形驱动程序交互 是否有任何函数调用来验证此功能 例如 GetCaps 对于特定的图形设备 win32图形设备
  • GetKeyState 函数?

    为什么我按下方向箭头ON后 函数GetKeyState仍然给我一个大于0的值 include

随机推荐

  • 在 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