windows-nt/Source/XPSP1/NT/net/published/idlole/mdhcp.idl
2020-09-26 16:20:57 +08:00

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;
};
};