Hier ein Beispiel, wie man die VSS-Routinen in ein eigenes Programm einbinden kann:
Code:
...
procedure ShowVssStatus (const AStatus : string);
begin
...
end;
...
VssThread:=CreateVssThread(Drive,true);
with VssThread do begin
LogFilename:=TempDir+'VssLog.txt';
WriteLog:=true;
OnStatusMessage:=ShowVssStatus;
Resume;
WriteLineToLog('Creating a Volume Shadow Copy: '+DateTimeToStr(Now));
repeat
Sleep(1);
Application.ProcessMessages;
until Done;
if Success then begin
SaveBackupComponentsDocument(TempDir+'VssBackupDoc.xml');
SourceDrv:=ShadowDeviceName;
end
else begin
WriteLineToLog(sLineBreak+'Snapshot creation failed');
FreeAndNil(VssThread);
SourceDrv:=Drive;
end;
end;
...
// Backup or similar action
...
if assigned(VssThread) then begin
try
VssThread.DeleteShadowCopy;
finally
FreeAndNil(VssThread);
end;
end;
...
Im Anhang gibt es außerdem eine aktualisierte Version des Programms.