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