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

模拟服务器

开发平台:

C/C++

  1. //+-------------------------------------------------------------------------
  2. //
  3. //  Microsoft Windows
  4. //  Copyright (c) Microsoft Corporation. All rights reserved.
  5. //
  6. //--------------------------------------------------------------------------
  7. cpp_quote("//=--------------------------------------------------------------------------=")
  8. cpp_quote("// chanmgr.h")
  9. cpp_quote("//=--------------------------------------------------------------------------=")
  10. cpp_quote("// Copyright (c) Microsoft Corporation. All rights reserved.")
  11. cpp_quote("//")
  12. cpp_quote("// THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF")
  13. cpp_quote("// ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO")
  14. cpp_quote("// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A")
  15. cpp_quote("// PARTICULAR PURPOSE.")
  16. cpp_quote("//=--------------------------------------------------------------------------=")
  17. cpp_quote("")
  18. cpp_quote("#pragma comment(lib,"uuid.lib")")
  19. cpp_quote("")
  20. cpp_quote("//---------------------------------------------------------------------------=")
  21. cpp_quote("// Channel Manager Interfaces.")
  22. cpp_quote("")
  23. #ifndef DO_NO_IMPORTS
  24. import "unknwn.idl";
  25. #endif
  26. interface IChannelMgr;
  27. interface IEnumChannels;
  28. //---------------------------------------------------------------
  29. //          Channel Manager
  30. //---------------------------------------------------------------
  31. [
  32.     uuid(4804f2e0-d16e-11d0-802b-00c04fd75d13),     // LIBID_CHANNELMGR
  33.     helpstring("Microsoft Channel Manager 1.0"),
  34.     lcid(0x0000),
  35.     version(1.0)
  36. ]
  37. library CHANNELMGR
  38. {
  39.     // ChannelMgr interface
  40.     [
  41.         uuid(85BD8E82-0FBA-11d1-90C3-00C04FC2F568),  // IID_IChannelMgr
  42.         helpstring("Channel Manager interface"),
  43.         odl
  44.     ]
  45.     interface IChannelMgr : IUnknown
  46.     {
  47.         typedef struct _tagChannelShortcutInfo {
  48.             DWORD  cbSize;     // size of struct, must be specified
  49.             LPWSTR pszTitle;   // channel title
  50.             LPWSTR pszURL;     // required url to channel cdf
  51.             LPWSTR pszLogo;    // optional logo url
  52.             LPWSTR pszIcon;    // optional icon url
  53.             LPWSTR pszWideLogo;// optional wide logo url
  54.             BOOL   bIsSoftware;// is software update and lives in that folder (normally false)
  55.         } CHANNELSHORTCUTINFO;
  56.         typedef struct _tagChannelCategoryInfo {
  57.             DWORD  cbSize;     // size of struct, must be specified
  58.             LPWSTR pszTitle;   // category title
  59.             LPWSTR pszURL;     // optional url to category html
  60.             LPWSTR pszLogo;    // optional logo url
  61.             LPWSTR pszIcon;    // optional icon url
  62.             LPWSTR pszWideLogo;// optional wide logo url
  63.         } CHANNELCATEGORYINFO;
  64.         typedef enum _tagChannelEnumFlags {
  65.             CHANENUM_CHANNELFOLDER    = 0x00000001,
  66.             CHANENUM_SOFTUPDATEFOLDER = 0x00000002,
  67.             CHANENUM_DESKTOPFOLDER    = 0x00000004,
  68.             CHANENUM_TITLE            = 0x00010000,
  69.             CHANENUM_PATH             = 0x00020000,
  70.             CHANENUM_URL              = 0x00040000,
  71.             CHANENUM_SUBSCRIBESTATE   = 0x00080000
  72.         } CHANNELENUMFLAGS;
  73. cpp_quote("#define CHANENUM_ALLFOLDERS (CHANENUM_CHANNELFOLDER    |    \")
  74. cpp_quote("                             CHANENUM_SOFTUPDATEFOLDER |    \")
  75. cpp_quote("                             CHANENUM_DESKTOPFOLDER          )")
  76. cpp_quote("")
  77. cpp_quote("#define CHANENUM_ALLDATA    (CHANENUM_TITLE            |    \")
  78. cpp_quote("                             CHANENUM_PATH             |    \")
  79. cpp_quote("                             CHANENUM_URL              |    \")
  80. cpp_quote("                             CHANENUM_SUBSCRIBESTATE         )")
  81. cpp_quote("")
  82. cpp_quote("#define CHANENUM_ALL        (CHANENUM_CHANNELFOLDER    |    \")
  83. cpp_quote("                             CHANENUM_SOFTUPDATEFOLDER |    \")
  84. cpp_quote("                             CHANENUM_DESKTOPFOLDER    |    \")
  85. cpp_quote("                             CHANENUM_TITLE            |    \")
  86. cpp_quote("                             CHANENUM_PATH             |    \")
  87. cpp_quote("                             CHANENUM_URL              |    \")
  88. cpp_quote("                             CHANENUM_SUBSCRIBESTATE         )")
  89. cpp_quote("")
  90.         HRESULT AddChannelShortcut([in]CHANNELSHORTCUTINFO *pChannelInfo);
  91.         HRESULT DeleteChannelShortcut([in]LPWSTR pszTitle);
  92.         HRESULT AddCategory([in]CHANNELCATEGORYINFO *pCategoryInfo);
  93.         HRESULT DeleteCategory([in]LPWSTR pszTitle);
  94.         HRESULT EnumChannels([in]DWORD dwEnumFlags,
  95.                              [in]LPCWSTR pszURL,  // optional cdf url
  96.                              [out]IEnumChannels** pIEnumChannels);
  97.     };
  98.     // EnumChannels interface
  99.     [
  100.         uuid(A4C65425-0F82-11d1-90C3-00C04FC2F568),  // IID_IEnumChannels
  101.         helpstring("Channel Enumerator interface"),
  102.         odl
  103.     ]
  104.     interface IEnumChannels : IUnknown
  105.     {
  106.         typedef enum _tagSubcriptionState{
  107.             SUBSTATE_NOTSUBSCRIBED,
  108.             SUBSTATE_PARTIALSUBSCRIPTION,
  109.             SUBSTATE_FULLSUBSCRIPTION
  110.         } SUBSCRIPTIONSTATE;
  111.         typedef struct _tagChannelInfo {
  112.             LPOLESTR          pszTitle;
  113.             LPOLESTR          pszPath;
  114.             LPOLESTR          pszURL;
  115.             SUBSCRIPTIONSTATE stSubscriptionState;
  116.         } CHANNELENUMINFO;
  117.         HRESULT Next(ULONG celt, CHANNELENUMINFO* rgChanInf,
  118.                      ULONG *pceltFetched);
  119.         HRESULT Skip(ULONG celt);
  120.         HRESULT Reset(void);
  121.         HRESULT Clone(IEnumChannels **ppenum);
  122.     };
  123.     // ChannelMgr class
  124.     [
  125.         uuid(b3cdae90-d170-11d0-802b-00c04fd75d13), // CLSID_ChannelMgr
  126.         helpstring("ChannelMgr class"),
  127.     ]
  128.     coclass ChannelMgr
  129.     {
  130.         [default] interface IChannelMgr;
  131.     }
  132. }