MDhcp.Idl
上传用户:dzyhzl
上传日期:2019-04-29
资源大小:56270k
文件大小:8k
源码类别:

模拟服务器

开发平台:

C/C++

  1. //
  2. // Copyright (c) 1998-1999  Microsoft Corporation
  3. //
  4. cpp_quote("/* Copyright (c) 1998-1999  Microsoft Corporation  */")
  5. // mdhcp.idl : IDL source for mdhcp.dll
  6. //
  7. // This file will be processed by the MIDL tool to
  8. // produce the type library (mdhcp.tlb) and marshalling code.
  9. import "oaidl.idl";
  10. import "ocidl.idl";
  11. import "tapi3if.idl";
  12. /////////////////////////////////////////////////////////////////
  13. //
  14. // This interface wraps the MCAST_SCOPE_INFO structure
  15. //
  16. // it is read only, and only obtained from
  17. // enumeratescopes methods in the
  18. // IMcastAddressAllocation interface.
  19. //
  20. [
  21.     object,
  22.     uuid(DF0DAEF4-A289-11D1-8697-006008B0E5D2),
  23.     dual,
  24.     helpstring("IMcastScope Interface"),
  25.     pointer_default(unique)
  26. ]
  27. interface IMcastScope : IDispatch
  28. {
  29.     [propget, id(1), helpstring("Get the scope ID for this scope.")]
  30.     HRESULT ScopeID(
  31.         [out, retval] long *pID
  32.         );
  33.     [propget, id(2), helpstring("Get the server ID for this scope.")]
  34.     HRESULT ServerID(
  35.         [out, retval] long *pID
  36.         );
  37.     [propget, id(3), helpstring("Get the interface ID for this scope.")]
  38.     HRESULT InterfaceID(
  39.         [out, retval] long *pID
  40.         );
  41.     [propget, id(4), helpstring("Get a textual description of this scope.")]
  42.     HRESULT ScopeDescription(
  43.         [out, retval] BSTR *ppDescription
  44.         );
  45.     [propget, id(5), helpstring("Get the TTL for leases in this scope.")]
  46.     HRESULT TTL(
  47.         [out, retval] long *pTTL
  48.         );
  49. }
  50. //
  51. // this interface wraps the MCAST_LEASE_REQUEST and/or MCAST_LEASE_RESPONSE
  52. // structures
  53. //
  54. // It's read-write. Most properties can only be
  55. // set from the client when the object
  56. // is created, except the start and stop times, which can be
  57. // set later for convenience when doing renewals.
  58. //
  59. [
  60.     object,
  61.     uuid(DF0DAEFD-A289-11D1-8697-006008B0E5D2),
  62.     dual,
  63.     helpstring("IMcastLeaseInfo Interface"),
  64.     pointer_default(unique)
  65. ]
  66. interface IMcastLeaseInfo : IDispatch
  67. {
  68.     [propget, id(1), helpstring("Get the request ID")]
  69.     HRESULT RequestID(
  70.         [out, retval ] BSTR * ppRequestID
  71.         );
  72.     [propget, id(2), helpstring("The start time of the lease.")]
  73.     HRESULT LeaseStartTime(
  74.         [out, retval] DATE *pTime
  75.         );
  76.     [propput, id(2), helpstring("The start time of the lease.")]
  77.     HRESULT LeaseStartTime(
  78.         [in] DATE time
  79.         );
  80.     [propget, id(3), helpstring("The stop time of the lease.")]
  81.     HRESULT LeaseStopTime(
  82.         [out, retval] DATE *pTime
  83.         );
  84.     [propput, id(3), helpstring("The stop time of the lease.")]
  85.     HRESULT LeaseStopTime(
  86.         [in] DATE time
  87.         );
  88.     [propget, id(4), helpstring("The number of addresses of the lease.")]
  89.     HRESULT AddressCount(
  90.         [out, retval] long *pCount
  91.         );
  92.     [propget, id(5), helpstring("The ip address of server where the lease was requested/renewed.")]
  93.     HRESULT ServerAddress(
  94.         [out, retval] BSTR *ppAddress
  95.         );
  96.     [propget, id(6), helpstring("The TTL of this lease assignment.")]
  97.     HRESULT TTL(
  98.         [out, retval] long *pTTL
  99.         );
  100.     //
  101.     // collection (used in vb) for enumeration of addresses
  102.     //
  103.     [propget, id(7), helpstring("Get a collection of the addresses for this lease.")]
  104.     HRESULT Addresses(
  105.         [out, retval] VARIANT * pVariant
  106.         );
  107.     //
  108.     // c method to enumerate addresses
  109.     //
  110.     [id(8), hidden, helpstring("Get an enumeration of the addresses for this lease.")]
  111.     HRESULT EnumerateAddresses(
  112.         [out, retval] IEnumBstr ** ppEnumAddresses
  113.         );  
  114. }
  115. // Obtained using IMcastAddressAllocation::EnumerateScopes
  116. [
  117.     object,
  118.     uuid(DF0DAF09-A289-11D1-8697-006008B0E5D2),
  119.     hidden,
  120.     helpstring("IEnumMcastScope Interface"),
  121.     pointer_default(unique)
  122. ]
  123. interface IEnumMcastScope : IUnknown
  124. {
  125.     HRESULT Next(
  126.             [in] ULONG            celt,
  127.             [out] IMcastScope  ** ppScopes,
  128.             [in,out,ptr] ULONG  * pceltFetched
  129.             );
  130.     HRESULT Reset( void );
  131.     HRESULT Skip (
  132.             [in] ULONG celt
  133.             );
  134.     HRESULT Clone (
  135.             [out, retval] IEnumMcastScope ** ppEnum
  136.             );
  137. }
  138. //
  139. // this interface encapsulates the 4
  140. // multicast address allocation functions
  141. //
  142. [
  143.     object,
  144.     uuid(DF0DAEF1-A289-11D1-8697-006008B0E5D2),
  145.     dual,
  146.     helpstring("IMcastAddressAllocation Interface"),
  147.     pointer_default(unique)
  148. ]
  149. interface IMcastAddressAllocation : IDispatch
  150. {
  151.     // This function is for VB and other scripting languages. 
  152.     // It returns a variant, which is a collection of IMcastScope pointers.
  153.     [propget, id(1), helpstring("Get a collection of available scopes.")]
  154.     HRESULT Scopes(
  155.         [out, retval] VARIANT * pVariant
  156.         );
  157.     // This function is the same as the first one, but it is for C/C++.
  158.     [id(2), hidden, helpstring("Get an enumeration of available scopes.")]
  159.     HRESULT EnumerateScopes(
  160.         [out] IEnumMcastScope        ** ppEnumMcastScope
  161.         );
  162.     [id(3), helpstring("Request a lease for one or more multicast addresses.")]
  163.     HRESULT RequestAddress(
  164.         [in]          IMcastScope      * pScope,            // from the scope enum
  165.         [in]          DATE               LeaseStartTime,    // desired begin time
  166.         [in]          DATE               LeaseStopTime,     // desired end time
  167.         [in]          long               NumAddresses,      // how many addresses we want
  168.         [out, retval] IMcastLeaseInfo ** ppLeaseResponse    // returned on success.
  169.                                                             // contains parameters of what
  170.                                                             // was actually granted
  171.         );
  172.     [id(4), helpstring("Renew a lease.")]
  173.     HRESULT RenewAddress(
  174.         [in] long                        lReserved,         // unused
  175.         [in] IMcastLeaseInfo           * pRenewRequest,
  176.         [out, retval] IMcastLeaseInfo ** ppRenewResponse
  177.         );
  178.     [id(5), helpstring("Release (unreserve) a lease.")]
  179.     HRESULT ReleaseAddress(
  180.         [in] IMcastLeaseInfo           * pReleaseRequest
  181.         );
  182.     [id(6), hidden, helpstring("Create a lease info object -- C++ version.")]
  183.     HRESULT CreateLeaseInfo(
  184.         [in] DATE                        LeaseStartTime,
  185.         [in] DATE                        LeaseStopTime,
  186.         [in] DWORD                       dwNumAddresses,
  187.         [in] LPWSTR *                    ppAddresses,
  188.         [in] LPWSTR                      pRequestID,
  189.         [in] LPWSTR          pServerAddress,
  190.         [out, retval] IMcastLeaseInfo ** ppReleaseRequest
  191.         );
  192.     [id(7), helpstring("Create a lease info object -- Automation version.")]
  193.     HRESULT CreateLeaseInfoFromVariant(
  194.         [in] DATE                        LeaseStartTime,
  195.         [in] DATE                        LeaseStopTime,
  196.         [in] VARIANT                     vAddresses,
  197.         [in] BSTR                        pRequestID,
  198.         [in] BSTR          pServerAddress,
  199.         [out, retval] IMcastLeaseInfo ** ppReleaseRequest
  200.         );
  201. }
  202. // The type library.
  203. [
  204.     uuid(64217CC0-A285-11D1-8697-006008B0E5D2),
  205.     version(1.0),
  206.     helpstring("Microsoft Multicast Address Allocation Client COM Wrapper 1.0 Type Library")
  207. ]
  208. library McastLib
  209. {
  210.     importlib("stdole32.tlb");
  211.     importlib("stdole2.tlb");
  212.     interface IMcastScope;
  213.     interface IEnumBstr;
  214.     interface IMcastLeaseInfo;
  215.     interface IEnumMcastScope;
  216.     interface IMcastAddressAllocation;
  217.     [
  218.         uuid(DF0DAEF2-A289-11D1-8697-006008B0E5D2),
  219.         helpstring("Multicast Address Allocation Class")
  220.     ]
  221.     coclass McastAddressAllocation
  222.     {
  223.         [default] interface IMcastAddressAllocation;
  224.     };
  225. };