vss intialize for backupは、return code e_unexpectedで失敗します
-
03-10-2019 - |
質問
#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サービスが実行されています。イベントログでは、「ボリュームシャドウコピーサービスエラー:予期しないエラーを呼び出すルーチンのコクタインスターンス。hr= 0x800401f0。」として表示されます。
解決
COINitialize機能を使用してCOMライブラリを初期化する必要があります。
HRESULT result = CoInitialize(NULL);
CHECK_PRINT(result);
result = CreateVssBackupComponents(&VssHandle);
CHECK_PRINT(result);
result = VssHandle->InitializeForBackup();
CHECK_PRINT(result);
これにより、すべてのs_oksが得られます
所属していません StackOverflow