Freigeben über


Anmelden bei einem Anbieter von umschlossenem PST-Speicher

Gilt für: Outlook 2013 | Outlook 2016

Bevor Sie mapI bei einem umschlossenen PST-Speicheranbieter anmelden können, müssen Sie den umschlossenen PST-Speicheranbieter (Personal Folders File) initialisieren und konfigurieren. Weitere Informationen finden Sie unter Initialisieren eines umschlossenen PST-Speicheranbieters.

Nachdem Sie einen umschlossenen PST-Speicheranbieter initialisiert und konfiguriert haben, müssen Sie zwei Anmelderoutinen implementieren. Die Funktion IMSProvider::Logon protokolliert die MAPI beim umschlossenen PST-Speicheranbieter. Die Funktion IMSProvider::SpoolerLogon protokolliert den MAPI-Spooler mit dem umschlossenen PST-Speicheranbieter.

In diesem Thema werden die Funktion IMSProvider::Logon und die Funktion IMSProvider::SpoolerLogon anhand von Codebeispielen aus dem Beispiel für umschlossenen PST-Speicheranbieter veranschaulicht. Das Beispiel implementiert einen umschlossenen PST-Anbieter, der zusammen mit der Replikations-API verwendet werden soll. Weitere Informationen zum Herunterladen und Installieren des Beispielanbieters für umschlossenen PST-Speicher finden Sie unter Installieren des Beispielanbieters für umschlossenen PST-Speicher. Weitere Informationen zur Replikations-API finden Sie unter Informationen zur Replikations-API.

Nachdem MAPI und der MAPI-Spooler beim umschlossenen PST-Speicheranbieter angemeldet sind, kann er verwendet werden. Weitere Informationen finden Sie unter Verwenden eines umschlossenen PST-Speicheranbieters.

MAPI-Anmelderoutine

Nachdem der umschlossene PST-Speicheranbieter initialisiert wurde, müssen Sie die FUNKTION IMSProvider::Logon implementieren, um die MAPI beim umschlossenen PST-Speicher anzumelden. Diese Funktion überprüft Benutzeranmeldeinformationen und ruft die Konfigurationseigenschaften für den Anbieter ab. Sie müssen auch die SetOLFIInOST -Funktion implementieren, um die Offlinedateiinformationen (OLFI ) festzulegen. OLFI ist eine Warteschlange mit langfristigen ID-Strukturen, die vom umschlossenen PST-Speicheranbieter verwendet wird, um eine Eintrags-ID für eine neue Nachricht oder einen neuen Ordner im Offlinemodus zuzuweisen. Schließlich gibt die FUNKTION IMSProvider::Logon ein Nachrichtenspeicherobjekt zurück, bei dem sich der MAPI-Spooler und die Clientanwendungen im ppMDB Parameter anmelden können.

CMSProvider::Logon()-Beispiel

STDMETHODIMP CMSProvider::Logon( 
    LPMAPISUP pSupObj, 
    ULONG ulUIParam, 
    LPTSTR pszProfileName, 
    ULONG cbEntryID, 
    LPENTRYID pEntryID, 
    ULONG ulFlags, 
    LPCIID pInterface, 
    ULONG * pcbSpoolSecurity, 
    LPBYTE * ppbSpoolSecurity, 
    LPMAPIERROR * ppMAPIError, 
    LPMSLOGON * ppMSLogon, 
    LPMDB * ppMDB) 
{ 
    HRESULT hRes = S_OK; 
    LPMDB lpPSTMDB = NULL; 
    CMsgStore* pWrappedMDB = NULL; 
 
    Log(true,"CMSProvider::Logon Pst logon Called\n"); 
 
    LPPROFSECT lpProfSect = NULL; 
    CSupport * pMySup = NULL; 
    hRes = GetGlobalProfileObject(pSupObj,&lpProfSect); 
    pMySup = new CSupport(pSupObj, lpProfSect); 
    if (!pMySup) 
    { 
        Log(true,"CMSProvider::Logon: Failed to allocate new CSupport object\n"); 
        hRes = E_OUTOFMEMORY; 
    } 
    if (SUCCEEDED(hRes)) 
    { 
        ulFlags = (ulFlags & ~MDB_OST_LOGON_ANSI) | MDB_OST_LOGON_UNICODE; 
        hRes = m_pPSTMS->Logon( 
            pMySup, 
            ulUIParam,  
            pszProfileName,  
            cbEntryID, 
            pEntryID,  
            ulFlags,  
            pInterface,  
            pcbSpoolSecurity, 
            ppbSpoolSecurity,  
            ppMAPIError,  
            ppMSLogon,  
            &lpPSTMDB); 
    } 
    Log(true,"CMSProvider::Logon returned 0x%08X\n", hRes); 
 
    // Set up the MDB to allow synchronization 
    if (SUCCEEDED(hRes)) 
    { 
        hRes = SetOLFIInOST(lpPSTMDB); 
        Log(true,"SetOLFIInOST returned 0x%08X\n", hRes); 
    } 
    // Wrap the outgoing MDB 
    pWrappedMDB = new CMsgStore (lpPSTMDB); 
    if (NULL == pWrappedMDB) 
    { 
        Log(true,"CMSProvider::Logon: Failed to allocate new CMsgStore object\n"); 
        hRes = E_OUTOFMEMORY; 
    } 
    // Copy pointer to the allocated object back into the return LPMDB object pointer 
    *ppMDB = pWrappedMDB; 
    if (lpProfSect) lpProfSect->Release(); 
 
    return hRes; 
}

MAPI-Spooler-Anmelderoutine

Ähnlich wie BEI IMSProvider::Logon müssen Sie die FUNKTION IMSProvider::SpoolerLogon implementieren, um den MAPI-Spooler im umschlossenen PST-Speicher zu protokollieren. Ein Nachrichtenspeicherobjekt, bei dem sich der MAPI-Spooler und die Clientanwendungen anmelden können, wird im ppMDB -Parameter zurückgegeben.

CMSProvider::SpoolerLogon()-Beispiel

STDMETHODIMP CMSProvider::SpoolerLogon ( 
    LPMAPISUP pSupObj, 
    ULONG ulUIParam, 
    LPTSTR pszProfileName, 
    ULONG cbEntryID, 
    LPENTRYID pEntryID, 
    ULONG ulFlags, 
    LPCIID pInterface, 
    ULONG cbSpoolSecurity, 
    LPBYTE pbSpoolSecurity, 
    LPMAPIERROR * ppMAPIError, 
    LPMSLOGON * ppMSLogon, 
    LPMDB * ppMDB) 
{ 
    HRESULT hRes = S_OK; 
     
    Log(true,"CMSProvider::SpoolerLogon\n"); 
    LPPROFSECT lpProfSect = NULL; 
    CSupport * pMySup = NULL; 
    hRes = GetGlobalProfileObject(pSupObj,&lpProfSect); 
    pMySup = new CSupport(pSupObj, lpProfSect); 
    if (!pMySup) 
    { 
        Log(true,"CMSProvider::SpoolerLogon: " + 
            "Failed to allocate new CSupport object\n"); 
        hRes = E_OUTOFMEMORY; 
    } 
    if (SUCCEEDED(hRes)) 
    { 
        hRes = m_pPSTMS->SpoolerLogon(  
            pMySup,//pSupObj, 
            ulUIParam, 
            pszProfileName, 
            cbEntryID, 
            pEntryID, 
            ulFlags, 
            pInterface, 
            cbSpoolSecurity, 
            pbSpoolSecurity, 
            ppMAPIError, 
            ppMSLogon, 
            ppMDB); 
    } 
    Log(true,"CMSProvider::SpoolerLogon returned 0x%08X\n", hRes); 
 
    return hRes; 
}

Siehe auch