vss intialize для резервного копирования завершается неудачно с кодом возврата E_UNEXPECTED - PullRequest
2 голосов
/ 05 мая 2010
#include "vss.h"
#include "vswriter.h"
#include <VsBackup.h>
#include <stdio.h>

#define CHECK_PRINT(result) printf("%s\n",result==S_OK?"S_OK":"error")
int main(int argc, char* argv[])
{
 BSTR xml;
 LPTSTR errorText;
 IVssBackupComponents *VssHandle;


 HRESULT  result = CreateVssBackupComponents(&VssHandle);
 CHECK_PRINT(result);
 result = VssHandle->InitializeForBackup();
 printf("unexpected%x\n",result);

 system("pause");
 return 0;
}

в вышеуказанной программе происходит сбой intializeforbackup с кодом ошибки E_UNEXPECTED.Служба VSS работает.В журнале событий он отображается как «Ошибка службы теневого копирования тома: непредвиденная ошибка при вызове подпрограммы CoCreateInstance. Hr = 0x800401f0.»

1 Ответ

2 голосов
/ 27 августа 2010

Вам нужно инициализировать библиотеку COM с помощью функции CoInitialize.

HRESULT  result = CoInitialize(NULL);
CHECK_PRINT(result);
result = CreateVssBackupComponents(&VssHandle);
CHECK_PRINT(result);
result = VssHandle->InitializeForBackup();
CHECK_PRINT(result);

Это даст вам все S_OKs

...