delphi xe10 64位获得板载网卡guid
时间: 2023-10-20 17:03:18 浏览: 164
要在Delphi XE10 64位中获取板载网卡的GUID,可以使用以下步骤:
1. 首先,需要在Delphi中添加相关的单位。在界面中的使用单元列表中,添加WinAPI.Windows、WinAPI.ActiveX 和 IpHlpApi 单位。
2. 创建一个包含获取网卡GUID的函数的过程。例如,可以创建一个名为 GetNicGuid 的函数。
3. 在 GetNicGuid 函数中,使用 GetAdaptersInfo 函数来获取系统中所有的网卡信息。此函数从IP Helper库中导入。
4. 使用 GetAdaptersInfo 函数获取网卡信息后,循环遍历信息结构体,直到找到需要的网卡上的信息。
5. 在循环中,使用 IsEqualGUID 函数来检查当前网卡的GUID是否与期望的GUID匹配。
6. 如果发现匹配的网卡,可以将其GUID保存到一个变量中。
7. 最后,返回所找到的网卡的GUID。
以下是一个示例的代码片段,展示了如何实现获取板载网卡GUID的函数:
```Delphi
uses
WinAPI.Windows, WinAPI.ActiveX, IpHlpApi;
function GetNicGuid: string;
var
pAdapterInfo: PIP_ADAPTER_INFO;
pAdapter: PIP_ADAPTER_INFO;
Guid: TGUID;
szGuid: array[0..38] of Char;
dwBufLen: DWORD;
begin
Result := '';
dwBufLen := 0;
GetAdaptersInfo(nil, dwBufLen);
GetMem(pAdapterInfo, dwBufLen);
if Assigned(pAdapterInfo) then
begin
if GetAdaptersInfo(pAdapterInfo, dwBufLen) = NO_ERROR then
begin
pAdapter := pAdapterInfo;
while Assigned(pAdapter) do
begin
if pAdapter^.Type_ = MIB_IF_TYPE_ETHERNET then
begin
if IsEqualGUID(pAdapter^.AdapterName, YOUR_EXPECTED_GUID) then
begin
ZeroMemory(@Guid, SizeOf(Guid));
if Succeeded(StringToGUID(pAdapter^.AdapterName, Guid)) then
begin
if GuidToString(Guid, szGuid) then
begin
Result := szGuid;
Break;
end;
end;
end;
end;
pAdapter := pAdapter^.Next;
end;
end;
FreeMem(pAdapterInfo);
end;
end;
```
请注意要以 YOUR_EXPECTED_GUID 替换为期望的网卡GUID。此代码片段将返回找到的网卡GUID作为字符串。
阅读全文