Generateur de guid (win32)

Soyez le premier à donner votre avis sur cette source.

Vue 12 814 fois - Téléchargée 386 fois

Description

Un générateur de GUID un peu sur le principe de celui fourni avec VS.
Celui-ci par contre ne se sert pas de CoCreateGuid() ni aucun autre appel COM.
void __stdcall OnNewGuid(HWND hdlg)
{
BNGUID gd;
char buf[72], *c;

RemplirGuid(&gd); // REMPLIT LES 128 BITS DU GUID

// FORMAT: static const GUID <name> =
  • ((DWORD*) buf) = 0x78307B; // "{0x"

c = bndwtohexa(gd.dwa, buf + 3);
  • c++ = ','; *c++ = '0'; *c++ = 'x';

c = bndwtohexa(gd.wb, c);
  • c++ = ','; *c++ = '0'; *c++ = 'x';

c = bndwtohexa(gd.wc, c);
  • c++ = ','; *c++ = '{'; *c++ = '0'; *c++ = 'x';

c = bndwtohexa(gd.bd, c);
  • c++ = ','; *c++ = '0'; *c++ = 'x';

c = bndwtohexa(gd.be, c);
  • c++ = ','; *c++ = '0'; *c++ = 'x';

c = bndwtohexa(gd.bf, c);
  • c++ = ','; *c++ = '0'; *c++ = 'x';

c = bndwtohexa(gd.bg, c);
  • c++ = ','; *c++ = '0'; *c++ = 'x';

c = bndwtohexa(gd.bh, c);
  • c++ = ','; *c++ = '0'; *c++ = 'x';

c = bndwtohexa(gd.bi, c);
  • c++ = ','; *c++ = '0'; *c++ = 'x';

c = bndwtohexa(gd.bj, c);
  • c++ = ','; *c++ = '0'; *c++ = 'x';

c = bndwtohexa(gd.bk, c);
  • c = '}'; *(c+1) = '}'; *(c+2) = 0;

SetDlgItemText(hdlg, IDED_CONST, buf);

// FORMAT BASE DE REGISTRES:
buf[0] = '{';
c = bndwhex(gd.dwa, buf + 1);
  • c++ = '-';

c = bnwhex(gd.wb, c);
  • c++ = '-';

c = bnwhex(gd.wc, c);
  • c++ = '-';

c = bnbhex(gd.bd, c);
c = bnbhex(gd.be, c);
  • c++ = '-';

c = bnbhex(gd.bf, c);
c = bnbhex(gd.bg, c);
c = bnbhex(gd.bh, c);
c = bnbhex(gd.bi, c);
c = bnbhex(gd.bj, c);
c = bnbhex(gd.bk, c);
  • c = '}'; *(c+1) = 0;

SetDlgItemText(hdlg, IDED_REG, buf);
}

C'est du "prêt-à-porter", on utilise le prog tel quel sinon importer les funcs dans son code pour faire du GUID à l'exécution.
Tout est en ASM, regarde qui veut mais pas la peine d'hurler svp.
Renommer fichier toc du dossier release en exe pour utiliser.

Codes Sources

A voir également

Ajouter un commentaire Commentaires
Messages postés
19
Date d'inscription
mercredi 30 novembre 2005
Statut
Membre
Dernière intervention
29 octobre 2006

quelqu'un connais l'équivalence en perl ?
Messages postés
123
Date d'inscription
mercredi 27 août 2003
Statut
Membre
Dernière intervention
12 août 2008
1
j'ai trouver la reponse sur ce site web:
http://en.wikipedia.org/wiki/Globally_Unique_Identifier
Messages postés
123
Date d'inscription
mercredi 27 août 2003
Statut
Membre
Dernière intervention
12 août 2008
1
j'ai une question:
comment en peut convirtire le CLSID en GUID par exemple;
de {D27CDB6E-AE6D-11CF-96B8-444553540000} CLSID a {0xD27CDB6E,0xAE6D,0x11CF,{0x96,0xB8,0x44,0x45,0x53,0x54,0x00,0x00}} GUID
Merci pour une reponse.
Messages postés
755
Date d'inscription
samedi 15 mai 2004
Statut
Membre
Dernière intervention
30 janvier 2011

j'ai bien la simpliciter du code pour les nouveau :
c = bndwtohexa(gd.be, c);
*c++ ','; *c++ '0'; *c++ = 'x';
c = bndwtohexa(gd.bf, c);
*c++ ','; *c++ '0'; *c++ = 'x';
c = bndwtohexa(gd.bg, c);
*c++ ','; *c++ '0'; *c++ = 'x';
c = bndwtohexa(gd.bh, c);
*c++ ','; *c++ '0'; *c++ = 'x';
c = bndwtohexa(gd.bi, c);
*c++ ','; *c++ '0'; *c++ = 'x';
c = bndwtohexa(gd.bj, c);
*c++ ','; *c++ '0'; *c++ = 'x';

surtout pour une source ti debutant ^^
enfin, tres pratique, quoi que un peu compliquer.
Messages postés
1787
Date d'inscription
lundi 22 novembre 2004
Statut
Membre
Dernière intervention
31 janvier 2009
2
N'empêche, une grand mère par ci, une autre par là, ça peut rendre service ;)
Merci Brunews. T'es vraiment utile partout où tu es et quoi que tu fasses ;)
Afficher les 36 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.