فشل VSS Intializefor النسخ الاحتياطي مع رمز الإرجاع E_Unexeded

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

سؤال

#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.

هل كانت مفيدة؟

المحلول

تحتاج إلى تهيئة مكتبة COM مع وظيفة coinitialize.

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

هذا سوف يمنحك كل S_OKS

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top