Почему мой запросчик службы теневого копирования тома завершается с ошибкой:не удается найти CreateVssBackupComponentsInternal

StackOverflow https://stackoverflow.com/questions/789754

  •  16-09-2019
  •  | 
  •  

Вопрос

Я внедрил средство запроса VSS, и оно связывает компиляцию и выполнение на Windows Server 2008, но не выполняется на Windows Server 2003.Поскольку мой запрашивающий находится внутри библиотеки DLL, моя библиотека DLL загружаться не будет.Используя Ходок зависимости, Я обнаружил, что моя DLL находит VSSAPI.DLL просто отлично, но она сообщает:

Error: At least one required implicit or forwarded dependency was not found.

Глядя на мой VSSAPI.DLL, он не может найти CreateVssBackupComponentsInternal, в то время как VSSAPI.DLL экспортирует что-то совершенно другое: ?CreateVssBackupComponents@@YGJPAPAVIVssBackupComponents@@@Z.

Это было полезно?

Решение

VSS должны быть скомпилированы и настроены специально для каждой платформы и операционной системы, включая Windows XP, Windows Server 2003 и Vista / Windows Server 2008.

Первым пакетом Microsoft SDK, полностью поддерживающим средства обработки запросов VSS, является версия 6.1, и он поддерживает средства обработки запросов, работающие только в Vista.Если вы хотите работать на Windows Server 2003 или XP:

  • Скачать VSS SDK 7.2.
  • Задайте пути к включению и библиотеке для поиска в соответствующем каталоге в VSS SDK.

Ниже приведено то, что AlphaVSS делает в своем Конфигурация.h, но образец VShadow в VSS SDK не:он задает только пути к включению и библиотеке.Я бы предположил, что следование VShadow с большей вероятностью приведет к успеху.Но для полноты картины:

Если ориентирован на Windows XP:

#define NTDDI_VERSION NTDDI_WINXPSP2
#define _WIN32_WINNT _WIN32_WINNT_WINXP
#define WINVER _WIN32_WINNT

Если ориентирован на Windows Server 2003:

#define NTDDI_VERSION NTDDI_WS03SP1
#define _WIN32_WINNT _WIN32_WINNT_WS03
#define WINVER 0x501

Если вы нацелены на Vista, не ссылайтесь на VSS SDK.Вместо этого обратитесь к Windows 6.1 SDK и:

#define NTDDI_VERSION NTDDI_WS08
#define _WIN32_WINNT _WIN32_WINNT_WS08
#define WINVER _WIN32_WINNT

Я не могу приписать себе все заслуги в этом, я понял это, прочитав исходный код проекта под названием АльфаВСС (см. объявление), который предоставляет доступ к VSS .СЕТЕВОЙ код.MSDN, похоже, был не очень полезен.Однако, в V Тень инструмент и образец предоставили пример того, как скомпилировать средство запроса VSS.

Также обратите внимание, что вы должны снова перекомпилировать для x64 или ia64 против x86.Это означает, что для поддержки всех платформ вам потребуется 9 скомпилированных версий вашего исполняемого файла.

Другие советы

Просто хотел добавить, что AlphaVSS также задает пути, а не только определяет.Это необходимо в любом случае.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top