Pourquoi mon Volume Shadow Copy Service de demandeur Fail: ne peut pas trouver CreateVssBackupComponentsInternal

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

  •  16-09-2019
  •  | 
  •  

Question

Je l'ai mis en place un demandeur VSS, et il relie Compile et exécute sur Windows Server 2008, mais ne pas exécuter sur Windows Server 2003. Étant donné que mon demandeur est dans une DLL, ma DLL ne charge pas. Utilisation de la Dépendance Walker , j'ai découvert que ma DLL est de trouver VSSAPI.DLL très bien, mais il rapporte:

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

En regardant mon VSSAPI.DLL, il ne peut pas trouver CreateVssBackupComponentsInternal, alors que VSSAPI.DLL exporte quelque chose de complètement différent. ?CreateVssBackupComponents@@YGJPAPAVIVssBackupComponents@@@Z

Était-ce utile?

La solution

VSS doit être compilé et ciblé spécifiquement pour chaque plate-forme et système d'exploitation, y compris Windows XP, Windows Server 2003 et Vista / Windows Server 2008.

Le premier Microsoft SDK pour soutenir entièrement VSS est v6.1 demandeurs, et il ne supporte que Vista fonctionne sur les demandeurs. Si vous souhaitez exécuter sur Windows Server 2003 ou XP:

  • Télécharger VSS .
  • Définir vos include et chemins de bibliothèque pour rechercher le répertoire approprié dans le SDK VSS.

Ce qui suit est ce que AlphaVSS fait dans son config.h , mais l'échantillon de VShadow dans le SDK VSS ne: il définit uniquement les inclure et les chemins de bibliothèque. Je dirais que, suite à VShadow est plus susceptible de réussir. Mais pour être complet:

Si le ciblage Windows XP:

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

Si le ciblage Windows Server 2003:

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

Si le ciblage Vista, ne fait pas référence à SDK VSS. référence à la place du SDK de Windows 6.1 et:

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

Je ne peux pas prendre tout le crédit pour cela, je me suis dit cela en lisant le code source d'un projet appelé AlphaVSS (voir annonce ), qui expose VSS au code .NET. MSDN ne semble pas être très utile. Cependant, le VShadow outil et de l'échantillon fourni une exemple de la façon de compiler un demandeur VSS.

Notez également que vous devez recompiler pour x64 ou ia64 vs x86. Cela signifie que pour soutenir toutes les plates-formes, vous aurez besoin 9 versions compilées de votre exécutable.

Autres conseils

Je voulais juste ajouter que AlphaVSS définit également les chemins, non seulement les définit. Ceci est nécessaire dans les deux cas.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top