Поделиться через


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

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

В этой статье показано, как можно интегрировать библиотеку энергонезависимой памяти (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 в раздел "Свойства конфигурации -> Компоновщик -> Входные данные -> Дополнительные зависимости"

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