title: Why do we have to create unique uuid for every interface in a idl?
body: <p>Why do we have to create unique <code>uuid</code> for each interface in a  idl ?</p>
  
  <p>For example in this interface there's a unique uuid for every interface in <code>TradingLib</code>.</p>
  
  <pre><code>import "oaidl.idl";
  
  [uuid(7C948DDC-8C22-46CF-91AD-1E043A0E1A10), object]
  interface IInventory : IUnknown
  {
      HRESULT GetStock([out, retval] long* pStock);
      HRESULT Buy([in] long quantity, [in] float rate);
      HRESULT Sell([in] long quantity, [in] float rate);
  };
  
  [uuid(F7CF450D-C4BE-4943-A384-AA5BB4A89202), object]
  interface IAccount : IUnknown
  {
      HRESULT GetBalance([out, retval] double* pBalance);
      HRESULT Credit([in] double amount);
      HRESULT Debit([in] double amount);
  };
  
  [uuid(9791C352-4665-403C-8A37-3EC8485A87D5), version(1.0), helpstring("XYZ Trading Library")]
  library TradingLib
  {
      importlib("stdole32.tlb");
  
      [uuid(03698856-A173-417F-93CF-AEBC27EB042A)]
      coclass Trader
      {
          [default] interface IInventory;
          interface IAccount;
      };
  
      [uuid(E596BE02-0DCE-4B7C-B8D4-4F621F675BF0)]
      enum TradingErrors
      {
          TRADER_E_OUTOFSTOCK = 0x80040101,
          TRADER_E_INSUFFICIENTFUNDS = 0x80040102
      };
  };
  </code></pre>
  
  <p>Why can't we just use a single uuid for the <code>TradingLib</code> library itself? Why is it necessary to create <code>uuid</code> for every interface?</p>
  
  <p>Thanks.</p>