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 */