Freigeben über


IMAPIFolder::CopyFolder

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 die der lpEntryID-Parameter verweist.

lpEntryID

[in] Ein Zeiger auf den Eintragsbezeichner des zu kopierenden oder zu verschiebenden Unterordners.

lpInterface

[in] Ein Zeiger auf den Schnittstellenbezeichner (Interface Identifier, IID), der die Schnittstelle darstellt, die für den Zugriff auf den Ordner verwendet werden soll, auf den der lpDestFolder-Parameter verweist. Die Übergabe von NULL bewirkt, dass der Dienstanbieter die Standardordnerschnittstelle IMAPIFolder : IMAPIContainer zurückgibt. Gültige Werte für lpInterface sind IID_IUnknown, IID_IMAPIProp, IID_IMAPIContainer und IID_IMAPIFolder.

lpDestFolder

[in] Ein Zeiger auf den geöffneten Ordner, um den kopierten oder verschobenen Unterordner zu empfangen.

lpszNewFolderName

[in] Ein Zeiger auf den Namen des kopierten oder verschobenen Ordners im neuen Ziel. Wenn lpszNewFolderName auf NULL festgelegt ist, wird der Name des Quellunterordners für den Namen des Zielordners verwendet.

ulUIParam

[in] Ein Handle für das übergeordnete Fenster der Statusanzeige. Der ulUIParam-Parameter wird ignoriert, es sei denn, das FOLDER_DIALOG-Flag im ulFlags-Parameter ist festgelegt.

lpProgress

[in] Ein Zeiger auf ein Statusobjekt, das eine Statusanzeige anzeigt. Wenn NULL in lpProgress übergeben wird, zeigt der Nachrichtenspeicheranbieter mithilfe der MAPI-Statusobjektimplementierung eine Statusanzeige an. Der lpProgress-Parameter wird ignoriert, es sei denn, das FOLDER_DIALOG-Flag ist in ulFlags festgelegt.

ulFlags

[in] Eine Bitmaske von Flags, die den Kopier- oder Verschiebungsvorgang steuert. Die folgenden Flags können festgelegt werden:

COPY_SUBFOLDERS

Alle Unterordner im zu kopierenden Unterordner sollten ebenfalls kopiert werden. Wenn COPY_SUBFOLDERS nicht für einen Kopiervorgang festgelegt ist, wird nur der von lpEntryID identifizierte Unterordner kopiert. Bei einem Verschiebungsvorgang ist das COPY_SUBFOLDERS Verhalten die Standardeinstellung, unabhängig davon, ob das Flag festgelegt ist.

FOLDER_DIALOG

Fordert die Anzeige einer Statusanzeige an.

FOLDER_MOVE

Der Unterordner soll verschoben und nicht kopiert werden. Wenn FOLDER_MOVE nicht festgelegt ist, wird der Unterordner kopiert.

MAPI_DECLINE_OK

Informiert den Nachrichtenspeicheranbieter darüber, dass CopyFolder, wenn er CopyFolder implementiert, indem er die IMAPISupport::D oCopyTo- oder IMAPISupport::D oCopyProps-Methode des Unterstützungsobjekts aufruft, stattdessen sofort MAPI_E_DECLINE_COPY zurückgeben sollte.

MAPI_UNICODE

Der Name des Zielordners weist das Unicode-Format auf. Wenn das MAPI_UNICODE-Flag nicht festgelegt ist, weist der Ordnername das ANSI-Format auf.

Rückgabewert

S_OK

Der angegebene Ordner wurde erfolgreich kopiert oder verschoben.

MAPI_E_BAD_CHARWIDTH

Entweder wurde das flag MAPI_UNICODE festgelegt, und der Nachrichtenspeicheranbieter unterstützt Unicode nicht, oder MAPI_UNICODE wurde nicht festgelegt und der Nachrichtenspeicheranbieter unterstützt nur Unicode.

MAPI_E_COLLISION

Der Name des Ordners, der verschoben oder kopiert wird, entspricht dem Namen eines Unterordners im Zielordner. Der Nachrichtenspeicheranbieter erfordert eindeutige Ordnernamen.

MAPI_E_DECLINE_COPY

Der Anbieter implementiert diese Methode durch Aufrufen einer Unterstützungsobjektmethode, und der Aufrufer hat das MAPI_DECLINE_OK-Flag übergeben.

MAPI_E_FOLDER_CYCLE

Der Quellordner enthält direkt oder indirekt den Zielordner. Möglicherweise wurden erhebliche Arbeiten ausgeführt, bevor diese Bedingung erkannt wurde, sodass der Quell- und Zielordner teilweise geändert werden 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 Verwenden von Makros für die Fehlerbehandlung.

Hinweise

Die IMAPIFolder::CopyFolder-Methode kopiert oder verschiebt einen Unterordner von einem Speicherort an einen anderen. Der kopierte oder verschobene Unterordner wird dem Zielordner als Unterordner hinzugefügt.

Hinweise für Implementierer

Wenn der Kopier- oder Verschiebungsvorgang mehr als einen Ordner umfasst, führen Sie den Vorgang so vollständig wie möglich für jeden Ordner aus, wie durch festlegen des COPY_SUBFOLDERS Flags angegeben. Manchmal ist einer der zu verschiebenden oder zu kopierenden Ordner nicht vorhanden 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 Speicherplatz auf dem Datenträger oder beschädigung im Nachrichtenspeicher.

Versuchen Sie, alle Nachrichteneintragsbezeichner in den kopierten Nachrichten beizubehalten. Sie sollten auch versuchen, Eingabebezeichner beizubehalten, dies ist jedoch nicht erforderlich.

Hinweise für Aufrufer

Erwarten Sie diese Rückgabewerte unter den folgenden Bedingungen.

Bedingung R�ckgabewert
CopyFolder hat erfolgreich jede Nachricht und jeden Unterordner 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, gehen Sie nicht davon aus, dass keine Arbeit ausgeführt wurde. CopyFolder konnte möglicherweise eine oder mehrere der Nachrichten und Unterordner kopieren oder verschieben, bevor der Fehler auftritt.

Wenn ein Eintragsbezeichner für einen Ordner, der nicht vorhanden ist, in lpEntryID übergeben wird, gibt CopyFolder abhängig von der Implementierung des Nachrichtenspeichers MAPI_W_PARTIAL_COMPLETION oder MAPI_E_NOT_FOUND zurück.

Je nach Nachrichtenspeicheranbieter kann der Eintragsbezeichner der ursprünglichen Nachricht in der kopierten Nachricht beibehalten werden. Eingabebezeichner sollten nach Möglichkeit beibehalten werden, dies ist jedoch keine Voraussetzung. Im Allgemeinen können Sie sich auf die folgenden Szenarien verlassen:

  • Wenn Sie einen Ordner zwischen zwei verschiedenen Typen von Nachrichtenspeichern verschieben, wird der Eintragsbezeichner garantiert geändert.

  • 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 Nachrichtenspeicheranbieter ändern.

MFCMAPI-Referenz

Einen MFCMAP-Beispielcode finden Sie in der folgenden Tabelle.

Datei Funktion Kommentar
MsgStoreDlg.cpp
CMsgStoreDlg::OnPasteFolder
MFCMAPI verwendet die IMAPIFolder::CopyFolder-Methode , um Ordner von einem Speicherort an einen anderen zu kopieren. MFCMAPI speichert den Quellordner während des Kopiervorgangs und führt den Kopiervorgang tatsächlich während des Einfügevorgangs aus.

Siehe auch

IMAPIFolder : IMAPIContainer

MFCMAPI (engl.) als ein Codebeispiel