Вторник, 30.04.2024, 19:29
Распределенная обработка данных
Здравствуйте Гость | RSS
Главная страница GUID Регистрация Вход
Меню сайта

Считалка

Онлайн всего: 1
Гостей: 1
Пользователей: 0

Форма входа

§ 9.   GUID.

Глобальные уникальные идентификаторы GUID.

 

Будем представлять IID как константу, идентифицирующую интерфейс, например:

 

static const IID IID_IX =

{  0x32bb8320, 0x6416, 0x11cf,

{  0xa6, 0xbb, 0x0, 0x80,0xc7,0xb2,0xd6, 0x82}};

 

На самом деле IID представляет тип, определенный как структура длиной 128 битов (16 байтов) под названием GUID. Для того, чтобы гарантировать уникальность идентификатора интерфейса GUID использует 48-битовое значение, уникальное для компьютера, на котором он генерируется. Обычно в качестве такого значения берется адрес сетевой платы (60 битов GUID отводится для указания времени) в сочетании с множеством других значений.

Уникальный GUID можно сгенерировать программно с помощью двух утилит:

-       утилита командной строки UUIDGEN.EXE

-       диалоговая программа на VC++ GUIDGEN.EXE.

В COM идентификаторы GUID используются для идентификации классов компонента (CLSID), интерфейсов (IID), библиотек типов и категорий компонентов (CATID). Чтобы определить и объявить GUID будем использовать макрос DEFINE_GUID, который определен в OBJBASE.H. Для использования DEFINE_GUID генерируем GUID с помощью GUIDGEN.EXE. Макрос DEFINE_GUID создает глобальную константу, которая может быть использована в любой программе, как на стороне клиента, так и на стороне сервера. Однако ее значение определяется один раз. В той точке программы, в которой требуется определить GUID-структуру, необходимо перед файлом заголовков с объявлениями включить файл INITGUID.H. Приведем пример:

 

 

//

// Imath.h

//

//{A888F561-58E4-11d0-A68A-0000837E3100

 

DEFINE_GUID (IID_IMath,

  { 0xa888f561, ... ... ...

 

class IMath: public IUknown

{

public:

virtual long Add(long Op1, long Op2)=0;

virtual long Substract(long Op1, long Op2)=0;

. . .

};

 

#include <objbase.h>

#include <initguid.h>

#include "Imath.h

 

За счет включения в программу INITGUID.H мы отменяем значение макроса DEFINE_GUID таким образом, что он не просто объявляет тип переменной GUID (что-то вреде:

extern "C” const GUID IID_IMath),

а создает и инициализирует переменную этого типа. Программа GUIDGEN открывает собственное окно и обеспечивает несколько способов представления созданных GUID. В нашем случае требуется формат DEFINE_GUID. Используя кнопку COPY, можно вставить определение GUID через буфер обмена непосредственно в исходный текст программы.



Поиск

Друзья сайта

2024