XPSTATUS.H

/* 
- X P S T A T U S . H
-
* Purpose:
* Definitions, typedefs and prototypes used by the Sample Transport
* Provider status interface.
*
* Copyright 1992-1995 Microsoft Corporation. All Rights Reserved.
*/

/* Local (not exported) functions */

/* Called at TransportLogon() time to register the Status
Table row for this transport session. */

HRESULT HrBuildTransportStatus (LPXPL lpSession, ULONG ulFlags);

/* Called at various times (send, receive, notify) to cause
the PR_STATUS_CODE property in the Status Table to be
updated with a new value. */

HRESULT HrUpdateTransportStatus (LPXPL lpSession, ULONG ulFlags);

/* Status Object method prototypes */

#undef INTERFACE
#define INTERFACE struct _SOB

#undef MAPIMETHOD_
#define MAPIMETHOD_(type, method) MAPIMETHOD_DECLARE(type, method, SOB_)
MAPI_IUNKNOWN_METHODS(IMPL)
MAPI_IMAPIPROP_METHODS(IMPL)
MAPI_IMAPISTATUS_METHODS(IMPL)
#undef MAPIMETHOD_
#define MAPIMETHOD_(type, method) MAPIMETHOD_TYPEDEF(type, method, SOB_)
MAPI_IUNKNOWN_METHODS(IMPL)
MAPI_IMAPIPROP_METHODS(IMPL)
MAPI_IMAPISTATUS_METHODS(IMPL)
#undef MAPIMETHOD_
#define MAPIMETHOD_(type, method) STDMETHOD_(type, method)

DECLARE_MAPI_INTERFACE(SOB_)
{
MAPI_IUNKNOWN_METHODS(IMPL)
MAPI_IMAPIPROP_METHODS(IMPL)
MAPI_IMAPISTATUS_METHODS(IMPL)
};

/* Actual status object memory structure */

typedef struct _SOB
{
SOB_Vtbl FAR * lpVtbl; /* Call Table */
LONG lcInit; /* Usage Count */
struct _SOB * lpsobMyAddress; /* Pointer to myself, used to validate */
HRESULT hrLastError; /* Saved last error */
ULONG ulOpenFlags; /* Flags used to open the object */
LPXPL lpxpl; /* XP Session associated with object */
LPALLOCATEBUFFER AllocateBuffer; /* MAPIAllocateBuffer func pointer */
LPALLOCATEMORE AllocateMore; /* MAPIAllocateMore func pointer */
LPFREEBUFFER FreeBuffer; /* MAPIFreeBuffer func pointer */
LPMAPISUP lpMAPISup; /* Support object. So we can release it */
} SOB, *LPSOB;

STDMETHODIMP SOB_Reserved (LPSOB lpSOB); /* All MAPI_E_NO_SUPPORT */
STDMETHODIMP SOB_AccessDenied(LPSOB); /* All MAPI_NO_ACCESS */