Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

265 lines
8.0 KiB

/*++
Copyright (c) 1996 Microsoft Corporation
Module Name:
connect.h
Abstract:
defines for event/sink interface for IIS MetaBase.
Author:
Michael W. Thomas 04-Oct-96
Revision History:
--*/
#if !defined(CONNECT_H)
#define CONNECT_H
#ifdef __cplusplus
// Types that should be in OLE2.H
#ifndef PPVOID
typedef LPVOID* PPVOID;
#endif
// Convenient macros.
#define RELEASE_INTERFACE(p)\
{\
IUnknown* pTmp = (IUnknown*)p;\
p = NULL;\
if (NULL != pTmp)\
pTmp->Release();\
}
// An enumeration giving symbol names for the connection
// points offered by the DllPaper component in this server.
enum
{
MD_CONNPOINT_WRITESINK_A = 0,
MD_CONNPOINT_WRITESINK_W
};
enum
{
// The maximum number of connection points offered by the DllPaper
// component in this STOSERVE server. The number of items in the
// connection point enumeration above.
MAX_CONNECTION_POINTS = 2,
// A constant for the number of connections to add to the allocation
// of the dynamic connection array.
ALLOC_CONNECTIONS = 256,
// The start value for the connection key (cookie) counter.
COOKIE_START_VALUE = 500
};
/*O+O+++O+++O+++O+++O+++O+++O+++O+++O+++O+++O+++O+++O+++O+++O+++O+++O+++O+++O
ObjectClass: COEnumConnectionPoints
Summary: COM object class for enumerating the Connection Points
offered by a connectable object.
Interfaces: IUnknown
Standard interface providing COM object features.
IEnumConnectionPoints
Interface for connection point enumeration.
Aggregation: COEnumConnectionPoints COM Objects are not aggregatable.
O---O---O---O---O---O---O---O---O---O---O---O---O---O---O---O---O---O---O-O*/
class COEnumConnectionPoints : public IEnumConnectionPoints
{
public:
// Main Object Constructor & Destructor.
COEnumConnectionPoints(IUnknown* pHostObj);
~COEnumConnectionPoints(void);
// A general method for initializing this newly created object.
// Creates any subordinate arrays, structures, or objects.
HRESULT Init(
ULONG cConnPts,
IConnectionPoint** paConnPts,
ULONG iEnumIndex);
// IUnknown methods. Main object, non-delegating.
STDMETHODIMP QueryInterface(REFIID, PPVOID);
STDMETHODIMP_(ULONG) AddRef(void);
STDMETHODIMP_(ULONG) Release(void);
// IEnumConnectionPoints methods.
STDMETHODIMP Next(ULONG, IConnectionPoint**, ULONG*);
STDMETHODIMP Skip(ULONG);
STDMETHODIMP Reset(void);
STDMETHODIMP Clone(IEnumConnectionPoints**);
private:
// Private data of COEnumConnectionPoints COM objects.
// Main Object reference count.
ULONG m_cRefs;
// IUnknown pointer to host COM object being enumerated.
IUnknown* m_pHostObj;
// Connection Point index variable.
ULONG m_iEnumIndex;
// Number of Connection Points being enumerated.
ULONG m_cConnPts;
// Allocated array of Connection Point interface pointers.
IConnectionPoint** m_paConnPts;
};
typedef COEnumConnectionPoints* PCOEnumConnectionPoints;
/*O+O+++O+++O+++O+++O+++O+++O+++O+++O+++O+++O+++O+++O+++O+++O+++O+++O+++O+++O
ObjectClass: COConnectionPoint
Summary: Connection Point COM object class. Implements a native
IConnectionPoint interface. The Advise, Unadvise, and
EnumConnections methods use the CThreaded OwnThis mechanism
to provide thread-safe mutually exclusive access to this
connection point object.
Interfaces: IUnknown
Standard interface providing COM object features.
IConnectionPoint
Interface for connection point features.
Aggregation: COConnectionPoint COM Objects are not aggregatable.
O---O---O---O---O---O---O---O---O---O---O---O---O---O---O---O---O---O---O-O*/
class COConnectionPoint : public IConnectionPoint
{
public:
// Main Object Constructor & Destructor.
COConnectionPoint(IUnknown* pHostObj);
~COConnectionPoint(void);
// A general method for initializing this newly created object.
// Creates any subordinate arrays, structures, or objects.
HRESULT Init(REFIID riid);
// IUnknown methods. Main object, non-delegating.
STDMETHODIMP QueryInterface(REFIID, PPVOID);
STDMETHODIMP_(ULONG) AddRef(void);
STDMETHODIMP_(ULONG) Release(void);
// IConnectionPoint methods.
STDMETHODIMP GetConnectionInterface(IID*);
STDMETHODIMP GetConnectionPointContainer(IConnectionPointContainer**);
STDMETHODIMP Advise(IUnknown*, DWORD*);
STDMETHODIMP Unadvise(DWORD);
STDMETHODIMP EnumConnections(IEnumConnections**);
// Helper functions
STDMETHODIMP InternalEnumSinks(
CONNECTDATA **prgConnections,
ULONG *pcConnections);
private:
// Private utility methods of COConnectionPoint.
HRESULT GetSlot(UINT* puiFreeSlot);
HRESULT FindSlot(DWORD dwCookie, UINT* puiSlot);
// Private data of COConnectionPoint COM objects.
// Main Object reference count.
ULONG m_cRefs;
// IUnknown pointer to host COM object offering this connection point.
IUnknown* m_pHostObj;
// The IID of the sink interface associated with this connection point.
IID m_iidSink;
// The current connection cookie (key) counter.
DWORD m_dwNextCookie;
// The current number of live sink connections to this connection point.
UINT m_cConnections;
// The current maximum index into the dynamic connection array.
UINT m_uiMaxIndex;
// The dynamic array of sink connections to this connection point.
CONNECTDATA* m_paConnections;
};
typedef COConnectionPoint* PCOConnectionPoint;
/*O+O+++O+++O+++O+++O+++O+++O+++O+++O+++O+++O+++O+++O+++O+++O+++O+++O+++O+++O
ObjectClass: COEnumConnections
Summary: COM object class for enumerating the connections of a
connection point of a connectable object.
Interfaces: IUnknown
Standard interface providing COM object features.
IEnumConnections
Interface for connection enumeration features.
Aggregation: COEnumConnections COM Objects are not aggregatable.
O---O---O---O---O---O---O---O---O---O---O---O---O---O---O---O---O---O---O-O*/
class COEnumConnections : public IEnumConnections
{
public:
// Main Object Constructor & Destructor.
COEnumConnections(IUnknown* pHostObj);
~COEnumConnections(void);
// A general method for initializing this newly created object.
// Creates any subordinate arrays, structures, or objects.
HRESULT Init(
ULONG cConnections,
CONNECTDATA* paConnections,
ULONG iEnumIndex);
// IUnknown methods. Main object, non-delegating.
STDMETHODIMP QueryInterface(REFIID, PPVOID);
STDMETHODIMP_(ULONG) AddRef(void);
STDMETHODIMP_(ULONG) Release(void);
// IEnumConnections methods.
STDMETHODIMP Next(ULONG, CONNECTDATA*, ULONG*);
STDMETHODIMP Skip(ULONG);
STDMETHODIMP Reset(void);
STDMETHODIMP Clone(IEnumConnections**);
private:
// Private data of COEnumConnections COM objects.
// Main Object reference count.
ULONG m_cRefs;
// IUnknown pointer to host connection point COM object being
// enumerated.
IUnknown* m_pHostObj;
// Connection index variable.
ULONG m_iEnumIndex;
// Number of Connections being enumerated.
ULONG m_cConnections;
// Allocated array of live Connections only.
CONNECTDATA* m_paConnections;
};
typedef COEnumConnections* PCOEnumConnections;
#endif // __cplusplus
#endif // CONNECT_H