close

GUID

Ir para a navegação Ir para a pesquisa

O GUID ( G lobally U nique Id entifier ) ​​é um número pseudo -aleatório usado na programação de software , para poder distinguir vários objetos. O tipo mais conhecido de GUID é o uso do UUID pela Microsoft , desenvolvido pela Open Software Foundation , mas também existem outros usos, como o XML .

Os GUIDs são usados ​​principalmente no Component Object Model (COM) da Microsoft, mas também são populares em outros sistemas de software, como Oracle e Novell .

O GUID da Microsoft

O GUID é usado para identificar exclusivamente um componente de software COM específico; desta forma, duas versões (potencialmente incompatíveis) do mesmo componente, mesmo com o mesmo nome, podem ser distinguidas por seus códigos GUID. Embora o GUID não garanta a unicidade efetiva, o número possível de combinações (2 128 ) é tão alto que evita uma coincidência entre dois códigos. Para se ter uma ideia, considerando que em todo o universo observável existem 5 × 10 22 estrelas, cada estrela poderia receber 6,8 × 10 15 GUIDs diferentes.

Além dos componentes, os documentos e arquivos do Office no Advanced Streaming Format também são marcados via GUID . A maioria dos GUIDs usados ​​por vários aplicativos estão contidos no registro do Windows .

Estrutura

Na prática, um GUID é um número de 128 bits (16 bytes ) em formato hexadecimal que pode ser:

3F 25 04 E0 4F 89 11 D3 9A 0C 03 05 E8 2C 33 01

GUIDs são escritos entre chaves e divididos em cinco blocos, um de 4 bytes, três de 2 bytes e um de 6 bytes. No exemplo anterior teríamos:

{3F2504E0-4F89-11D3-9A0C-0305E82C3301}

A notação é, portanto, uma sequência formada pelos seguintes grupos de caracteres, divididos por um hífen (-).

  1. Grupo 1 ( 8 caracteres )
  2. Grupo 2 ( 4 caracteres )
  3. Grupo 3 ( 4 caracteres )
  4. Dois elementos iniciais do grupo 4 ( 4 caracteres )
  5. Dois elementos restantes do grupo 4 ( 4 caracteres ) seguidos do grupo 5 ( 8 caracteres , para um total de 12 caracteres )

Na definição de uma estrutura adequada para conter um GUID, em qualquer linguagem de programação , a estrutura mais utilizada é a seguinte.

ESTRUTURA GUIA
Data1 dd
Data2 dw
Dados3 dw
Dados4 db 8
TERMINAIS GUID

Em C , a definição contida na biblioteca guiddef.h é esta:

typedef estrutura _GUID {
    Data1 longo não assinado;
    Data2 curto não assinado;
    Data3 curto não assinado;
    caractere não assinado Data4 [8];
} GUID;

No framework .NET existe uma classe especial para criação de GUIDs, System.Guid

Algoritmo

O algoritmo especificado pelo OSF e usado pela Microsoft para gerar GUIDs foi criticado. De fato, esse algoritmo utilizou como ponto de partida os endereços MAC das placas de rede dos usuários que o geraram. A vantagem deste método era a certeza absoluta da unicidade do GUID gerado (pois não há dois endereços MAC iguais), mas desta forma era possível rastrear um GUID de volta ao computador que o gerou, com potenciais consequências sobre privacidade e segurança.

Depois que esse problema veio à tona, a Microsoft mudou o algoritmo (implementado na API UuidCreate ) para que ele não dependesse mais de endereços MAC. Ainda é possível gerar voluntariamente GUIDs dependentes de endereço MAC usando a API UuidCreateSequential.

Para saber se um GUID foi gerado com a primeira ou segunda versão do algoritmo, é necessário consultar o primeiro dígito do terceiro bloco. Então, no exemplo anterior

{3F2504E0-4F89-1 1D3-9A0C -0305E82C3301}

Se este dígito for 1, como neste caso, o código é gerado pela primeira versão; vice-versa, se o dígito for um 4, ele é gerado pelo segundo.

Subtipos

Os GUIDs usados ​​em COMs podem ser de diferentes tipos, dependendo de sua função:

  • IID - identificadores de interface
  • ClsID - identificadores de classe (contidos em HKEY_CLASSES_ROOT\CLSID)
  • LibID - identificadores de biblioteca
  • CatID - identificadores de categoria (a presença de um CATID em uma classe identifica essa classe como pertencente a uma determinada categoria)

DCOMs introduziram outros subtipos

  • AppID - identificadores de aplicativos
  • MID - identificadores de máquina
  • IpID - identificadores de ponteiro de interface
  • CID - identificadores aleatórios referentes a uma sessão RPC
  • OID - identificadores de objetos
  • OxID - identificadores do exportador de objetos
  • SetID - identificadores de um grupo de objetos

Dois GUIDs idênticos de subtipos diferentes podem coexistir sem problemas no mesmo sistema, mas não é permitida a existência de dois GUIDs idênticos do mesmo subtipo.

GUID em XML

Existem também GUIDs dentro de algumas versões do RSS , marcados precisamente pela tag guid, porém eles não têm nada a ver com os GUIDs COM da Microsoft. Na verdade, dentro do RSS, os GUIDs podem ser qualquer número, qualquer string ou URL , válidos ou não. Normalmente, usamos a URL exclusiva da postagem como GUID.

Links externos