diff --git a/internal/fs/fs_local_vss_test.go b/internal/fs/fs_local_vss_test.go index c25ce4535..60262c873 100644 --- a/internal/fs/fs_local_vss_test.go +++ b/internal/fs/fs_local_vss_test.go @@ -274,11 +274,7 @@ func TestParseProvider(t *testing.T) { if err != nil { result = err.Error() } - matched, err := regexp.MatchString(test.result, result) - if err != nil { - panic(err) - } - if !matched || test.result == "" { + if test.result != result || test.result == "" { t.Fatalf("wrong result, want:\n %#v\ngot:\n %#v", test.result, result) } } else if !ole.IsEqualGUID(id, test.id) { diff --git a/internal/fs/vss_windows.go b/internal/fs/vss_windows.go index e8c5dc561..0b51b00f3 100644 --- a/internal/fs/vss_windows.go +++ b/internal/fs/vss_windows.go @@ -537,13 +537,6 @@ func vssFreeSnapshotProperties(properties *VssSnapshotProperties) error { return nil } -func vssFreeProviderProperties(p *VssProviderProperties) { - ole.CoTaskMemFree(uintptr(unsafe.Pointer(p.providerName))) - p.providerName = nil - ole.CoTaskMemFree(uintptr(unsafe.Pointer(p.providerVersion))) - p.providerName = nil -} - // BackupComplete calls the equivalent VSS api. func (vss *IVssBackupComponents) BackupComplete() (*IVSSAsync, error) { var oleIUnknown *ole.IUnknown @@ -583,6 +576,13 @@ type VssProviderProperties struct { classID ole.GUID } +func vssFreeProviderProperties(p *VssProviderProperties) { + ole.CoTaskMemFree(uintptr(unsafe.Pointer(p.providerName))) + p.providerName = nil + ole.CoTaskMemFree(uintptr(unsafe.Pointer(p.providerVersion))) + p.providerVersion = nil +} + // GetSnapshotDeviceObject returns root path to access the snapshot files // and folders. func (p *VssSnapshotProperties) GetSnapshotDeviceObject() string { @@ -1084,14 +1084,6 @@ func (p *VssSnapshot) Delete() error { } func getProviderID(provider string) (*ole.GUID, error) { - comInterface, err := ole.CreateInstance(CLSID_VSS_COORDINATOR, UIID_IVSS_ADMIN) - if err != nil { - return nil, err - } - defer comInterface.Release() - - vssAdmin := (*IVSSAdmin)(unsafe.Pointer(comInterface)) - providerLower := strings.ToLower(provider) switch providerLower { case "": @@ -1100,6 +1092,14 @@ func getProviderID(provider string) (*ole.GUID, error) { return ole.NewGUID("{b5946137-7b9f-4925-af80-51abd60b20d5}"), nil } + comInterface, err := ole.CreateInstance(CLSID_VSS_COORDINATOR, UIID_IVSS_ADMIN) + if err != nil { + return nil, err + } + defer comInterface.Release() + + vssAdmin := (*IVSSAdmin)(unsafe.Pointer(comInterface)) + enum, err := vssAdmin.QueryProviders() if err != nil { return nil, err