/* Copyright (c) 1998-1999 Microsoft Corporation Module Name: CMDhcp.h Abstract: Definition of the CMDhcp class Author: */ #ifndef _MDHCP_COM_WRAPPER_CMDHCP_H_ #define _MDHCP_COM_WRAPPER_CMDHCP_H_ #include "resource.h" // for IDR_MDhcp #include "scope.h" // for scope delarations #include "objsf.h" ///////////////////////////////////////////////////////////////////////////// // CMDhcp class CMDhcp : public CComDualImpl, public CComObjectRoot, public CComCoClass, public CMdhcpObjectSafety { public: CMDhcp() : m_dwSafety (0), m_pFTM (NULL), m_fApiIsInitialized(FALSE) {} void FinalRelease(void); HRESULT FinalConstruct(void); BEGIN_COM_MAP(CMDhcp) COM_INTERFACE_ENTRY(IDispatch) COM_INTERFACE_ENTRY(IMcastAddressAllocation) COM_INTERFACE_ENTRY(IObjectSafety) COM_INTERFACE_ENTRY(IObjectWithSite) COM_INTERFACE_ENTRY_AGGREGATE(IID_IMarshal, m_pFTM) END_COM_MAP() DECLARE_REGISTRY_RESOURCEID(IDR_MDhcp) DECLARE_GET_CONTROLLING_UNKNOWN() public: // // IMcastAddressAllocation // STDMETHOD (get_Scopes) ( VARIANT * pVariant ); STDMETHOD (EnumerateScopes) ( IEnumMcastScope ** ppEnumMcastScope ); STDMETHOD (RequestAddress) ( IMcastScope * pScope, // from the scope enum DATE LeaseStartTime, DATE LeaseStopTime, long NumAddresses, IMcastLeaseInfo ** ppLeaseResponse // returned on success. ); STDMETHOD (RenewAddress) ( long lReserved, // unused IMcastLeaseInfo * pRenewRequest, IMcastLeaseInfo ** ppRenewResponse ); STDMETHOD (ReleaseAddress) ( IMcastLeaseInfo * pReleaseRequest ); STDMETHOD (CreateLeaseInfo) ( DATE LeaseStartTime, DATE LeaseStopTime, DWORD dwNumAddresses, LPWSTR * ppAddresses, LPWSTR pRequestID, LPWSTR pServerAddress, IMcastLeaseInfo ** ppReleaseRequest ); STDMETHOD (CreateLeaseInfoFromVariant) ( DATE LeaseStartTime, DATE LeaseStopTime, VARIANT vAddresses, BSTR pRequestID, BSTR pServerAddress, IMcastLeaseInfo ** ppReleaseRequest ); protected: // // Data // DWORD m_dwSafety; // object safety level IUnknown * m_pFTM; // ptr to free threaded marshaler BOOL m_fApiIsInitialized; // TRUE if api startup succeeded // // internal implementation // HRESULT CreateWrappers( DWORD dwScopeCount, // the number of scopes we were given MCAST_SCOPE_ENTRY * pScopeList, // array of scope structs IMcastScope *** pppWrappers, // here we will put an array of if ptrs BOOL fLocal // true = scopes are locally generated ); HRESULT GetScopeList( DWORD * pdwScopeCount, MCAST_SCOPE_ENTRY ** ppScopeList, BOOL * pfLocal ); HRESULT WrapMDhcpLeaseInfo( BOOL fGotTtl, long lTtl, BOOL fLocal, MCAST_LEASE_INFO * pLeaseInfo, MCAST_CLIENT_UID * pRequestID, IMcastLeaseInfo ** ppInterface ); // Request HRESULT PrepareArgumentsRequest( IMcastScope IN * pScope, DATE IN LeaseStartTime, DATE IN LeaseStopTime, long IN lNumAddresses, MCAST_CLIENT_UID OUT * pRequestIDStruct, MCAST_SCOPE_CTX OUT * pScopeCtxStruct, MCAST_LEASE_INFO OUT ** ppLeaseStruct, BOOL OUT * pfLocal, long OUT * plTtl ); // Release or Renew HRESULT PrepareArgumentsNonRequest( IMcastLeaseInfo IN * pLease, MCAST_CLIENT_UID OUT * pRequestIDStruct, MCAST_LEASE_INFO OUT ** ppLeaseStruct, BOOL OUT * pfLocal, BOOL OUT * pfGotTtl, long OUT * plTtl ); }; #endif // _MDHCP_COM_WRAPPER_CMDHCP_H_ // eof