Zugreifen auf eine Nachricht in einem IMAP-Speicher, ohne die gesamte Nachricht herunterzuladen

Gilt für: Outlook 2013 | Outlook 2016

Dieses Thema zeigt ein Codebeispiel in C++, das einen Nachrichtenspeicher für die IProxyStoreObject-Schnittstelle abfragt und den zurückgegebenen Zeiger und die IProxyStoreObject::UnwrapNoRef-Funktion verwendet, um einen Zeiger auf ein entpacktes IMAP-Speicherobjekt abzurufen. Die Verwendung dieses Unwrapped-Speichers ermöglicht den Zugriff auf eine Nachricht im aktuellen Zustand, ohne einen Download der gesamten Nachricht aufrufen zu müssen.

Da UnwrapNoRef die Verweisanzahl für diesen neuen Zeiger auf das unwrapped store-Objekt nicht erhöht, müssen Sie nach dem erfolgreichen Aufruf von UnwrapNoRefIUnknown::AddRef aufrufen, um die Verweisanzahl beizubehalten.

HRESULT HrUnWrapMDB(LPMDB lpMDBIn, LPMDB* lppMDBOut) 
{ 
    HRESULT hRes = S_OK; 
    IProxyStoreObject* lpProxyObj = NULL; 
    LPMDB lpUnwrappedMDB = NULL; 
    hRes = lpMDBIn->QueryInterface(IID_IProxyStoreObject,(void**)&lpProxyObj); 
    if (SUCCEEDED(hRes) && lpProxyObj) 
    { 
        hRes = lpProxyObj->UnwrapNoRef((LPVOID*)&lpUnwrappedMDB); 
        if (SUCCEEDED(hRes) && lpUnwrappedMDB) 
        { 
            // UnwrapNoRef doesn't addref, so do it here 
            lpUnwrappedMDB->AddRef(); 
            (*lppMDBOut) = lpUnwrappedMDB; 
        } 
    } 
    if (lpProxyObj) lpProxyObj->Release(); 
    return hRes; 
}