ReactOS Fundraising Campaign 2012
 
€ 4,410 / € 30,000

Information | Donate

Home | Info | Community | Development | myReactOS | Contact Us

  1. Home
  2. Community
  3. Development
  4. myReactOS
  5. Fundraiser 2012

  1. Main Page
  2. Alphabetical List
  3. Data Structures
  4. Directories
  5. File List
  6. Data Fields
  7. Globals
  8. Related Pages

ReactOS Development > Doxygen

imaptransport.c
Go to the documentation of this file.
00001 /*
00002  * IMAP Transport
00003  *
00004  * Copyright 2008 Hans Leidekker for CodeWeavers
00005  *
00006  * This library is free software; you can redistribute it and/or
00007  * modify it under the terms of the GNU Lesser General Public
00008  * License as published by the Free Software Foundation; either
00009  * version 2.1 of the License, or (at your option) any later version.
00010  *
00011  * This library is distributed in the hope that it will be useful,
00012  * but WITHOUT ANY WARRANTY; without even the implied warranty of
00013  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00014  * Lesser General Public License for more details.
00015  *
00016  * You should have received a copy of the GNU Lesser General Public
00017  * License along with this library; if not, write to the Free Software
00018  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
00019  */
00020 
00021 #define COBJMACROS
00022 
00023 #include <stdarg.h>
00024 #include <stdio.h>
00025 
00026 #include "windef.h"
00027 #include "winbase.h"
00028 #include "winnt.h"
00029 #include "winuser.h"
00030 #include "objbase.h"
00031 #include "mimeole.h"
00032 #include "wine/debug.h"
00033 
00034 #include "inetcomm_private.h"
00035 
00036 WINE_DEFAULT_DEBUG_CHANNEL(inetcomm);
00037 
00038 typedef struct
00039 {
00040     InternetTransport InetTransport;
00041     ULONG refs;
00042 } IMAPTransport;
00043 
00044 static HRESULT WINAPI IMAPTransport_QueryInterface(IIMAPTransport *iface, REFIID riid, void **ppv)
00045 {
00046     TRACE("(%s, %p)\n", debugstr_guid(riid), ppv);
00047 
00048     if (IsEqualIID(riid, &IID_IUnknown) ||
00049         IsEqualIID(riid, &IID_IInternetTransport) ||
00050         IsEqualIID(riid, &IID_IIMAPTransport))
00051     {
00052         *ppv = iface;
00053         IUnknown_AddRef(iface);
00054         return S_OK;
00055     }
00056     *ppv = NULL;
00057     FIXME("no interface for %s\n", debugstr_guid(riid));
00058     return E_NOINTERFACE;
00059 }
00060 
00061 static ULONG WINAPI IMAPTransport_AddRef(IIMAPTransport *iface)
00062 {
00063     IMAPTransport *This = (IMAPTransport *)iface;
00064     return InterlockedIncrement((LONG *)&This->refs);
00065 }
00066 
00067 static ULONG WINAPI IMAPTransport_Release(IIMAPTransport *iface)
00068 {
00069     IMAPTransport *This = (IMAPTransport *)iface;
00070     ULONG refs = InterlockedDecrement((LONG *)&This->refs);
00071     if (!refs)
00072     {
00073         TRACE("destroying %p\n", This);
00074         if (This->InetTransport.Status != IXP_DISCONNECTED)
00075             InternetTransport_DropConnection(&This->InetTransport);
00076         if (This->InetTransport.pCallback) ITransportCallback_Release(This->InetTransport.pCallback);
00077         HeapFree(GetProcessHeap(), 0, This);
00078     }
00079     return refs;
00080 }
00081 
00082 static HRESULT WINAPI IMAPTransport_GetServerInfo(IIMAPTransport *iface,
00083     LPINETSERVER pInetServer)
00084 {
00085     IMAPTransport *This = (IMAPTransport *)iface;
00086 
00087     TRACE("(%p)\n", pInetServer);
00088     return InternetTransport_GetServerInfo(&This->InetTransport, pInetServer);
00089 }
00090 
00091 static IXPTYPE WINAPI IMAPTransport_GetIXPType(IIMAPTransport *iface)
00092 {
00093     TRACE("()\n");
00094     return IXP_IMAP;
00095 }
00096 
00097 static HRESULT WINAPI IMAPTransport_IsState(IIMAPTransport *iface,
00098     IXPISSTATE isstate)
00099 {
00100     FIXME("(%d): stub\n", isstate);
00101     return E_NOTIMPL;
00102 }
00103 
00104 static HRESULT WINAPI IMAPTransport_InetServerFromAccount(
00105     IIMAPTransport *iface, IImnAccount *pAccount, LPINETSERVER pInetServer)
00106 {
00107     IMAPTransport *This = (IMAPTransport *)iface;
00108 
00109     TRACE("(%p, %p)\n", pAccount, pInetServer);
00110     return InternetTransport_InetServerFromAccount(&This->InetTransport, pAccount, pInetServer);
00111 }
00112 
00113 static HRESULT WINAPI IMAPTransport_Connect(IIMAPTransport *iface,
00114     LPINETSERVER pInetServer, boolean fAuthenticate, boolean fCommandLogging)
00115 {
00116     IMAPTransport *This = (IMAPTransport *)iface;
00117     HRESULT hr;
00118 
00119     TRACE("(%p, %s, %s)\n", pInetServer, fAuthenticate ? "TRUE" : "FALSE", fCommandLogging ? "TRUE" : "FALSE");
00120 
00121     hr = InternetTransport_Connect(&This->InetTransport, pInetServer, fAuthenticate, fCommandLogging);
00122     return hr;
00123 }
00124 
00125 static HRESULT WINAPI IMAPTransport_HandsOffCallback(IIMAPTransport *iface)
00126 {
00127     IMAPTransport *This = (IMAPTransport *)iface;
00128 
00129     TRACE("()\n");
00130     return InternetTransport_HandsOffCallback(&This->InetTransport);
00131 }
00132 
00133 static HRESULT WINAPI IMAPTransport_Disconnect(IIMAPTransport *iface)
00134 {
00135     FIXME("(): stub\n");
00136     return E_NOTIMPL;
00137 }
00138 
00139 static HRESULT WINAPI IMAPTransport_DropConnection(IIMAPTransport *iface)
00140 {
00141     IMAPTransport *This = (IMAPTransport *)iface;
00142 
00143     TRACE("()\n");
00144     return InternetTransport_DropConnection(&This->InetTransport);
00145 }
00146 
00147 static HRESULT WINAPI IMAPTransport_GetStatus(IIMAPTransport *iface,
00148     IXPSTATUS *pCurrentStatus)
00149 {
00150     IMAPTransport *This = (IMAPTransport *)iface;
00151 
00152     TRACE("()\n");
00153     return InternetTransport_GetStatus(&This->InetTransport, pCurrentStatus);
00154 }
00155 
00156 static HRESULT WINAPI IMAPTransport_InitNew(IIMAPTransport *iface,
00157     LPSTR pszLogFilePath, IIMAPCallback *pCallback)
00158 {
00159     IMAPTransport *This = (IMAPTransport *)iface;
00160 
00161     TRACE("(%s, %p)\n", debugstr_a(pszLogFilePath), pCallback);
00162 
00163     if (!pCallback)
00164         return E_INVALIDARG;
00165 
00166     if (pszLogFilePath)
00167         FIXME("not using log file of %s, use Wine debug logging instead\n",
00168             debugstr_a(pszLogFilePath));
00169 
00170     IIMAPCallback_AddRef(pCallback);
00171     This->InetTransport.pCallback = (ITransportCallback *)pCallback;
00172     This->InetTransport.fInitialised = TRUE;
00173 
00174     return S_OK;
00175 }
00176 
00177 static HRESULT WINAPI IMAPTransport_NewIRangeList(IIMAPTransport *iface,
00178     IRangeList **pprlNewRangeList)
00179 {
00180     FIXME("(%p): stub\n", pprlNewRangeList);
00181     return E_NOTIMPL;
00182 }
00183 
00184 static HRESULT WINAPI IMAPTransport_Capability(IIMAPTransport *iface,
00185     DWORD *pdwCapabilityFlags)
00186 {
00187     FIXME("(%p): stub\n", pdwCapabilityFlags);
00188     return E_NOTIMPL;
00189 }
00190 
00191 static HRESULT WINAPI IMAPTransport_Select(IIMAPTransport *iface,
00192     WPARAM wParam, LPARAM lParam, IIMAPCallback *pCBHandler, LPSTR lpszMailboxName)
00193 {
00194     FIXME("(%ld, %ld, %p, %s): stub\n", wParam, lParam, pCBHandler, debugstr_a(lpszMailboxName));
00195     return E_NOTIMPL;
00196 }
00197 
00198 static HRESULT WINAPI IMAPTransport_Examine(IIMAPTransport *iface,
00199     WPARAM wParam, LPARAM lParam, IIMAPCallback *pCBHandler, LPSTR lpszMailboxName)
00200 {
00201     FIXME("(%ld, %ld, %p, %s): stub\n", wParam, lParam, pCBHandler, debugstr_a(lpszMailboxName));
00202     return E_NOTIMPL;
00203 }
00204 
00205 static HRESULT WINAPI IMAPTransport_Create(IIMAPTransport *iface,
00206     WPARAM wParam, LPARAM lParam, IIMAPCallback *pCBHandler, LPSTR lpszMailboxName)
00207 {
00208     FIXME("(%ld, %ld, %p, %s): stub\n", wParam, lParam, pCBHandler, debugstr_a(lpszMailboxName));
00209     return E_NOTIMPL;
00210 }
00211 
00212 static HRESULT WINAPI IMAPTransport_Delete(IIMAPTransport *iface,
00213     WPARAM wParam, LPARAM lParam, IIMAPCallback *pCBHandler, LPSTR lpszMailboxName)
00214 {
00215     FIXME("(%ld, %ld, %p, %s): stub\n", wParam, lParam, pCBHandler, debugstr_a(lpszMailboxName));
00216     return E_NOTIMPL;
00217 }
00218 
00219 static HRESULT WINAPI IMAPTransport_Rename(IIMAPTransport *iface, WPARAM wParam, LPARAM lParam,
00220     IIMAPCallback *pCBHandler, LPSTR lpszMailboxName, LPSTR lpszNewMailboxName)
00221 {
00222     FIXME("(%ld, %ld, %p, %s, %s): stub\n", wParam, lParam, pCBHandler,
00223           debugstr_a(lpszMailboxName), debugstr_a(lpszNewMailboxName));
00224     return E_NOTIMPL;
00225 }
00226 
00227 static HRESULT WINAPI IMAPTransport_Subscribe(IIMAPTransport *iface,
00228     WPARAM wParam, LPARAM lParam, IIMAPCallback *pCBHandler, LPSTR lpszMailboxName)
00229 {
00230     FIXME("(%ld, %ld, %p, %s): stub\n", wParam, lParam, pCBHandler, debugstr_a(lpszMailboxName));
00231     return E_NOTIMPL;
00232 }
00233 
00234 static HRESULT WINAPI IMAPTransport_Unsubscribe(IIMAPTransport *iface,
00235     WPARAM wParam, LPARAM lParam, IIMAPCallback *pCBHandler, LPSTR lpszMailboxName)
00236 {
00237     FIXME("(%ld, %ld, %p, %s): stub\n", wParam, lParam, pCBHandler, debugstr_a(lpszMailboxName));
00238     return E_NOTIMPL;
00239 }
00240 
00241 static HRESULT WINAPI IMAPTransport_List(IIMAPTransport *iface, WPARAM wParam, LPARAM lParam,
00242     IIMAPCallback *pCBHandler, LPSTR lpszMailboxNameReference, LPSTR lpszMailboxNamePattern)
00243 {
00244     FIXME("(%ld, %ld, %p, %s, %s): stub\n", wParam, lParam, pCBHandler,
00245           debugstr_a(lpszMailboxNameReference), debugstr_a(lpszMailboxNamePattern));
00246     return E_NOTIMPL;
00247 }
00248 
00249 static HRESULT WINAPI IMAPTransport_Lsub(IIMAPTransport *iface, WPARAM wParam, LPARAM lParam,
00250     IIMAPCallback *pCBHandler, LPSTR lpszMailboxNameReference, LPSTR lpszMailboxNamePattern)
00251 {
00252     FIXME("(%ld, %ld, %p, %s, %s): stub\n", wParam, lParam, pCBHandler,
00253           debugstr_a(lpszMailboxNameReference), debugstr_a(lpszMailboxNamePattern));
00254     return E_NOTIMPL;
00255 }
00256 
00257 static HRESULT WINAPI IMAPTransport_Append(IIMAPTransport *iface,
00258     WPARAM wParam, LPARAM lParam, IIMAPCallback *pCBHandler, LPSTR lpszMailboxName,
00259     LPSTR lpszMessageFlags, FILETIME ftMessageDateTime, LPSTREAM lpstmMessageToSave)
00260 {
00261     FIXME("(%ld, %ld, %p, %s, %s, %p): stub\n", wParam, lParam, pCBHandler,
00262           debugstr_a(lpszMailboxName), debugstr_a(lpszMessageFlags), lpstmMessageToSave);
00263     return E_NOTIMPL;
00264 }
00265 
00266 static HRESULT WINAPI IMAPTransport_Close(IIMAPTransport *iface,
00267     WPARAM wParam, LPARAM lParam, IIMAPCallback *pCBHandler)
00268 {
00269     FIXME("(%ld, %ld, %p): stub\n", wParam, lParam, pCBHandler);
00270     return E_NOTIMPL;
00271 }
00272 
00273 static HRESULT WINAPI IMAPTransport_Expunge(IIMAPTransport *iface,
00274     WPARAM wParam, LPARAM lParam, IIMAPCallback *pCBHandler)
00275 {
00276     FIXME("(%ld, %ld, %p): stub\n", wParam, lParam, pCBHandler);
00277     return E_NOTIMPL;
00278 }
00279 
00280 static HRESULT WINAPI IMAPTransport_Search(IIMAPTransport *iface,
00281     WPARAM wParam, LPARAM lParam, IIMAPCallback *pCBHandler, LPSTR lpszSearchCriteria,
00282     boolean bReturnUIDs, IRangeList *pMsgRange, boolean bUIDRangeList)
00283 {
00284     FIXME("(%ld, %ld, %p, %s, %d, %p, %d): stub\n", wParam, lParam, pCBHandler,
00285           debugstr_a(lpszSearchCriteria), bReturnUIDs, pMsgRange, bUIDRangeList);
00286     return E_NOTIMPL;
00287 }
00288 
00289 static HRESULT WINAPI IMAPTransport_Fetch(IIMAPTransport *iface, WPARAM wParam, LPARAM lParam,
00290     IIMAPCallback *pCBHandler, IRangeList *pMsgRange, boolean bUIDMsgRange, LPSTR lpszFetchArgs)
00291 {
00292     FIXME("(%ld, %ld, %p, %p, %d, %s): stub\n", wParam, lParam, pCBHandler, pMsgRange,
00293           bUIDMsgRange, debugstr_a(lpszFetchArgs));
00294     return E_NOTIMPL;
00295 }
00296 
00297 static HRESULT WINAPI IMAPTransport_Store(IIMAPTransport *iface, WPARAM wParam, LPARAM lParam,
00298     IIMAPCallback *pCBHandler, IRangeList *pMsgRange, boolean bUIDRangeList, LPSTR lpszStoreArgs)
00299 {
00300     FIXME("(%ld, %ld, %p, %p, %d, %s): stub\n", wParam, lParam, pCBHandler, pMsgRange,
00301           bUIDRangeList, debugstr_a(lpszStoreArgs));
00302     return E_NOTIMPL;
00303 }
00304 
00305 static HRESULT WINAPI IMAPTransport_Copy(IIMAPTransport *iface, WPARAM wParam, LPARAM lParam,
00306     IIMAPCallback *pCBHandler, IRangeList *pMsgRange, boolean bUIDRangeList, LPSTR lpszMailboxName)
00307 {
00308     FIXME("(%ld, %ld, %p, %p, %d, %s): stub\n", wParam, lParam, pCBHandler, pMsgRange,
00309           bUIDRangeList, debugstr_a(lpszMailboxName));
00310     return E_NOTIMPL;
00311 }
00312 
00313 static HRESULT WINAPI IMAPTransport_Noop(IIMAPTransport *iface,
00314     WPARAM wParam, LPARAM lParam, IIMAPCallback *pCBHandler)
00315 {
00316     FIXME("(%ld, %ld, %p): stub\n", wParam, lParam, pCBHandler);
00317     return E_NOTIMPL;
00318 }
00319 
00320 static HRESULT WINAPI IMAPTransport_ResizeMsgSeqNumTable(IIMAPTransport *iface, DWORD dwSizeOfMbox)
00321 {
00322     FIXME("(%u): stub\n", dwSizeOfMbox);
00323     return E_NOTIMPL;
00324 }
00325 
00326 static HRESULT WINAPI IMAPTransport_UpdateSeqNumToUID(IIMAPTransport *iface,
00327     DWORD dwMsgSeqNum, DWORD dwUID)
00328 {
00329     FIXME("(%u, %u): stub\n", dwMsgSeqNum, dwUID);
00330     return E_NOTIMPL;
00331 }
00332 
00333 static HRESULT WINAPI IMAPTransport_RemoveSequenceNum(IIMAPTransport *iface, DWORD dwDeletedMsgSeqNum)
00334 {
00335     FIXME("(%u): stub\n", dwDeletedMsgSeqNum);
00336     return E_NOTIMPL;
00337 }
00338 
00339 static HRESULT WINAPI IMAPTransport_MsgSeqNumToUID(IIMAPTransport *iface, DWORD dwMsgSeqNum,
00340     DWORD *pdwUID)
00341 {
00342     FIXME("(%u, %p): stub\n", dwMsgSeqNum, pdwUID);
00343     return E_NOTIMPL;
00344 }
00345 
00346 static HRESULT WINAPI IMAPTransport_GetMsgSeqNumToUIDArray(IIMAPTransport *iface,
00347     DWORD **ppdwMsgSeqNumToUIDArray, DWORD *pdwNumberOfElements)
00348 {
00349     FIXME("(%p, %p): stub\n", ppdwMsgSeqNumToUIDArray, pdwNumberOfElements);
00350     return E_NOTIMPL;
00351 }
00352 
00353 static HRESULT WINAPI IMAPTransport_GetHighestMsgSeqNum(IIMAPTransport *iface, DWORD *pdwHighestMSN)
00354 {
00355     FIXME("(%p): stub\n", pdwHighestMSN);
00356     return E_NOTIMPL;
00357 }
00358 
00359 static HRESULT WINAPI IMAPTransport_ResetMsgSeqNumToUID(IIMAPTransport *iface)
00360 {
00361     FIXME("(): stub\n");
00362     return E_NOTIMPL;
00363 }
00364 
00365 static HRESULT WINAPI IMAPTransport_SetDefaultCBHandler(IIMAPTransport *iface, IIMAPCallback *pCBHandler)
00366 {
00367     FIXME("(%p): stub\n", pCBHandler);
00368     return E_NOTIMPL;
00369 }
00370 
00371 static HRESULT WINAPI IMAPTransport_Status(IIMAPTransport *iface, WPARAM wParam, LPARAM lParam,
00372     IIMAPCallback *pCBHandler, LPSTR pszMailboxName, LPSTR pszStatusCmdArgs)
00373 {
00374     FIXME("(%ld, %ld, %p, %s, %s): stub\n", wParam, lParam, pCBHandler,
00375           debugstr_a(pszMailboxName), debugstr_a(pszStatusCmdArgs));
00376     return E_NOTIMPL;
00377 }
00378 
00379 static const IIMAPTransportVtbl IMAPTransportVtbl =
00380 {
00381     IMAPTransport_QueryInterface,
00382     IMAPTransport_AddRef,
00383     IMAPTransport_Release,
00384     IMAPTransport_GetServerInfo,
00385     IMAPTransport_GetIXPType,
00386     IMAPTransport_IsState,
00387     IMAPTransport_InetServerFromAccount,
00388     IMAPTransport_Connect,
00389     IMAPTransport_HandsOffCallback,
00390     IMAPTransport_Disconnect,
00391     IMAPTransport_DropConnection,
00392     IMAPTransport_GetStatus,
00393     IMAPTransport_InitNew,
00394     IMAPTransport_NewIRangeList,
00395     IMAPTransport_Capability,
00396     IMAPTransport_Select,
00397     IMAPTransport_Examine,
00398     IMAPTransport_Create,
00399     IMAPTransport_Delete,
00400     IMAPTransport_Rename,
00401     IMAPTransport_Subscribe,
00402     IMAPTransport_Unsubscribe,
00403     IMAPTransport_List,
00404     IMAPTransport_Lsub,
00405     IMAPTransport_Append,
00406     IMAPTransport_Close,
00407     IMAPTransport_Expunge,
00408     IMAPTransport_Search,
00409     IMAPTransport_Fetch,
00410     IMAPTransport_Store,
00411     IMAPTransport_Copy,
00412     IMAPTransport_Noop,
00413     IMAPTransport_ResizeMsgSeqNumTable,
00414     IMAPTransport_UpdateSeqNumToUID,
00415     IMAPTransport_RemoveSequenceNum,
00416     IMAPTransport_MsgSeqNumToUID,
00417     IMAPTransport_GetMsgSeqNumToUIDArray,
00418     IMAPTransport_GetHighestMsgSeqNum,
00419     IMAPTransport_ResetMsgSeqNumToUID,
00420     IMAPTransport_SetDefaultCBHandler,
00421     IMAPTransport_Status
00422 };
00423 
00424 HRESULT WINAPI CreateIMAPTransport(IIMAPTransport **ppTransport)
00425 {
00426     HRESULT hr;
00427     IMAPTransport *This = HeapAlloc(GetProcessHeap(), 0, sizeof(*This));
00428     if (!This)
00429         return E_OUTOFMEMORY;
00430 
00431     This->InetTransport.u.vtblIMAP = &IMAPTransportVtbl;
00432     This->refs = 0;
00433     hr = InternetTransport_Init(&This->InetTransport);
00434     if (FAILED(hr))
00435     {
00436         HeapFree(GetProcessHeap(), 0, This);
00437         return hr;
00438     }
00439 
00440     *ppTransport = (IIMAPTransport *)&This->InetTransport.u.vtblIMAP;
00441     IIMAPTransport_AddRef(*ppTransport);
00442 
00443     return S_OK;
00444 }
00445 
00446 static HRESULT WINAPI IMAPTransportCF_QueryInterface(LPCLASSFACTORY iface,
00447     REFIID riid, LPVOID *ppv)
00448 {
00449     *ppv = NULL;
00450     if (IsEqualIID(riid, &IID_IUnknown) || IsEqualIID(riid, &IID_IClassFactory))
00451     {
00452         *ppv = iface;
00453         IUnknown_AddRef(iface);
00454         return S_OK;
00455     }
00456     return E_NOINTERFACE;
00457 }
00458 
00459 static ULONG WINAPI IMAPTransportCF_AddRef(LPCLASSFACTORY iface)
00460 {
00461     return 2; /* non-heap based object */
00462 }
00463 
00464 static ULONG WINAPI IMAPTransportCF_Release(LPCLASSFACTORY iface)
00465 {
00466     return 1; /* non-heap based object */
00467 }
00468 
00469 static HRESULT WINAPI IMAPTransportCF_CreateInstance(LPCLASSFACTORY iface,
00470     LPUNKNOWN pUnk, REFIID riid, LPVOID *ppv)
00471 {
00472     HRESULT hr;
00473     IIMAPTransport *pImapTransport;
00474 
00475     TRACE("(%p, %s, %p)\n", pUnk, debugstr_guid(riid), ppv);
00476 
00477     *ppv = NULL;
00478 
00479     if (pUnk)
00480         return CLASS_E_NOAGGREGATION;
00481 
00482     hr = CreateIMAPTransport(&pImapTransport);
00483     if (FAILED(hr))
00484         return hr;
00485 
00486     hr = IIMAPTransport_QueryInterface(pImapTransport, riid, ppv);
00487     IIMAPTransport_Release(pImapTransport);
00488 
00489     return hr;
00490 }
00491 
00492 static HRESULT WINAPI IMAPTransportCF_LockServer(LPCLASSFACTORY iface, BOOL fLock)
00493 {
00494     FIXME("(%d), stub!\n",fLock);
00495     return S_OK;
00496 }
00497 
00498 static const IClassFactoryVtbl IMAPTransportCFVtbl =
00499 {
00500     IMAPTransportCF_QueryInterface,
00501     IMAPTransportCF_AddRef,
00502     IMAPTransportCF_Release,
00503     IMAPTransportCF_CreateInstance,
00504     IMAPTransportCF_LockServer
00505 };
00506 static const IClassFactoryVtbl *IMAPTransportCF = &IMAPTransportCFVtbl;
00507 
00508 HRESULT IMAPTransportCF_Create(REFIID riid, LPVOID *ppv)
00509 {
00510     return IClassFactory_QueryInterface((IClassFactory *)&IMAPTransportCF, riid, ppv);
00511 }

Generated on Sun May 27 2012 04:24:04 for ReactOS by doxygen 1.7.6.1

ReactOS is a registered trademark or a trademark of ReactOS Foundation in the United States and other countries.