IFileSyncProviderCallback::OnApplyingChange
Tritt auf, wenn eine Dateiänderung angewendet werden soll.
HRESULT OnApplyingChange(
LPCWSTR pcszNewDirectoryPath,
LPCWSTR pcszCurrentDirectoryPath,
const WIN32_FIND_DATAW *pNewFileInfo,
const WIN32_FIND_DATAW *pCurrentFileInfo,
DWORD dwChangeType,
BOOL *pfSkipChange);
Parameter
- pcszNewDirectoryPath
[in, string] Der neue Pfad für die Datei, die geändert werden soll. Der Pfad ist relativ zum Stammverzeichnis. Wenn der dwChangeType FILESYNC_CHANGE_TYPE_DELETE lautet, ist dieser Wert NULL. Wenn der dwChangeType FILESYNC_CHANGE_TYPE_RENAME lautet, ist dies der neue Pfad, nachdem der neue Name angewendet wurde.
- pcszCurrentDirectoryPath
[in, string] Der aktuelle Pfad für die Datei, die geändert werden soll. Der Pfad ist relativ zum Stammverzeichnis. Wenn der dwChangeType FILESYNC_CHANGE_TYPE_CREATE lautet, ist dieser Wert NULL. Wenn der dwChangeType FILESYNC_CHANGE_TYPE_RENAME lautet, ist dies der aktuelle Pfad, bevor der neue Name angewendet wird.
- pNewFileInfo
[in, unique] Die neuen Dateidaten für die zu ändernde Datei. Wenn der dwChangeType FILESYNC_CHANGE_TYPE_DELETE lautet, ist dieser Wert NULL. Wenn der dwChangeType FILESYNC_CHANGE_TYPE_RENAME lautet, stellen diese Dateidaten die Datei nach dem Anwenden des neuen Namens dar.
- pCurrentFileInfo
[in, unique] Die aktuellen Dateidaten für die zu ändernde Datei. Wenn der dwChangeType FILESYNC_CHANGE_TYPE_DELETE lautet, ist dieser Wert NULL. Wenn der dwChangeType FILESYNC_CHANGE_TYPE_RENAME lautet, stellen diese Dateidaten die Datei im aktuellen Zustand dar, bevor der neue Name angewendet wird.
- dwChangeType
[in] Der Typ der anzuwendenden Änderung. Dieser Wert stammt aus der FILESYNC_CHANGE_TYPE-Enumeration.
- pfSkipChange
[out] Gibt an, ob diese Änderung übersprungen werden soll.
Rückgabewert
S_OK
Anwendungsspezifische Fehlercodes.
Hinweise
Dieses Ereignis stellt für die Anwendung einen Mechanismus bereit, um Änderungen in einer Synchronisierungssitzung dynamisch zu überspringen. Um eine Änderung zu überspringen, legen Sie den Wert von pfSkipChange auf TRUE fest. Eine übersprungene Änderung wird nicht für das Zielreplikat übernommen. Für jede übersprungene Änderung wird ein IFileSyncProviderCallback::OnChangeSkipped-Ereignis ausgelöst, wobei dwReason auf FILESYNC_SKIP_REASON_APPLICATION_REQUEST festgelegt ist.
Die Durchführung einiger Änderungen wird im Verlauf einer Sitzung mehrmals versucht. Dieses Ereignis wird bei jedem Versuch ausgelöst. Es werde beispielsweise versucht, einen Ordner zu löschen. Da in diesem Ordner eine Datei vorhanden ist, schlägt der Versuch fehl. Der Löschvorgang für diesen Ordner wird während der gesamten Sitzung weiterhin versucht, bis er entweder erfolgreich abgeschlossen wird oder festgestellt wird, dass der Löschvorgang in dieser Sitzung nicht ausgeführt werden kann und übersprungen wird.
Dieses Ereignis wird nur ausgelöst, wenn eine Änderung die Dateidaten im Zielreplikat betrifft, und nicht, wenn eine Änderung nur die Metadaten einer Datei betrifft. Wenn beispielsweise ein Aktualisierungskonflikt erkannt wird und die Datei im Zielsystem diesen gewinnt, wird für das Ziel keine Änderung übernommen und das Ereignis wird nicht ausgelöst. Dementsprechend findet bei der Übermittlung eines Tombstones von der Quelle an das Ziel nur eine Aktualisierung der Metadaten statt und keine Änderungen am Zieldateisystem. In diesem Fall wird das Ereignis nicht ausgelöst.
Wenn OnApplyingChange einen Fehler zurückgibt, beendet Sync Framework die Verarbeitung des aktuellen Änderungsbatchs und gibt den Fehlercode aus der ProcessChangeBatch-Methode von IFileSyncProvider zurück.
Siehe auch
Verweis
IFileSyncProviderCallback-Schnittstelle
FILESYNC_CHANGE_TYPE-Enumeration