【问题标题】:What is the type GUID?什么是类型 GUID?
【发布时间】:2012-02-20 14:42:10
【问题描述】:

我正在将 C++ Windows API 转换为 delphi *.pas 文件。

我有这个由function 返回的C Struct

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 参考资料上没有找到 GUID 类型的 IPDeviceID 是什么 它是原始类型吗?我如何保持这个值?

【问题讨论】:

  • 我删除了 C++ 标签,因为这确实是一个纯 Delphi 问题
  • GUID 表示全局唯一标识符,它基本上是一个非常大的自动生成的唯一值。在您询问的问题的上下文中,它的用途是唯一标识安装在您的计算机上的特定设备。 Windows 中安装的设备在很多地方都有一个 GUID。将其视为特定硬件或内核级对象的唯一序列号。在这种情况下,您的 WLAN 卡的 ID 号。 Delphi 在代码中支持 GUID 文字,如果您看到类似这样的内容,它也是一个 GUID:{21EC2020-3AEA-1069-A2DD-08002B30309D}

标签: delphi winapi


【解决方案1】:

Delphi 等价物是TGUID

Delphi 文档包含一些examples of how to use this type and its associated helper function

【讨论】:

  • @WarrenP 为什么这是对大卫回答的评论?为什么不自己回答或至少对问题发表评论?
【解决方案2】:

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

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

快速检查发现 Delphi 已经有这种类型,在模块 System 中命名为 TGuid

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-12-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-21
    • 2011-11-20
    • 2016-08-26
    • 1970-01-01
    相关资源
    最近更新 更多