idl의 각 인터페이스에 대해 고유 한 uuid
을 생성해야하는 이유는 무엇입니까?왜 IDL의 모든 인터페이스에 대해 고유 한 uuid를 만들어야합니까?
예를 들어이 인터페이스에는 모든 인터페이스에 대한 고유 한 uuid가 TradingLib
입니다.
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
};
};
TradingLib
라이브러리에는 단일 uuid를 사용할 수없는 이유는 무엇입니까? 모든 인터페이스에 대해 uuid
을 만들어야하는 이유는 무엇입니까?
감사합니다.
"내 프로그램의 클래스에 별개의 이름을 지정해야하는 이유는 무엇입니까?"라는 질문과 같습니다. 인터페이스의 guid는 이름이며 사용하는 식별자는 사용자의 편의를 위해서만 사용되지만 COM에서는 사용하지 않습니다. –