Por que meu reprodutor de serviço de cópia das sombras de volume falha: não consigo encontrar createvssbackupComponentsInternal

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

  •  16-09-2019
  •  | 
  •  

Pergunta

Eu implementei um solicitante VSS e vincula compilar e executa no Windows Server 2008, mas não é executado no Windows Server 2003. Como meu solicitante está dentro de uma DLL, minha DLL não carregará. Usando o Walker dependência, Descobri que minha DLL está encontrando muito bem, mas relata:

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

Olhando para o meu vSsapi.dll, ele não pode encontrar CreateVssBackupComponentsInternal, enquanto o vssapi.dll exporta algo completamente diferente: ?CreateVssBackupComponents@@YGJPAPAVIVssBackupComponents@@@Z.

Foi útil?

Solução

O VSS deve ser compilado e direcionado especificamente para cada plataforma e sistema operacional, incluindo Windows XP, Windows Server 2003 e Vista/Windows Server 2008.

O primeiro SDK da Microsoft a suportar totalmente os solicitantes do VSS é v6.1 e suporta apenas os solicitantes em execução no Vista. Se você deseja executar no Windows Server 2003 ou XP:

  • Download VSS SDK 7.2.
  • Defina seus caminhos de inclusão e biblioteca para pesquisar o diretório apropriado no VSS SDK.

A seguir é o que o Alphavss faz em seu Config.h, mas a amostra VSHADOW no VSS SDK não: ele apenas define os caminhos de inclusão e biblioteca. Eu sugeriria que seguir o Vshadow tem mais probabilidade de ter sucesso. Mas para completude:

Se direcionar o Windows XP:

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

Se direcionar o Windows Server 2003:

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

Se direcionar o Vista, não faça referência ao VSS SDK. Em vez disso, faça referência ao Windows 6.1 SDK e:

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

Não posso aceitar todo o crédito por isso, descobri isso lendo o código -fonte de um projeto chamado Alphavss (Vejo anúncio), que expõe o VSS ao código .NET. O MSDN não parecia muito útil. No entanto, o Vshadow A ferramenta e a amostra forneceram um exemplo de como compilar um solicitante VSS.

Observe também que você deve recompilar novamente para x64 ou IA64 vs x86. Isso significa que, para suportar todas as plataformas, você precisará de 9 versões compiladas do seu executável.

Outras dicas

Só queria adicionar que o Alphavss também define os caminhos, não apenas os define. Isso é necessário em ambos os casos.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top