Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Funkcja GetNetworkParams wypełnia wskaźnik do struktury FIXED_INFO z danymi dotyczącymi bieżących ustawień sieciowych.
Aby użyć polecenia GetNetworkParams
Zadeklaruj wskaźnik do obiektu FIXED_INFO o nazwie pFixedInfoi obiektu ULONG o nazwie ulOutBufLen. Te zmienne są przekazywane jako parametry do funkcji GetNetworkParams. Utwórz również zmienną DWORDdwRetVal (używana do sprawdzania błędów).
FIXED_INFO *pFixedInfo; IP_ADDR_STRING *pIPAddr; ULONG ulOutBufLen; DWORD dwRetVal;Przydziel pamięć dla struktur.
Notatka
Rozmiar ulOutBufLen nie wystarczy do przechowywania informacji. Zobacz następny krok.
pFixedInfo = (FIXED_INFO *) malloc(sizeof (FIXED_INFO)); ulOutBufLen = sizeof (FIXED_INFO);Wykonaj początkowe wywołanie polecenia GetNetworkParams, aby uzyskać rozmiar wymagany dla zmiennej ulOutBufLen.
Notatka
Ta funkcja zakończy się niepowodzeniem i jest używana w celu zapewnienia, że zmienna ulOutBufLen określa rozmiar wystarczający do przechowywania wszystkich danych przekazanych do pFixedInfo. Jest to wspólny model programowania dla struktur danych i funkcji tego typu.
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"); } }Wykonaj drugie wywołanie polecenia GetNetworkParams przy użyciu ogólnego sprawdzania błędów i zwracania jej wartości do zmiennej DWORD dwRetVal; służy do bardziej zaawansowanego sprawdzania błędów.
if (dwRetVal = GetNetworkParams(pFixedInfo, &ulOutBufLen) != NO_ERROR) { printf("GetNetworkParams failed with error %d\n", dwRetVal); if (pFixedInfo) { free(pFixedInfo); } }Jeśli wywołanie zakończyło się pomyślnie, uzyskaj dostęp do danych ze struktury danych 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");Zwolnij dowolną pamięć przydzieloną dla struktury pFixedInfo.
if (pFixedInfo) { free(pFixedInfo); pFixedInfo = NULL; }
Następny krok: Zarządzanie kartami sieciowymi przy użyciu GetAdaptersInfo.
Poprzedni krok: tworzenie podstawowej aplikacji pomocniczej ip