-
Notifications
You must be signed in to change notification settings - Fork 0
/
Microsoft.VssAdmin.cs
168 lines (151 loc) · 5.07 KB
/
Microsoft.VssAdmin.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
using System;
using System.IO;
namespace Microsoft.VssAdmin
{
public enum VssWriterState
{
Unknown = 0, Stable,
WaitingForFreeze, WaitingForThaw,
WaitingForPostSnapshot, WaitingForBackupComplete,
FailedAtIdentify, FailedAtPrepareBackup,
FailedAtPrepareSnapshot, FailedAtFreeze,
FailedAtThaw, FailedAtPostSnapshot,
FailedAtBackupComplete, FailedAtPreRestore,
FailedAtPostRestore, FailedAtBackupShutdown
}
public class VssWriter
{
public readonly string Name;
public readonly Guid Id;
public readonly Guid InstanceId;
public readonly VssWriterState State;
public readonly string LastError;
public VssWriter(string name, Guid id, Guid instanceId, VssWriterState state, string lastError)
{
Name = name;
Id = id;
InstanceId = instanceId;
State = state;
LastError = lastError;
}
}
public enum VssProviderType
{
Unknown = 0,
System,
Software,
Hardware,
FileShare
}
public class VssProvider
{
public readonly string Name;
public readonly VssProviderType ProviderType;
public readonly Guid Id;
public readonly Version Version;
public VssProvider(string name, VssProviderType providerType, Guid id, Version version)
{
Name = name;
ProviderType = providerType;
Id = id;
Version = version;
}
public override string ToString()
{
return Name;
}
}
public class VssVolume
{
public readonly string Path;
public readonly string Name;
public VssVolume(string path, string name)
{
Path = path;
Name = name;
}
}
public struct VssStorageUsage
{
public readonly string Volume;
public readonly long Bytes;
public readonly double Percentage;
public VssStorageUsage(DriveInfo drive, long bytes)
:this()
{
Volume = drive.Name;
Bytes = bytes;
Percentage = bytes == -1 ? 1 : ((double) bytes) / drive.TotalSize;
}
}
public class VssShadowStorage
{
public readonly string ForVolume;
public readonly string StorageVolume;
public readonly VssStorageUsage UsedStorageSpace;
public readonly VssStorageUsage AllocatedStorageSpace;
public readonly VssStorageUsage MaximumStorageSpace;
public VssShadowStorage(string forVolume, string storageVolume, VssStorageUsage usedSpace, VssStorageUsage allocatedSpace, VssStorageUsage maxSpace)
{
ForVolume = forVolume;
StorageVolume = storageVolume;
UsedStorageSpace = usedSpace;
AllocatedStorageSpace = allocatedSpace;
MaximumStorageSpace = maxSpace;
}
}
public enum VssSnapshotContext
{
Backup,
FileShareBackup,
NasRollback,
AppRollback,
ClientAccessible,
ClientAccessibleWriters,
All
}
public enum VssShadowcopyAttributes
{
Persistent, NoAutoRecovery,
ClientAccessible, NoAutoRelease,
NoWriters, Transportable,
NotSurfaced, NotTransacted,
HardwareAssisted, Differential,
Plex, Imported,
ExposedLocally, ExposedRemotely,
AutoRecovered, RollbackRecovery,
DelayedPostSnapshot, TxfRecovery,
FileShare
}
public class VssShadowCopy
{
public readonly Guid SetId;
public readonly DateTime CreationTime;
public readonly Guid ShadowCopyId;
public readonly string OriginalVolume;
public readonly string ShadowCopyVolume;
public readonly string OriginatingMachine;
public readonly string ServiceMachine;
public readonly VssProvider Provider;
public readonly VssSnapshotContext Context;
public readonly VssShadowcopyAttributes[] Attributes;
public VssShadowCopy(
Guid setId, DateTime creationTime,
Guid id, string forVol,
string shadowCopyVol, string originatingMachine,
string serviceMachine, VssProvider provider,
VssSnapshotContext context, VssShadowcopyAttributes[] attributes)
{
SetId = setId;
CreationTime = creationTime;
ShadowCopyId = id;
OriginalVolume = forVol;
ShadowCopyVolume = shadowCopyVol;
OriginatingMachine = originatingMachine;
ServiceMachine = serviceMachine;
Provider = provider;
Context = context;
Attributes = attributes;
}
}
}