gpt4 book ai didi

com - 为什么我们必须为 idl 中的每个接口(interface)创建唯一的 uuid?

转载 作者:行者123 更新时间:2023-12-01 15:25:12 24 4
gpt4 key购买 nike

为什么我们必须为idl中的每个接口(interface)创建唯一的uuid

例如在这个界面中,TradingLib中的每个界面都有一个唯一的uuid。

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?为什么需要为每个接口(interface)创建uuid

谢谢。

最佳答案

每个 COM 接口(interface)都必须有一个与之关联的唯一 ID。每次引入新接口(interface)时,都必须为其分配一个新的唯一 ID。

这是 COM 约定之一 - 如果您知道接口(interface) id,您就知道接口(interface)是什么(所有它都是具有精确签名的方法)。因此,在您的示例中,答案是 - 您不能重用 id,因为每个不同的接口(interface)都必须有自己的唯一 id。

关于com - 为什么我们必须为 idl 中的每个接口(interface)创建唯一的 uuid?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5105777/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com