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.
Zitat:
Creating shadow set {{02A915B5-D34E-4420-A566-FB8D1DFF32CE}} ...
Add volumes to snapshot set ...
- Adding volume [??] to the shadow set...
ERROR :
COM call "TVolumeShadowCopy.AddToSnapshotSet:VssBackupCompo nents.AddToSnapshotSet" failed.
- Returned HRESULT = $80070057
- Error text: Falscher Parameter
ERROR : TVolumeShadowCopy.AddToSnapshotSet:VssBackupCompon ents.AddToSnapshotSet (Falscher Parameter)
Snapshot creation failed
Warum funktioniert das nicht?
C reicht als Drive nicht. Muss C:\ sein. Funktioniert jetzt.
Eine Frage zur Funktion noch. Ich habe nur Delphi Starter. Wenn ich eine 32 Bit-Anwendung mit dem VSS erstelle, kann ich das auch auf einem 64 Bit Windows benutzen oder muss ich dafür erst Delphi Pro haben?