|
|
// // Copyright (c) Microsoft Corporation. All rights reserved.
cpp_quote("/* Copyright (c) Microsoft Corporation. All rights reserved.*/")
// mdhcp.idl : IDL source for mdhcp.dll //
// This file will be processed by the MIDL tool to // produce the type library (mdhcp.tlb) and marshalling code.
import "oaidl.idl"; import "ocidl.idl"; import "tapi3if.idl";
/////////////////////////////////////////////////////////////////
// // This interface wraps the MCAST_SCOPE_INFO structure // // it is read only, and only obtained from // enumeratescopes methods in the // IMcastAddressAllocation interface. //
[ object, uuid(DF0DAEF4-A289-11D1-8697-006008B0E5D2), dual, helpstring("IMcastScope Interface"), pointer_default(unique) ]
interface IMcastScope : IDispatch { [propget, id(1), helpstring("Get the scope ID for this scope.")] HRESULT ScopeID( [out, retval] long *pID );
[propget, id(2), helpstring("Get the server ID for this scope.")] HRESULT ServerID( [out, retval] long *pID );
[propget, id(3), helpstring("Get the interface ID for this scope.")] HRESULT InterfaceID( [out, retval] long *pID );
[propget, id(4), helpstring("Get a textual description of this scope.")] HRESULT ScopeDescription( [out, retval] BSTR *ppDescription );
[propget, id(5), helpstring("Get the TTL for leases in this scope.")] HRESULT TTL( [out, retval] long *pTTL ); }
// // this interface wraps the MCAST_LEASE_REQUEST and/or MCAST_LEASE_RESPONSE // structures // // It's read-write. Most properties can only be // set from the client when the object // is created, except the start and stop times, which can be // set later for convenience when doing renewals. //
[ object, uuid(DF0DAEFD-A289-11D1-8697-006008B0E5D2), dual, helpstring("IMcastLeaseInfo Interface"), pointer_default(unique) ]
interface IMcastLeaseInfo : IDispatch { [propget, id(1), helpstring("Get the request ID")] HRESULT RequestID( [out, retval ] BSTR * ppRequestID );
[propget, id(2), helpstring("The start time of the lease.")] HRESULT LeaseStartTime( [out, retval] DATE *pTime );
[propput, id(2), helpstring("The start time of the lease.")] HRESULT LeaseStartTime( [in] DATE time );
[propget, id(3), helpstring("The stop time of the lease.")] HRESULT LeaseStopTime( [out, retval] DATE *pTime );
[propput, id(3), helpstring("The stop time of the lease.")] HRESULT LeaseStopTime( [in] DATE time );
[propget, id(4), helpstring("The number of addresses of the lease.")] HRESULT AddressCount( [out, retval] long *pCount );
[propget, id(5), helpstring("The ip address of server where the lease was requested/renewed.")] HRESULT ServerAddress( [out, retval] BSTR *ppAddress );
[propget, id(6), helpstring("The TTL of this lease assignment.")] HRESULT TTL( [out, retval] long *pTTL );
// // collection (used in vb) for enumeration of addresses // [propget, id(7), helpstring("Get a collection of the addresses for this lease.")] HRESULT Addresses( [out, retval] VARIANT * pVariant );
// // c method to enumerate addresses // [id(8), hidden, helpstring("Get an enumeration of the addresses for this lease.")] HRESULT EnumerateAddresses( [out, retval] IEnumBstr ** ppEnumAddresses ); }
// Obtained using IMcastAddressAllocation::EnumerateScopes
[ object, uuid(DF0DAF09-A289-11D1-8697-006008B0E5D2), hidden, helpstring("IEnumMcastScope Interface"), pointer_default(unique) ]
interface IEnumMcastScope : IUnknown { HRESULT Next( [in] ULONG celt, [out] IMcastScope ** ppScopes, [in,out,ptr] ULONG * pceltFetched );
HRESULT Reset( void );
HRESULT Skip ( [in] ULONG celt );
HRESULT Clone ( [out, retval] IEnumMcastScope ** ppEnum ); }
// // this interface encapsulates the 4 // multicast address allocation functions //
[ object, uuid(DF0DAEF1-A289-11D1-8697-006008B0E5D2), dual, helpstring("IMcastAddressAllocation Interface"), pointer_default(unique) ]
interface IMcastAddressAllocation : IDispatch { // This function is for VB and other scripting languages. // It returns a variant, which is a collection of IMcastScope pointers. [propget, id(1), helpstring("Get a collection of available scopes.")] HRESULT Scopes( [out, retval] VARIANT * pVariant );
// This function is the same as the first one, but it is for C/C++. [id(2), hidden, helpstring("Get an enumeration of available scopes.")] HRESULT EnumerateScopes( [out] IEnumMcastScope ** ppEnumMcastScope );
[id(3), helpstring("Request a lease for one or more multicast addresses.")] HRESULT RequestAddress( [in] IMcastScope * pScope, // from the scope enum [in] DATE LeaseStartTime, // desired begin time [in] DATE LeaseStopTime, // desired end time [in] long NumAddresses, // how many addresses we want [out, retval] IMcastLeaseInfo ** ppLeaseResponse // returned on success. // contains parameters of what // was actually granted );
[id(4), helpstring("Renew a lease.")] HRESULT RenewAddress( [in] long lReserved, // unused [in] IMcastLeaseInfo * pRenewRequest, [out, retval] IMcastLeaseInfo ** ppRenewResponse );
[id(5), helpstring("Release (unreserve) a lease.")] HRESULT ReleaseAddress( [in] IMcastLeaseInfo * pReleaseRequest );
[id(6), hidden, helpstring("Create a lease info object -- C++ version.")] HRESULT CreateLeaseInfo( [in] DATE LeaseStartTime, [in] DATE LeaseStopTime, [in] DWORD dwNumAddresses, [in] LPWSTR * ppAddresses, [in] LPWSTR pRequestID, [in] LPWSTR pServerAddress, [out, retval] IMcastLeaseInfo ** ppReleaseRequest );
[id(7), helpstring("Create a lease info object -- Automation version.")] HRESULT CreateLeaseInfoFromVariant( [in] DATE LeaseStartTime, [in] DATE LeaseStopTime, [in] VARIANT vAddresses, [in] BSTR pRequestID, [in] BSTR pServerAddress, [out, retval] IMcastLeaseInfo ** ppReleaseRequest ); }
// The type library.
[ uuid(64217CC0-A285-11D1-8697-006008B0E5D2), version(1.0), helpstring("Microsoft Multicast Address Allocation Client COM Wrapper 1.0 Type Library") ]
library McastLib { importlib("stdole2.tlb");
interface IMcastScope; interface IEnumBstr; interface IMcastLeaseInfo; interface IEnumMcastScope; interface IMcastAddressAllocation;
[ uuid(DF0DAEF2-A289-11D1-8697-006008B0E5D2), helpstring("Multicast Address Allocation Class") ] coclass McastAddressAllocation { [default] interface IMcastAddressAllocation; }; };
|