Почему мой запросчик службы теневого копирования томов не работает: не удается найти CreateVssBackupComponentsInternal - PullRequest
1 голос
/ 26 апреля 2009

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

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

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

Ответы [ 2 ]

1 голос
/ 01 июня 2009

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

1 голос
/ 26 апреля 2009

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

Первый Microsoft SDK, полностью поддерживающий запросчики VSS, - v6.1, и он поддерживает только запросчики, работающие в Vista. Если вы хотите запустить на Windows Server 2003 или XP:

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

Ниже приведено то, что AlphaVSS делает в своем Config.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

Я не могу взять на себя всю ответственность за это, я понял это, прочитав исходный код проекта под названием AlphaVSS (см. объявление ), который подвергает VSS. Чистый код MSDN, похоже, не очень помог. Однако инструмент VShadow и пример предоставили пример того, как скомпилировать запросчик VSS.

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

...