Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Функция GetNetworkParams извлекает сетевые параметры для локального компьютера.
Синтаксис
IPHLPAPI_DLL_LINKAGE DWORD GetNetworkParams(
[out] PFIXED_INFO pFixedInfo,
[in] PULONG pOutBufLen
);
Параметры
[out] pFixedInfo
Указатель на буфер, содержащий структуру FIXED_INFO , которая получает сетевые параметры для локального компьютера, если функция выполнена успешно. Этот буфер должен быть выделен вызывающим объектом перед вызовом функции GetNetworkParams .
[in] pOutBufLen
Указатель на переменную ULONG , указывающую размер структуры FIXED_INFO . Если этого размера недостаточно для хранения сведений, GetNetworkParams заполняет эту переменную требуемым размером и возвращает код ошибки ERROR_BUFFER_OVERFLOW.
Возвращаемое значение
Если функция завершается успешно, возвращаемое значение будет ERROR_SUCCESS.
Если функция завершается сбоем, возвращаемое значение представляет собой один из следующих кодов ошибок.
| Код возврата | Описание |
|---|---|
|
Буфер для получения сведений о параметрах сети слишком мал. Это значение возвращается, если параметр pOutBufLen слишком мал для хранения сведений о параметрах сети или параметр pFixedInfo был указателем NULL . При возврате этого кода ошибки параметр pOutBufLen указывает на требуемый размер буфера. |
|
В функцию передан недопустимый параметр. Эта ошибка возвращается, если параметр pOutBufLen является указателем NULL , вызывающий процесс не имеет доступа на чтение и запись к памяти, на которую указывает pOutBufLen, или вызывающий процесс не имеет доступа на запись в память, на которую указывает параметр pFixedInfo . |
|
Сведения о параметрах сети для локального компьютера отсутствуют. |
|
Функция GetNetworkParams не поддерживается операционной системой, работающей на локальном компьютере. |
|
Если функция завершается сбоем, используйте FormatMessage , чтобы получить строку сообщения для возвращаемой ошибки. |
Комментарии
Функция GetNetworkParams используется для получения параметров сети для локального компьютера. Параметры сети возвращаются в структуре FIXED_INFO . Память для структуры FIXED_INFO должна быть выделена приложением. Приложение несет ответственность за освобождение этой памяти, когда она больше не нужна.
В microsoft пакет средств разработки программного обеспечения для Windows (SDK) определена структура FIXED_INFO_WIN2KSP1. При компиляции приложения, если целевой платформой является Windows 2000 с пакетом обновления 1 (SP1) и более поздних версий (NTDDI_VERSION >= NTDDI_WIN2KSP1, _WIN32_WINNT >= 0x0501или WINVER >= 0x0501), структура FIXED_INFO_WIN2KSP1 вводится в структуру FIXED_INFO . При компиляции приложения, если целевая платформа не является Windows 2000 с пакетом обновления 1 (SP1) и более поздних версий, структура FIXED_INFO не определена.
Функция GetNetworkParams и структура FIXED_INFO поддерживаются в Windows 98 и более поздних версий. Но для создания приложения для целевой платформы, предшествующей Windows 2000 с пакетом обновления 1 (SP1), необходимо использовать более раннюю версию пакета SDK для платформы.
Примеры
В следующем примере извлекаются параметры сети для локального компьютера и выводится информация из возвращенных данных.
//
// 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 Профессиональная [классические приложения | Приложения UWP] |
| Минимальная версия сервера | Windows 2000 Server [классические приложения | Приложения UWP] |
| Целевая платформа | Windows |
| Header | iphlpapi.h |
| Библиотека | Iphlpapi.lib |
| DLL | Iphlpapi.dll |