本文整理汇总了C++中zimbra::util::ScopedInterface::Read方法的典型用法代码示例。如果您正苦于以下问题:C++ ScopedInterface::Read方法的具体用法?C++ ScopedInterface::Read怎么用?C++ ScopedInterface::Read使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类zimbra::util::ScopedInterface
的用法示例。
在下文中一共展示了ScopedInterface::Read方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: if
HRESULT MAPIRfc2445::ExtractAttachments()
{
// may need to break this up so we can call for exceptions, cancel exceptions
LPCWSTR errMsg;
Zimbra::Util::ScopedInterface<IStream> pIStream;
UINT mimeLen = 0;
HRESULT hr = ConvertIt( m_pMessage, pIStream.getptr(), mimeLen );
if (FAILED(hr))
{
errMsg = FormatExceptionInfo(hr, L"Mime conversion of message with attachments failed", __FILE__, __LINE__);
dlogw(errMsg);
return hr;
}
mimepp::Message mimeMsg;
Zimbra::Util::ScopedBuffer<CHAR> pszMimeMsg;
// go to the beginning of the stream
LARGE_INTEGER li = { 0 };
hr = pIStream->Seek(li, STREAM_SEEK_SET, NULL);
if (FAILED(hr))
{
errMsg = FormatExceptionInfo(hr, L"Stream seek failed", __FILE__, __LINE__);
dlogw(errMsg);
return hr;
}
// +1 for NULL terminator
Zimbra::Mapi::Memory::AllocateBuffer(mimeLen + 1, (LPVOID *)pszMimeMsg.getptr());
if (!pszMimeMsg.get())
{
errMsg = FormatExceptionInfo(S_OK, L"Mime msg Memory alloc failed", __FILE__, __LINE__);
dlogw(errMsg);
return hr;
}
ULONG ulNumRead = 0;
hr = pIStream->Read((LPVOID)(pszMimeMsg.get()), mimeLen, &ulNumRead);
if (FAILED(hr))
{
errMsg = FormatExceptionInfo(hr, L"Mime msg read failed", __FILE__, __LINE__);
dlogw(errMsg);
return hr;
}
if (ulNumRead != mimeLen)
{
errMsg = FormatExceptionInfo(hr, L"Mime msg read error", __FILE__, __LINE__);
dlogw(errMsg);
return hr;
}
// terminating string
pszMimeMsg.get()[mimeLen] = '\0';
mimeMsg.setString(pszMimeMsg.get());
mimeMsg.parse();
// let's see if this message is a multipart alternative before we continue
mimepp::Headers &theHeaders = mimeMsg.headers();
LPSTR pszContentType;
GetContentType(theHeaders, &pszContentType);
if(strncmp(pszContentType, "multipart/mixed", strlen("multipart/mixed")) != 0)
{
// not what we are looking for
delete[] pszContentType;
return S_OK;
}
const mimepp::Body& theBody = mimeMsg.body();
int numParts = theBody.numBodyParts();
// FBS bug 73682 -- 5/23/12
int numHiddenAttachments = GetNumHiddenAttachments();
int totalAttachments = numParts - 1;
if (totalAttachments == numHiddenAttachments)
{
return S_OK;
}
// let's look for a multipart mixed and grab the attachments
int ctr = numHiddenAttachments;
for(int i = 0; i < numParts; i++)
{
// now look for attachments
const mimepp::BodyPart& thePart = theBody.bodyPartAt(i);
mimepp::DispositionType& disposition = thePart.headers().contentDisposition();
if(disposition.asEnum() == mimepp::DispositionType::ATTACHMENT)
{
const mimepp::String& theFilename = disposition.filename();
LPSTR pszAttachContentType;
LPSTR pszCD;
LPSTR lpszRealName = new char[256];
GetContentType(thePart.headers(), &pszAttachContentType);
//.........这里部分代码省略.........