fleshed out the connection point implementation, especially the enumerations part

This commit is contained in:
Eric J. Bowersox
2013-06-04 00:51:34 -06:00
parent a5aeeb2980
commit c728482744
14 changed files with 969 additions and 18 deletions

View File

@@ -46,10 +46,10 @@
typedef struct tagRAWHEAPDATA
{
UINT32 opaque[8];
UINT32 opaque[32]; /* opaque data, do not modify */
} RAWHEAPDATA, *PRAWHEAPDATA;
typedef void (*PFNRAWHEAPDATAFREE)(PRAWHEAPDATA prhd);
typedef void (*PFNRAWHEAPDATAFREE)(PRAWHEAPDATA prhd); /* function that optionally frees the heap data */
/*--------------------
* External functions

View File

@@ -51,8 +51,9 @@ typedef struct tagFIXEDCPDATA
PUNKNOWN punkOuter; /* outer unknown used for reference counts */
REFIID riidConnection; /* IID of outgoing interface for this connection point */
IUnknown **ppSlots; /* pointer to actual slots used for connection point storage */
INT32 ncpSize; /* number of connection points actually connected */
INT32 ncpCapacity; /* maximum number of connection points connectable */
UINT32 ncpSize; /* number of connection points actually connected */
UINT32 ncpCapacity; /* maximum number of connection points connectable */
IMalloc *pAllocator; /* pointer to allocator */
} FIXEDCPDATA, *PFIXEDCPDATA;
/*---------------------
@@ -64,6 +65,7 @@ CDECL_BEGIN
/* QueryInterface helpers */
extern HRESULT ObjHlpStandardQueryInterface_IConnectionPoint(IUnknown *pThis, REFIID riid, PPVOID ppvObject);
extern HRESULT ObjHlpStandardQueryInterface_IEnumConnections(IUnknown *pThis, REFIID riid, PPVOID ppvObject);
extern HRESULT ObjHlpStandardQueryInterface_IMalloc(IUnknown *pThis, REFIID riid, PPVOID ppvObject);
extern HRESULT ObjHlpStandardQueryInterface_ISequentialStream(IUnknown *pThis, REFIID riid, PPVOID ppvObject);
@@ -72,7 +74,7 @@ extern UINT32 ObjHlpStaticAddRefRelease(IUnknown *pThis);
/* Connection point helpers */
extern void ObjHlpFixedCpSetup(PFIXEDCPDATA pData, PUNKNOWN punkOuter, REFIID riidConnection,
IUnknown **ppSlots, INT32 nSlots);
IUnknown **ppSlots, UINT32 nSlots, IMalloc *pAllocator);
extern void ObjHlpFixedCpTeardown(PFIXEDCPDATA pData);
/* Other helpers */

View File

@@ -93,6 +93,10 @@
#define STG_S_CONSOLIDATIONFAILED SCODE_CAST(0x00030205) /* consolidation failed but commit OK */
#define STG_S_CANNOTCONSOLIDATE SCODE_CAST(0x00030206) /* cannot consolidate but commit OK */
/* Connection success codes */
#define CONNECT_S_FIRST SCODE_CAST(0x00040200) /* first connection success code */
#define CONNECT_S_LAST SCODE_CAST(0x0004020F) /* last connection success code */
/* Memory manager success codes */
#define MEMMGR_S_NONZEROED SCODE_CAST(0x06010001) /* returned memory is non-zeroed */
@@ -158,6 +162,15 @@
#define STG_E_CSSINVALIDREGION SCODE_CAST(0x8003030A) /* region identifier mismatch */
#define STG_E_NOMOREREGIONRESETS SCODE_CAST(0x8003030B) /* can't reset drive region anymore */
/* Connection error codes */
#define CONNECT_E_FIRST SCODE_CAST(0x80040200) /* first connection error code */
#define CONNECT_E_LAST SCODE_CAST(0x8004020F) /* last connection error code */
#define CONNECT_E_NOCONNECTION (CONNECT_E_FIRST+0) /* no connection found */
#define CONNECT_E_ADVISELIMIT (CONNECT_E_FIRST+1) /* limit for number of connections reached */
#define CONNECT_E_CANNOTCONNECT (CONNECT_E_FIRST+2) /* connection attempt failed */
#define CONNECT_E_OVERRIDDEN (CONNECT_E_FIRST+3) /* interface overridden, must use derived */
/* Memory manager error codes */
#define MEMMGR_E_NOPGTBL SCODE_CAST(0x86010001) /* no page tables available */
#define MEMMGR_E_BADTTBFLG SCODE_CAST(0x86010002) /* bad TTB flags encountered */