Pregunta

He implementado un solicitante de VSS, y vincula compila y se ejecuta en Windows Server 2008, pero no se ejecuta en Windows Server 2003. Dado que mi solicitante está dentro de una DLL, mi DLL no se cargará. Utilizando el Caminante de dependencia, Descubrí que mi dll está encontrando vssapi.dll muy bien, pero informa:

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

Mirando mi vssapi.dll, no puede encontrar CreateVssBackupComponentsInternal, mientras que vssapi.dll exporta algo completamente diferente: ?CreateVssBackupComponents@@YGJPAPAVIVssBackupComponents@@@Z.

¿Fue útil?

Solución

VSS debe ser compilado y dirigido específicamente para cada plataforma y sistema operativo, incluidos Windows XP, Windows Server 2003 y Vista/Windows Server 2008.

El primer Microsoft SDK en admitir plenamente VSS Soliciters es V6.1, y solo admite a los solicitantes que se ejecutan en Vista. Si desea ejecutar en Windows Server 2003 o XP:

  • Descargar VSS SDK 7.2.
  • Establezca sus rutas de inclusión y biblioteca para buscar el directorio apropiado en el VSS SDK.

Lo siguiente es lo que Alphavss hace en su Config.h, pero la muestra de Vshadow en el VSS SDK no: solo establece las rutas de inclusión y biblioteca. Sugeriría que seguir vShadow es más probable que tenga éxito. Pero para completar:

Si se dirige a Windows XP:

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

Si se dirige a Windows Server 2003:

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

Si se dirige a Vista, no haga referencia al VSS SDK. En su lugar, haga referencia al Windows 6.1 SDK y:

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

No puedo tomar todo el crédito por esto, descubrí esto leyendo el código fuente de un proyecto llamado Alfavss (ver anuncio), que expone VSS al código .NET. MSDN no parecía ser muy útil. sin embargo, el Vsidio La herramienta y la muestra proporcionaron un ejemplo de cómo compilar un solicitante de VSS.

También tenga en cuenta que debe recompilar nuevamente para X64 o IA64 vs X86. Eso significa que para admitir todas las plataformas, necesitará 9 versiones compiladas de su ejecutable.

Otros consejos

Solo quería agregar que Alphavss también establece las rutas, no solo las define. Esto es necesario en cualquier caso.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top