FIXED_INFO_W2KSP1结构 (iptypes.h)
FIXED_INFO 结构包含计算机上所有接口中相同的信息。
语法
typedef struct {
char HostName[MAX_HOSTNAME_LEN + 4];
char DomainName[MAX_DOMAIN_NAME_LEN + 4];
PIP_ADDR_STRING CurrentDnsServer;
IP_ADDR_STRING DnsServerList;
UINT NodeType;
char ScopeId[MAX_SCOPE_ID_LEN + 4];
UINT EnableRouting;
UINT EnableProxy;
UINT EnableDns;
} FIXED_INFO_W2KSP1, *PFIXED_INFO_W2KSP1;
成员
HostName[MAX_HOSTNAME_LEN + 4]
类型: char[MAX_HOSTNAME_LEN + 4]
本地计算机的主机名。 这可能是完全限定的主机名 (包括已加入域的计算机的域) 。
DomainName[MAX_DOMAIN_NAME_LEN + 4]
类型: char[MAX_DOMAIN_NAME_LEN + 4]
在其中注册本地计算机的域。
CurrentDnsServer
类型: PIP_ADDR_STRING
保留。 使用 DnsServerList 成员获取本地计算机的 DNS 服务器。
DnsServerList
类型: IP_ADDR_STRING
IP_ADDR_STRING结构的链接列表,这些结构指定本地计算机使用的 DNS 服务器集。
NodeType
类型: UINT
本地计算机的节点类型。 这些值在 Iptypes.h 头文件中定义。
NodeType | 含义 |
---|---|
|
广播节点类型。 |
|
对等节点类型。 |
|
混合节点类型。 |
|
混合节点类型。 |
ScopeId[MAX_SCOPE_ID_LEN + 4]
类型: char[MAX_SCOPE_ID_LEN + 4]
DHCP 作用域名称。
EnableRouting
类型: UINT
一个布尔值,指定是否在本地计算机上启用路由。
EnableProxy
类型: UINT
一个布尔值,指定本地计算机是否充当 ARP 代理。
EnableDns
类型: UINT
一个布尔值,指定是否在本地计算机上启用 DNS。
注解
FIXED_INFO 结构由 GetNetworkParams 函数检索。
在 Microsoft Windows 软件开发工具包 (SDK) 中,定义了 FIXED_INFO_WIN2KSP1 结构。 如果目标平台是 Windows 2000 且 Service Pack 1 (SP1) 及更高版本 (NTDDI_VERSION >= NTDDI_WIN2KSP1
、 _WIN32_WINNT >= 0x0501
或 WINVER >= 0x0501
) ,则编译应用程序时, FIXED_INFO_WIN2KSP1 结构的类型为 FIXED_INFO 结构。 如果目标平台不是 Windows 2000 SP1 及更高版本,则编译应用程序时, FIXED_INFO 结构未定义。
Windows 98 及更高版本支持 GetNetworkParams 函数和 FIXED_INFO 结构。 但是,若要为早于 Windows 2000 且 Service Pack 1 (SP1) 的目标平台生成应用程序,必须使用早期版本的平台软件开发工具包 (SDK) 。
示例
以下代码检索包含本地计算机的网络配置信息的 FIXED_INFO 结构。 代码从 结构中打印所选成员。
//
// Link with IPHlpAPI.lib
//
#include <winsock2.h>
#include <iphlpapi.h>
#include <stdio.h>
#include <windows.h>
#pragma comment(lib, "IPHLPAPI.lib")
#define MALLOC(x) HeapAlloc(GetProcessHeap(), 0, (x))
#define FREE(x) HeapFree(GetProcessHeap(), 0, (x))
/* Note: could also use malloc() and free() */
int __cdecl main()
{
FIXED_INFO *pFixedInfo;
ULONG ulOutBufLen;
DWORD dwRetVal;
IP_ADDR_STRING *pIPAddr;
pFixedInfo = (FIXED_INFO *) MALLOC(sizeof (FIXED_INFO));
if (pFixedInfo == NULL) {
printf("Error allocating memory needed to call GetNetworkParams\n");
return 1;
}
ulOutBufLen = sizeof (FIXED_INFO);
// Make an initial call to GetAdaptersInfo to get
// the necessary size into the ulOutBufLen variable
if (GetNetworkParams(pFixedInfo, &ulOutBufLen) == ERROR_BUFFER_OVERFLOW) {
FREE(pFixedInfo);
pFixedInfo = (FIXED_INFO *) MALLOC(ulOutBufLen);
if (pFixedInfo == NULL) {
printf("Error allocating memory needed to call GetNetworkParams\n");
return 1;
}
}
if (dwRetVal = GetNetworkParams(pFixedInfo, &ulOutBufLen) == NO_ERROR) {
printf("Host Name: %s\n", pFixedInfo->HostName);
printf("Domain Name: %s\n", pFixedInfo->DomainName);
printf("DNS Servers:\n");
printf("\t%s\n", pFixedInfo->DnsServerList.IpAddress.String);
pIPAddr = pFixedInfo->DnsServerList.Next;
while (pIPAddr) {
printf("\t%s\n", pIPAddr->IpAddress.String);
pIPAddr = pIPAddr->Next;
}
printf("Node Type: ");
switch (pFixedInfo->NodeType) {
case BROADCAST_NODETYPE:
printf("Broadcast node\n");
break;
case PEER_TO_PEER_NODETYPE:
printf("Peer to Peer node\n");
break;
case MIXED_NODETYPE:
printf("Mixed node\n");
break;
case HYBRID_NODETYPE:
printf("Hybrid node\n");
break;
default:
printf("Unknown node type %0lx\n", pFixedInfo->NodeType);
break;
}
printf("DHCP scope name: %s\n", pFixedInfo->ScopeId);
if (pFixedInfo->EnableRouting)
printf("Routing: enabled\n");
else
printf("Routing: disabled\n");
if (pFixedInfo->EnableProxy)
printf("ARP proxy: enabled\n");
else
printf("ARP Proxy: disabled\n");
if (pFixedInfo->EnableDns)
printf("DNS: enabled\n");
else
printf("DNS: disabled\n");
} else {
printf("GetNetworkParams failed with error: %d\n", dwRetVal);
return 1;
}
if (pFixedInfo)
FREE(pFixedInfo);
return 0;
}
要求
最低受支持的客户端 | Windows 2000 Professional [仅限桌面应用] |
最低受支持的服务器 | Windows 2000 Server [仅限桌面应用] |
标头 | iptypes.h (包括 Iphlpapi.h) |