GUID(全局統一標識符)是指在一台機器上生成的數字,它保證對在同一時空中的所有機器都是唯一的。它使用網卡MAC、地址、納秒級時間、芯片ID碼和許多可能的數字,這樣保證每次生成的GUID永遠不會重復,無論是同一個計算機上還是不同的計算機。
GUID長什么樣呢?
{C7B1AFCC-810E-46d0-8157-09FC488D4C71}
看起來挺古怪的吧。在 Windows 平台上,GUID 應用非常廣泛:注冊表、類及接口標識、數據庫、甚至自動生成的機器名、目錄名等。
不用擔心GUID的性能問題,因為它生成過程是采用MAC地址、機器時鍾等計算的,沒有並發問題,所以它一點都不比自增計數器的慢,有時候甚至更快。
講了一大堆理論,在程序中怎么生成GUID呢?
非常簡單,調用CoCreateGuid函數即可,它定義在objbase.h這個頭文件中。
【核心代碼】
1 #include <windows.h> 2 #include <stdio.h> 3 int main() 4 { 5 GUID guid; 6 ZeroMemory(&guid, sizeof(guid)); 7 TCHAR guid_string[1024]; 8 CoCreateGuid(&guid); 9 10 //格式化字符串 11 wsprintf(guid_string, TEXT("{%08X-%04X-%04x-%02X%02X-%02X%02X%02X%02X%02X%02X}"), 12 guid.Data1, 13 guid.Data2, 14 guid.Data3, 15 guid.Data4[0], 16 guid.Data4[1], 17 guid.Data4[2], 18 guid.Data4[3], 19 guid.Data4[4], 20 guid.Data4[5], 21 guid.Data4[6], 22 guid.Data4[7]); 23 24 //輸出GUID字符串 25 wprintf(guid_string); 26 return 0; 27 }
//利用VS工具生成:方法是"VS→工具→創建GUID"。