Программирование постоянной памяти в Windows — интеграция NVML

Технология постоянной памяти (PM) обеспечивает доступ на уровне байтов к ненезависимым носителям, а также снижает задержку хранения или извлечения данных значительно. Он создает новый уровень между памятью системы и традиционным хранилищем. Любая программа, которая зависит от или масштабируется с быстрыми записью в постоянный носитель, может воспользоваться pm.

Цель этой статьи состоит в том, чтобы определить, как библиотеку памяти (NVML) неизменяемой памяти (NVML) можно интегрировать в проект Visual Studio для простого использования.

Заметка

Постоянная память иногда также называется памятью класса хранилища (SCM).

 

PM и NVML

Первая поддержка постоянной памяти появилась в Windows Server 2016 и юбилейном обновлении Windows 10 (1607). Краткий обзор см. в следующих двух видео channel9:

Чтобы помочь разработчикам воспользоваться преимуществами предложений постоянной памяти, корпорация Майкрософт также способствовала усилиям по привлечению ненезависимой библиотеки памяти (NVML) в Windows. Эта библиотека предоставляет различные средства для поддержки постоянной памяти приложений. Например, он содержит код, который позволяет легко создавать хранилище ключей с поддержкой PM для очень быстрых поисков и хранилищ. Дополнительные сведения о NVML, включая примеры, см. в библиотеке NVM.

Интеграция NVML в проект Visual Studio

  1. Скачивание файлов и заголовков библиотекИ NVML
  • NVML поддерживается на сайте GitHub. Вы можете скомпилировать источник самостоятельно или просто скачать скомпилированные двоичные файлы непосредственно отсюда: NVML версии 1.2 — Windows Technical Preview.
  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 в раздел "Свойства конфигурации - компоновщик> -> входные данные -> дополнительные зависимости".

На этом этапе вы готовы вызвать функции библиотеки непосредственно в коде и воспользоваться ими.