windows-nt/Source/XPSP1/NT/enduser/netmeeting/ulsldap/localapp.h
2020-09-26 16:20:57 +08:00

135 lines
4.8 KiB
C++

//****************************************************************************
//
// Module: ULS.DLL
// File: localapp.h
// Content: This file contains the LocalApplication object definition.
// History:
// Wed 17-Apr-1996 11:18:47 -by- Viroon Touranachun [viroont]
//
// Copyright (c) Microsoft Corporation 1996-1997
//
//****************************************************************************
#ifndef _CLOCALAPP_H_
#define _CLOCALAPP_H_
#include "connpt.h"
//****************************************************************************
// Enumeration type
//****************************************************************************
//
typedef enum {
ULS_APP_SET_ATTRIBUTES,
ULS_APP_REMOVE_ATTRIBUTES,
} APP_CHANGE_ATTRS;
typedef enum {
ULS_APP_ADD_PROT,
ULS_APP_REMOVE_PROT,
} APP_CHANGE_PROT;
//****************************************************************************
// CUls definition
//****************************************************************************
//
class CLocalApp : public IULSLocalApplication,
public IConnectionPointContainer
{
private:
ULONG cRef;
LPTSTR szName;
GUID guid;
LPTSTR szMimeType;
CAttributes *pAttrs;
CList ProtList;
CConnectionPoint *pConnPt;
// Private methods
STDMETHODIMP NotifySink (void *pv, CONN_NOTIFYPROC pfn);
STDMETHODIMP ChangeAttributes (IULSAttributes *pAttributes,
ULONG *puReqID,
APP_CHANGE_ATTRS uCmd);
STDMETHODIMP ChangeProtocol (IULSLocalAppProtocol *pAttributes,
ULONG *puReqID,
APP_CHANGE_PROT uCmd);
public:
// Constructor and destructor
CLocalApp (void);
~CLocalApp (void);
STDMETHODIMP Init (BSTR bstrName, REFGUID rguid, BSTR bstrMimeType);
// Internal methods
STDMETHODIMP GetAppInfo (PLDAP_APPINFO *ppAppInfo);
// Asynchronous response handler
//
STDMETHODIMP AttributesChangeResult (CAttributes *pAttributes,
ULONG uReqID, HRESULT hResult,
APP_CHANGE_ATTRS uCmd);
STDMETHODIMP ProtocolChangeResult (CLocalProt *pProtocol,
ULONG uReqID, HRESULT hResult,
APP_CHANGE_PROT uCmd);
// IUnknown
STDMETHODIMP QueryInterface (REFIID iid, void **ppv);
STDMETHODIMP_(ULONG) AddRef (void);
STDMETHODIMP_(ULONG) Release (void);
// IULSLocalApplication
STDMETHODIMP CreateProtocol (BSTR bstrProtocolID, ULONG uPortNumber,
BSTR bstrMimeType,
IULSLocalAppProtocol **ppProtocol);
STDMETHODIMP AddProtocol (IULSLocalAppProtocol *pProtocol,
ULONG *puReqID);
STDMETHODIMP RemoveProtocol (IULSLocalAppProtocol *pProtocol,
ULONG *puReqID);
STDMETHODIMP EnumProtocols (IEnumULSLocalAppProtocols **ppEnumProtocol);
STDMETHODIMP SetAttributes (IULSAttributes *pAttributes,
ULONG *puReqID);
STDMETHODIMP RemoveAttributes (IULSAttributes *pAttributes,
ULONG *puReqID);
// IConnectionPointContainer
STDMETHODIMP EnumConnectionPoints(IEnumConnectionPoints **ppEnum);
STDMETHODIMP FindConnectionPoint(REFIID riid,
IConnectionPoint **ppcp);
#ifdef DEBUG
void DebugProtocolDump(void);
#endif // DEBUG
};
//****************************************************************************
// CEnumLocalAppProtocols definition
//****************************************************************************
//
class CEnumLocalAppProtocols : public IEnumULSLocalAppProtocols
{
private:
ULONG cRef;
CList ProtList;
HANDLE hEnum;
public:
// Constructor and Initialization
CEnumLocalAppProtocols (void);
~CEnumLocalAppProtocols (void);
STDMETHODIMP Init (CList *pProtList);
// IUnknown
STDMETHODIMP QueryInterface (REFIID iid, void **ppv);
STDMETHODIMP_(ULONG) AddRef (void);
STDMETHODIMP_(ULONG) Release (void);
// IEnumULSLocalAppProtocols
STDMETHODIMP Next(ULONG cProtocols, IULSLocalAppProtocol **rgpProt,
ULONG *pcFetched);
STDMETHODIMP Skip(ULONG cProtocols);
STDMETHODIMP Reset();
STDMETHODIMP Clone(IEnumULSLocalAppProtocols **ppEnum);
};
#endif //_CLOCALAPP_H_