Perché il Volume Shadow Copy Service richiedente venga meno; non riesce a trovare CreateVssBackupComponentsInternal

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

  •  16-09-2019
  •  | 
  •  

Domanda

Ho implementato un richiedente VSS, e collega compila ed esegue su Windows Server 2008, ma non esegue in Windows Server 2003. Poiché il mio richiedente è all'interno di una DLL, il mio DLL non verrà caricato. Utilizzando il Dependency Walker , ho scoperto che il mio DLL è trovare VSSAPI.DLL bene, ma riporta:

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

Guardando il mio VSSAPI.DLL, non riesce a trovare CreateVssBackupComponentsInternal, mentre VSSAPI.DLL esporta qualcosa di completamente diverso:. ?CreateVssBackupComponents@@YGJPAPAVIVssBackupComponents@@@Z

È stato utile?

Soluzione

VSS deve essere compilato e mirato specificatamente per ogni piattaforma e sistema operativo, tra cui Windows XP, Windows Server 2003 e Vista / Windows Server 2008.

Il primo Microsoft SDK per supportare pienamente richiedenti VSS è v6.1 e supporta solo i richiedenti in esecuzione su Vista. Se si desidera eseguire su Windows Server 2003 o XP:

  • VSS SDK 7.2 .
  • Imposta il tuo comprendono e percorsi della libreria di ricerca nella directory appropriata nel SDK VSS.

Quello che segue è quello che fa nella sua AlphaVSS config.h , ma il campione VShadow nel VSS SDK non: imposta solo i percorsi comprendono e la biblioteca. Vorrei suggerire che in seguito VShadow è più probabilità di successo. Ma per completezza:

Se il targeting di Windows XP:

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

Se il targeting di Windows Server 2003:

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

Se il targeting Vista, non fare riferimento al VSS SDK. Invece riferimento l'SDK di Windows 6.1 e:

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

Non riesco a prendere tutto il merito per questo, ho capito questo leggendo il codice sorgente di un progetto denominato AlphaVSS (vedi annuncio ), che espone VSS a .NET codice. MSDN non sembrava essere molto utile. Tuttavia, il VShadow strumento e il campione fornito un esempio di come compilare un richiedente VSS.

Si noti inoltre che è necessario ricompilare ancora per x64 o ia64 vs x86. Ciò significa che al fine di sostenere tutte le piattaforme, è necessario 9 versioni compilate del vostro eseguibile.

Altri suggerimenti

Volevo solo aggiungere che AlphaVSS imposta anche i percorsi, non solo le definisce. Ciò è necessario in entrambi i casi.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top