270 lines
7.5 KiB
Plaintext
270 lines
7.5 KiB
Plaintext
|
//
|
||
|
// 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;
|
||
|
};
|
||
|
};
|