GUIDとUUID、CLSID、IID差と接触

マイクロソフトは、元の仕様を設計した場合、COM、ユーザは、ユニークなデザインのCOMコンポーネントをグローバルできることを確認するには、2つのオプションがあります。

ユーザーはあなたが代理店に適用され、そして料金を支払う必要がある場合、COMコンポーネントを開発したい場合は、最初は、インターネットアドレスと同じ管理、規制機関の設立を使用することです。

第2の発明は、毎回グローバル一意識別子のCOMコンポーネントを生成するアルゴリズムです。

第1の方法は、それがユーザにあまりにも不便であり、MicrosoftはCOMコンポーネントを識別するために、第二の方法は、本発明及びアルゴリズムは、このようなアルゴリズムのGUID(グローバル一意識別子)を使用して、GUIDは、128ビット長の数であります一般進数で表現しました。核となるアイデアは、GUIDを生成するために、すぐにマシンカード、​​現地時間、番号を組み合わせることです。マシンは、1秒当たり1000万GUIDを生成した場合に理論的には、それは保証することができます(確率の意味)は3240で繰り返されていません。

GUIDの例:54BF6567--1007--11D1 - B0AA - 444553540000

                HKEY_CLASSES_ROOT / CLSID / {002B9E07-2E10-438F-AF1E-40E6A96F1EE4}

MicrosoftのCOM、GUIDやUUID、CLSIDは、IIDは一つのことですが、それぞれが別の意味を表します。

UUID:COMの代表

CLSID:クラスのCOMコンポーネントの代表 

IID:COMコンポーネントのインターフェイスを表します

プロセスでは、処理手順に対応する実際のターゲット・データ・ストリングは、Cドライブとして、多くの場合、同じ経路ではなく、いくつかは、いくつかのディスクDを入れ、Microsoftはの使用、直接パス表現を使用していない溶液を思い付いCLSIDは、間接的な方法は、これらのオブジェクトデータパスの処理手順を説明呼ばれます。

CLSIDは、次のようにCLSID構造が定義され、実際の数です。

構造体のtypedef {_GUID
 DWORD DATAL; //乱数
 WORDデータ2; //および時間関連
 WORDのデータ3; //時間依存と
 BYTE DATA4 [8]; //と関連付けられたネットワークカードのMAC
} GUID。

GUID CLSIDのtypedef。//组件ID
GUID IIDのtypedef。//接口のID
の#define REFCLSIDのconstのCLSID&

//一般的な文と割り当て方法
CLSID CLSID_Excel = {0x00024500,0x0000,0x0000、0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x46 {}};
構造体の__declspec(UUID(「C000-00024500-0000-0000 -000 000 000 046 "))CLSID_Excel;
クラスDECLSPEC_UUID(" 00024500-0000-0000-C000-000000000046「)CLSID_Excel;
表現//レジストリ
{00024500-0000-0000-C000-000000000046}

あなたは部品プログラムを書き込むための開発環境を使用している場合は、IDEが自動的にCLSIDを生成するのに役立ちます。

CLSID関数)(CoCreateGuidによって生成されてもよいです。

「VCディレクトリ/Common/Tools/GuidGen.exe」ツールは、GUIDを生成し使用してください

各COMコンポーネントは、CLSIDを指定する必要があり、かつユニークでなければなりません。それは、16バイトを使用した理由は、繰り返しの確率は「不可能」からのものであることを確実にするためです。しかし、使用のMicrosoftのしやすさは、また、道のProgIDと呼ばれる別の文字列名、サポートしています。CLSIDとProgIDが、実際に概念の二つの異なる表現したものですので、我々は、プログラムのいずれかを使用することはできませんので。

 

おすすめ

転載: www.cnblogs.com/code1992/p/11374723.html