Freigeben über


MAPIInitialize

Gilt für: Outlook 2013 | Outlook 2016

Erhöht die Verweisanzahl des MAPI-Subsystems und initialisiert globale Daten für die MAPI-DLL.

Eigenschaft Wert
Headerdatei
Mapix.h
Implementiert von:
MAPI
Aufgerufen von:
Clientanwendungen
HRESULT MAPIInitialize(
  LPVOID lpMapiInit
);

Parameter

lpMapiInit

[in] Zeiger auf eine MAPIINIT_0-Struktur . Der lpMapiInit-Parameter kann auf NULL festgelegt werden.

Rückgabewert

S_OK

Das MAPI-Subsystem wurde erfolgreich initialisiert.

Hinweise

Die MAPIInitialize-Funktion erhöht die MAPI-Referenzanzahl für das MAPI-Subsystem, und die MAPIUninitialize-Funktion verringert die interne Verweisanzahl. Daher muss die Anzahl der Aufrufe einer Funktion gleich der Anzahl der Aufrufe der anderen Funktion sein. MAPIInitialize gibt S_OK zurück, wenn MAPI nicht zuvor initialisiert wurde.

Ein Client oder Dienstanbieter muss MAPIInitialize aufrufen, bevor ein anderer MAPI-Aufruf erfolgt. Andernfalls geben Client- oder Dienstanbieteraufrufe den MAPI_E_NOT_INITIALIZED Wert zurück.

Legen Sie beim Aufrufen von MAPIInitialize aus einer Multithreadanwendung den lpMapiInit-Parameter auf eine MAPIINIT_0-Struktur fest, die wie folgt deklariert wird:

MAPIINIT_0 MAPIINIT= { 0, MAPI_MULTITHREAD_NOTIFICATIONS}

und rufen sie auf:

MAPIInitialize (&MAPIINIT);

Wenn diese Struktur deklariert wird, erstellt MAPI einen separaten Thread zum Behandeln des Benachrichtigungsfensters, der fortgesetzt wird, bis die Anzahl der Initialisierungsverweis auf 0 (null) fällt. Ein Windows-Dienst muss den ulflags-Member der MAPIINIT_0 Struktur, auf die lpMapiInit verweist, auf MAPI_NT_SERVICE festlegen.

Hinweis

Sie können MAPIInitialize oder MAPIUninitialize nicht aus einer Win32 DllMain-Funktion oder einer anderen Funktion aufrufen, die Threads erstellt oder beendet. Weitere Informationen finden Sie unter Verwenden von Thread-Safe Objekten.

MAPIInitialize gibt keine erweiterten Fehlerinformationen zurück. Im Gegensatz zu den meisten anderen MAPI-Aufrufen sind die Bedeutungen der Rückgabewerte genau so definiert, dass sie dem jeweiligen Schritt der fehlgeschlagenen Initialisierung entsprechen:

  1. Überprüft Parameter und Flags.

    MAPI_E_INVALID_PARAMETER oder MAPI_E_UNKNOWN_FLAGS. Der Aufrufer hat einen ungültigen Parameter oder ein ungültiges Flag übergeben.

  2. Initialisiert registrierungsschlüssel, die für MAPI erforderlich sind, und bestätigt den Typ des Betriebssystems. Dieser Schritt erfolgt nur, wenn der Clientprozess als Dienst unter Windows ausgeführt wird und das MAPI_NT SERVICE-Flag in der MAPIINIT_0-Struktur festlegt.

    MAPI_E_TOO_COMPLEX. Der Aufrufprozess ist ein Windows-Dienst, und registrierungsschlüssel, die von MAPI benötigt werden, konnten nicht initialisiert werden.

    Zusätzliche Informationen sind möglicherweise im Anwendungsereignisprotokoll verfügbar.

  3. Überprüfen Sie, ob MAPI mit OLE kompatibel ist, und initialisieren Sie dann OLE.

  4. Überprüft die Kompatibilität zwischen den aktuellen Versionen von OLE und MAPI.

    MAPI_E_VERSION. Die auf der Arbeitsstation installierte OLE-Version ist nicht mit dieser Version von MAPI kompatibel.

  5. Initialisiert OLE.

    Nur während dieses Schritts kann diese Funktion einen Fehlercode zurückgeben, der hier nicht aufgeführt ist. Alle Fehler, die hier nicht aufgeführt sind, sollten von der OLE-Funktion CoInitialize stammen.

  6. Initialisiert globale Variablen pro Prozess.

    MAPI_E_SESSION_LIMIT. MAPI richtet kontextspezifisch für den aktuellen Prozess ein. Fehler können auf Win16 auftreten, wenn die Anzahl der Prozesse eine bestimmte Anzahl überschreitet, oder auf einem beliebigen System, wenn der verfügbare Arbeitsspeicher erschöpft ist.

  7. Initialisiert freigegebene globale Variablen aller Prozesse.

    MAPI_E_NOT_ENOUGH_RESOURCES. Es waren nicht genügend Systemressourcen verfügbar, um den Vorgang abzuschließen.

  8. Initialisiert die Benachrichtigungs-Engine, erstellt das Fenster und den zugehörigen Thread, wenn dies vom MAPI_MULTITHREAD_NOTIFICATIONS-Flag angefordert wird.

    MAPI_E_INVALID_OBJECT. Kann fehlschlagen, wenn die Systemressourcen erschöpft sind.

  9. Lädt und initialisiert den Profilanbieter. Überprüft, ob MAPIInitialize auf den Registrierungsschlüssel zugreifen kann, in dem Profildaten gespeichert werden.

    MAPI_E_NOT_INITIALIZED. Beim Profilanbieter ist ein Fehler aufgetreten.

MFCMAPI-Referenz

Einen MFCMAP-Beispielcode finden Sie in der folgenden Tabelle.

Datei Funktion Kommentar
ContentsTableListCtrl.cpp
MFCMAPI verwendet die MAPIInitialize-Methode , um MAPI in einem Hintergrundthread zu initialisieren, um eine Tabellenverarbeitung durchzuführen.

Siehe auch

MFCMAPI (engl.) als ein Codebeispiel