Windows 中的持久内存编程 - NVML 集成

持久内存(PM)技术提供对非易失性媒体的字节级访问,同时显著减少存储和检索数据的延迟。 它在系统的内存和传统存储之间创建新的层。 依赖于或缩放且快速写入到持久性介质的任何程序都可以从 PM 中受益。

本文的目的是概述如何将非易失性内存库(NVML)集成到 Visual Studio 项目中以便于使用。

注意

永久性内存有时也称为存储类内存(SCM)。

 

PM 和 NVML

Windows Server 2016 和 Windows 10 周年更新(1607)中引入了对永久性内存的第一个支持。 有关快速概述,请查看以下两个 Channel9 视频:

为了帮助开发人员利用永久性内存产品/服务的优势,Microsoft还有助于将非易失性内存库(NVML)引入 Windows。 此库提供了各种工具,使应用程序能够感知持久内存。 例如,它包含代码,可让你轻松创建 PM 感知键值存储,用于极其快速的查找和存储。 可以在 NVM 库找到有关 NVML 的详细信息,包括示例。

将 NVML 集成到 Visual Studio 项目中

  1. 下载 NVML 库文件和标头
  1. 将库文件和标头分别放置在所选目录中,例如:“C:\NVML\lib”和“C:\NVML\inc”。

  2. 按如下所示配置项目:

  • 打开 Visual Studio 项目,然后在“解决方案资源管理器”中右键单击项目的名称。
  • 打开生成的弹出窗口底部的项目设置窗格。
  • 导航到“配置属性 -> C/C++”,并将存储标头(C:\NVML\inc)的文件夹添加到“其他包含目录”字段。
  • 接下来,导航到“配置属性 -> 链接器”,并将存储库的文件夹(C:\NVML\lib)添加到“其他库目录”字段
  1. 接下来,请确保面向 Windows Server 2016 或 Windows 10 周年更新的项目:
  • 导航到“配置属性 -> 常规”,并将“目标平台版本”字段设置为“10.0.14393.0”和
  • 导航到“配置属性 -> C/C++”,并将“NTDDI_VERSION=NTDDI_WIN10_RS1;”添加到“预处理器”字段。
  1. 在代码中包含标头并链接到所需的库
  • 此时,只需包含想要在代码中使用的头文件,就像任何其他头文件一样。 例如,若要使用 libpmem:
    • 添加“#include <libpmem.h>” 和
    • 将“libpmem.lib”添加到“配置属性 -> 链接器 -> 输入 -> 其他依赖项”

此时,你已准备好直接在代码中调用库的函数,并利用它们。