Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Gilt für: Outlook 2013 | Outlook 2016
Kopiert oder verschiebt einen Unterordner.
HRESULT CopyFolder(
ULONG cbEntryID,
LPENTRYID lpEntryID,
LPCIID lpInterface,
LPVOID lpDestFolder,
LPSTR lpszNewFolderName,
ULONG_PTR ulUIParam,
LPMAPIPROGRESS lpProgress,
ULONG ulFlags
);
Parameter
cbEntryID
[in] Die Byteanzahl im Eintragsbezeichner, auf den der lpEntryID-Parameter zeigt.
lpEntryID
[in] Zeiger auf den Eintragsbezeichner des zu kopierenden oder zu verschiebenden Unterordners.
lpInterface
[in] Ein Zeiger auf die Schnittstellenkennung (IID), die die Schnittstelle darstellt, die für den Zugriff auf den Ordner verwendet werden soll, auf den der Parameter lpDestFolder verweist. Die Übergabe von NULL führt dazu, dass der Dienstanbieter die Standardordnerschnittstelle IMAPIFolder : IMAPIContainer zurückgibt. Gültige Werte für lpInterface umfassen IID_IUnknown, IID_IMAPIProp, IID_IMAPIContainer und IID_IMAPIFolder.
lpDestFolder
[in] Ein Zeiger auf den geöffneten Ordner, in dem der kopierte oder verschobene Unterordner gespeichert werden soll.
lpszNewFolderName
[in] Ein Zeiger auf den Namen des kopierten oder verschobenen Ordners an seinem neuen Speicherort. Wenn lpszNewFolderName auf NULL gesetzt ist, wird der Name des Quellunterordners als Name für den Zielordner verwendet.
ulUIParam
[in] Ein Handle zum übergeordneten Fenster der Statusanzeige. Der Parameter ulUIParam wird ignoriert, es sei denn, das Kennzeichen FOLDER_DIALOG im Parameter ulFlags ist gesetzt.
lpProgress
[in] Ein Zeiger auf ein Statusobjekt, das eine Statusanzeige anzeigt. Wenn NULL in lpProgress übergeben wird, zeigt der Anbieter des Nachrichtenspeichers eine Statusanzeige mithilfe der MAPI-Statusobjektimplementierung an. Der Parameter lpProgress wird ignoriert, es sei denn, das Kennzeichen FOLDER_DIALOG ist in ulFlags gesetzt.
ulFlags
[in] Eine Bitmaske aus Kennzeichen, die den Kopier- oder Verschiebevorgang steuert. Die folgenden Kennzeichen können festgelegt werden:
COPY_SUBFOLDERS
Alle Unterordner im zu kopierenden Unterordner sollten ebenfalls kopiert werden. Wenn COPY_SUBFOLDERS für einen Kopiervorgang nicht festgelegt ist, wird nur der durch lpEntryID bezeichnete Unterordner kopiert. Bei einem Verschieben-Vorgang ist das Verhalten COPY_SUBFOLDERS standardmäßig aktiviert, unabhängig davon, ob das Kennzeichen gesetzt ist.
FOLDER_DIALOG
Fordert die Anzeige einer Statusanzeige an.
FOLDER_MOVE
Der Unterordner soll verschoben statt kopiert werden. Wenn FOLDER_MOVE nicht gesetzt ist, wird der Unterordner kopiert.
MAPI_DECLINE_OK
Informiert den Nachrichtenspeicheranbieter darüber, dass, wenn er CopyFolder implementiert, indem er die IMAPISupport::DoCopyTo oder IMAPISupport::DoCopyProps Methode des Unterstützungsobjekts aufruft, CopyFolder stattdessen sofort MAPI_E_DECLINE_COPY zurückgeben sollte.
MAPI_UNICODE
Der Name des Zielordners liegt im Unicode-Format vor. Wenn das Kennzeichen MAPI_UNICODE nicht gesetzt ist, wird der Ordnername im ANSI-Format angegeben.
Rückgabewert
S_OK
Der angegebene Ordner wurde erfolgreich kopiert oder verschoben.
MAPI_E_BAD_CHARWIDTH
Entweder wurde das Kennzeichen MAPI_UNICODE gesetzt und der Anbieter des Nachrichtenspeichers unterstützt kein Unicode, oder MAPI_UNICODE wurde nicht gesetzt und der Anbieter des Nachrichtenspeichers unterstützt nur Unicode.
MAPI_E_COLLISION
Der Name des Ordners, der verschoben oder kopiert wird, ist identisch mit dem Namen eines Unterordners im Zielordner. Der Anbieter des Nachrichtenspeichers erfordert eindeutige Ordnernamen.
MAPI_E_DECLINE_COPY
Der Anbieter implementiert diese Methode durch Aufrufen einer Unterstützungsobjektmethode, und der Aufrufer hat das Kennzeichen MAPI_DECLINE_OK übergeben.
MAPI_E_FOLDER_CYCLE
Der Quellordner enthält direkt oder indirekt den Zielordner. Möglicherweise wurden bereits umfangreiche Arbeiten durchgeführt, bevor dieser Zustand festgestellt wurde, sodass der Quell- und Zielordner teilweise geändert worden sein können.
MAPI_W_PARTIAL_COMPLETION
Der Aufruf war erfolgreich, aber nicht alle Einträge wurden erfolgreich kopiert. Wenn diese Warnung zurückgegeben wird, sollte der Aufruf als erfolgreich behandelt werden. Verwenden Sie zum Testen auf diese Warnung das Makro HR_FAILED. Weitere Informationen finden Sie unter Verwendung von Makros zur Fehlerbehandlung.
Hinweise
Die Methode IMAPIFolder::CopyFolder kopiert oder verschiebt einen Unterordner von einem Standort an einen anderen. Der zu kopierende oder zu verschiebende Unterordner wird als Unterordner zum Zielordner hinzugefügt.
Hinweise für Implementierer
Wenn der Vorgang zum Kopieren oder Verschieben mehrere Ordner umfasst, was durch das Kennzeichen COPY_SUBFOLDERS angezeigt wird, führen Sie den Vorgang für jeden Ordner so vollständig wie möglich aus. Manchmal existiert einer der zu verschiebenden oder zu kopierenden Ordner nicht oder wurde bereits an einen anderen Ort verschoben oder kopiert. Beenden Sie den Vorgang nicht vorzeitig, es sei denn, es tritt ein Fehler auf, der außerhalb Ihrer Kontrolle liegt, z. B. nicht genügend Arbeitsspeicher, nicht genügend Datenträgerfläche oder eine Beschädigung des Nachrichtenspeichers.
Versuchen Sie, alle Nachrichteneintragsbezeichner in den kopierten Nachrichten beizubehalten. Sie sollten auch versuchen, Eintragsbezeichner beizubehalten, dies ist jedoch nicht erforderlich.
Hinweise für Aufrufer
Erwarten Sie diese Rückgabewerte unter den folgenden Bedingungen.
| Bedingung | Rückgabewert |
|---|---|
| CopyFolder hat alle Nachrichten und Unterordner erfolgreich kopiert oder verschoben. | S_OK |
| CopyFolder- konnte nicht alle Nachrichten und Unterordner erfolgreich kopieren oder verschieben. | MAPI_W_PARTIAL_COMPLETION oder MAPI_E_NOT_FOUND |
| CopyFolder konnte nicht abgeschlossen werden. | Beliebiger Fehlerwert außer MAPI_E_NOT_FOUND |
Wenn CopyFolder nicht abgeschlossen werden kann, sollten Sie nicht davon ausgehen, dass keine Arbeit erledigt wurde. CopyFolder konnte möglicherweise eine oder mehrere Nachrichten und Unterordner kopieren oder verschieben, bevor der Fehler aufgetreten ist.
Wenn ein Eintragsbezeichner für einen nicht vorhandenen Ordner in lpEntryID übergeben wird, gibt CopyFolder je nach Implementierung des Nachrichtenspeichers MAPI_W_PARTIAL_COMPLETION oder MAPI_E_NOT_FOUND zurück.
Je nach Anbieter des Nachrichtenspeichers wird der Eintragsbezeichner der ursprünglichen Nachricht in der kopierten Nachricht beibehalten oder nicht. Sie sollten Eintragsbezeichner nach Möglichkeit beibehalten, dies ist jedoch nicht zwingend erforderlich. Im Allgemeinen können Sie von folgenden Szenarien ausgehen:
Wenn Sie einen Ordner zwischen zwei verschiedenen Arten von Nachrichtenspeichern verschieben, ändert sich der Eintragsbezeichner garantiert.
Wenn Sie einen Ordner zwischen zwei Nachrichtenspeichern desselben Typs verschieben, ändert sich der Eintragsbezeichner fast immer.
Wenn Sie einen Ordner an einen anderen Speicherort im selben Nachrichtenspeicher verschieben, kann sich der Eintragsbezeichner je nach Anbieter des Nachrichtenspeichers ändern oder unverändert bleiben.
MFCMAPI-Referenz
Einen MFCMAP-Beispielcode finden Sie in der folgenden Tabelle.
| Datei | Funktion | Kommentar |
|---|---|---|
| MsgStoreDlg.cpp |
CMsgStoreDlg::OnPasteFolder |
MFCMAPI verwendet die Methode IMAPIFolder::CopyFolder, um Ordner von einem Standort an einen anderen zu kopieren. MFCMAPI merkt sich den Quellordner während des Kopiervorgangs und führt das Kopieren während des Einfügevorgangs aus. |