فشل VSS Intializefor النسخ الاحتياطي مع رمز الإرجاع E_Unexeded
-
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 قيد التشغيل. في سجل الحدث ، يُظهر أنه "خطأ في خدمة نسخ الظل: خطأ غير متوقع استدعاء روتين 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
لا تنتمي إلى StackOverflow