使用 GetNetworkParams 擷取資訊
GetNetworkParams函式會以目前網路設定的相關資料填入FIXED_INFO結構的指標。
使用 GetNetworkParams
宣告名為pFixedInfo之FIXED_INFO物件的指標,以及名為ulOutBufLen的ULONG物件。 這些變數會當做參數傳遞至 GetNetworkParams 函式。 另建立用於錯誤檢查) 的 DWORD 變數 dwRetVal (。
FIXED_INFO *pFixedInfo; IP_ADDR_STRING *pIPAddr; ULONG ulOutBufLen; DWORD dwRetVal;
配置結構的記憶體。
注意
ulOutBufLen的大小不足以保存資訊。 請參閱後續步驟。
pFixedInfo = (FIXED_INFO *) malloc(sizeof (FIXED_INFO)); ulOutBufLen = sizeof (FIXED_INFO);
對 GetNetworkParams 進行初始呼叫,以取得 ulOutBufLen 變數所需的大小。
注意
此函式函式將會失敗,並用來確保 ulOutBufLen 變數指定大小足以保存傳回至 pFixedInfo的所有資料。 這是此類型之資料結構和函式的常見程式設計模型。
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"); } }
使用一般錯誤檢查並將其值傳回至 DWORD變數dwRetVal,對GetNetworkParams進行第二次呼叫;用於更進階的錯誤檢查。
if (dwRetVal = GetNetworkParams(pFixedInfo, &ulOutBufLen) != NO_ERROR) { printf("GetNetworkParams failed with error %d\n", dwRetVal); if (pFixedInfo) { free(pFixedInfo); } }
如果呼叫成功,請從 pFixedInfo 資料結構存取資料。
printf("\tHost Name: %s\n", pFixedInfo->HostName); printf("\tDomain Name: %s\n", pFixedInfo->DomainName); printf("\tDNS Servers:\n"); printf("\t\t%s\n", pFixedInfo->DnsServerList.IpAddress.String); pIPAddr = pFixedInfo->DnsServerList.Next; while (pIPAddr) { printf("\t\t%s\n", pIPAddr->IpAddress.String); pIPAddr = pIPAddr->Next; } printf("\tNode Type: "); switch (pFixedInfo->NodeType) { case 1: printf("%s\n", "Broadcast"); break; case 2: printf("%s\n", "Peer to peer"); break; case 4: printf("%s\n", "Mixed"); break; case 8: printf("%s\n", "Hybrid"); break; default: printf("\n"); } printf("\tNetBIOS Scope ID: %s\n", pFixedInfo->ScopeId); if (pFixedInfo->EnableRouting) printf("\tIP Routing Enabled: Yes\n"); else printf("\tIP Routing Enabled: No\n"); if (pFixedInfo->EnableProxy) printf("\tWINS Proxy Enabled: Yes\n"); else printf("\tWINS Proxy Enabled: No\n"); if (pFixedInfo->EnableDns) printf("\tNetBIOS Resolution Uses DNS: Yes\n"); else printf("\tNetBIOS Resolution Uses DNS: No\n");
釋放配置給 pFixedInfo 結構的任何記憶體。
if (pFixedInfo) { free(pFixedInfo); pFixedInfo = NULL; }
下一個步驟: 使用 GetAdaptersInfo 管理網路介面卡
上一個步驟: 建立基本 IP 協助程式應用程式