2012-02-20 159 views
8

我正在将C++ Windows API转换为delphi * .pas文件。什么是GUID类型?

我有这个C Structfunction

typedef struct _WLAN_HOSTED_NETWORK_STATUS { 
    WLAN_HOSTED_NETWORK_STATE  HostedNetworkState; 
    GUID       IPDeviceID; 
    DOT11_MAC_ADDRESS    wlanHostedNetworkBSSID; 
    DOT11_PHY_TYPE     dot11PhyType; 
    ULONG       ulChannelFrequency; 
    DWORD       dwNumberOfPeers; 
    WLAN_HOSTED_NETWORK_PEER_STATE PeerList[1]; 
} WLAN_HOSTED_NETWORK_STATUS, *PWLAN_HOSTED_NETWORK_STATUS; 

回到我翻译成这样:

type 
_WLAN_HOSTED_NETWORK_STATUS = record 
    HostedNetworkState : WLAN_HOSTED_NETWORK_STATE; 
    IPDeviceID : GUID; 
    wlanHostedNetworkBSSID : DOT11_MAC_ADDRESS; 
    dot11PhyType : DOT11_PHY_TYPE; 
    ulChannelFrequency : ULONG; 
    dwNumberOfPeers : DWORD; 
    PeerList : Array [0..1] of WLAN_HOSTED_NETWORK_PEER_STATE; 
end; 
WLAN_HOSTED_NETWORK_STATUS = _WLAN_HOSTED_NETWORK_STATUS; 
PWLAN_HOSTED_NETWORK_STATUS = _WLAN_HOSTED_NETWORK_STATUS; 

,但我不是参考MSDN发现这是什么GUIDIPDeviceID 它是一种原始的类型?我如何持有这个价值?

+0

我已经删除了C++标记,因为这实际上是一个纯粹的Delphi问题 – 2012-02-20 14:48:53

+2

GUID表示全局唯一标识符,它基本上是一个非常大的自动生成的唯一值。在您问到的问题的上下文中,使用它是为了唯一标识安装到您计算机上的特定设备。安装在窗口中的设备在很多地方都有一个GUID。可以将其视为特定硬件或内核级别对象的唯一序列号。在这种情况下,您的WLAN卡的ID号。 Delphi支持代码中的GUID文字,如果你看到类似这样的内容,它也是一个GUID:'{21EC2020-3AEA-1069-A2DD-08002B30309D}' – 2012-02-21 19:49:01

回答

6

GUID structure也称为UUID,是一种广泛使用的128位值类型,它表示全局唯一标识符。

typedef struct _GUID { 
    DWORD Data1; 
    WORD Data2; 
    WORD Data3; 
    BYTE Data4[8]; 
} GUID; 

快速检查表明,德尔福已经有这个类型,在模块System命名TGuid