Поделиться через


Функция DhcpRequestParams (dhcpcsdk.h)

Функция DhcpRequestParams позволяет вызывающим абонентам синхронно или синхронно и постоянно получать данные DHCP с DHCP-сервера.

Синтаксис

DWORD DhcpRequestParams(
  [in]      DWORD                 Flags,
  [in]      LPVOID                Reserved,
  [in]      LPWSTR                AdapterName,
  [in]      LPDHCPCAPI_CLASSID    ClassId,
  [in]      DHCPCAPI_PARAMS_ARRAY SendParams,
  [in, out] DHCPCAPI_PARAMS_ARRAY RecdParams,
  [in]      LPBYTE                Buffer,
  [in, out] LPDWORD               pSize,
  [in]      LPWSTR                RequestIdStr
);

Параметры

[in] Flags

Флаги, указывающие запрашиваемые данные. Этот параметр является необязательным. Поддерживаются следующие возможные значения, которые не являются взаимоисключающими:

Значение Значение
DHCPCAPI_REQUEST_PERSISTENT
Запрос сохраняется, но параметры не извлекаются.
DHCPCAPI_REQUEST_SYNCHRONOUS
Параметры будут получены с сервера.

[in] Reserved

Зарезервировано для последующего использования. Для параметра должно быть задано значение NULL.

[in] AdapterName

GUID адаптера, для которого производятся запрошенные данные. Должно быть не более 256 символов.

[in] ClassId

Идентификатор класса (ID), который следует использовать, если сообщения DHCP INFORM передаются в сеть. Этот параметр является необязательным.

[in] SendParams

Необязательные данные для запроса в дополнение к данным, запрашиваемым в массиве RecdParams . Параметр SendParams не может содержать стандартные параметры, которые DHCP-клиент отправляет по умолчанию.

[in, out] RecdParams

Массив данных DHCP, которые требует получить вызывающий объект. Этот массив должен быть пустым до вызова функции DhcpRequestParams .

[in] Buffer

Буфер, используемый для хранения данных, связанных с запросами, выполненными в RecdParams.

[in, out] pSize

Размер буфера.

Требуемый размер буфера, если он недостаточно для хранения данных, в противном случае указывает на размер буфера, который был успешно заполнен.

[in] RequestIdStr

Идентификатор приложения (ID), используемый для упрощения постоянного запроса. Должен быть печатаемой строкой без специальных символов (не могут использоваться запятые, обратные косые черты, двоеточия или другие недопустимые символы). Указанный идентификатор приложения (ID) используется в последующем вызове функции DhcpUndoRequestParams для очистки постоянного запроса при необходимости.

Возвращаемое значение

Возвращает ERROR_SUCCESS после успешного завершения.

После возврата RecdParams заполняется указателями на запрошенные данные, а соответствующие данные помещаются в буфер. Если pSize указывает, что буферу недостаточно места для хранения возвращаемых данных, функция DhcpRequestParams возвращает ERROR_MORE_DATA и возвращает требуемый размер буфера в pSize. Обратите внимание, что требуемый размер буфера может увеличиваться в течение времени, прошедшего между возвратом исходного вызова функции и последующим вызовом. Таким образом, требуемый размер Buffer (указанный в pSize) указывает на приблизительный размер, требуемый для Buffer, а не гарантирует, что последующие вызовы будут успешно возвращены, если параметр Buffer имеет размер, указанный в pSize.

Другие ошибки возвращают соответствующие коды ошибок Windows.

Код возврата Описание
ERROR_INVALID_PARAMETER
Возвращается, если параметр AdapterName содержит более 256 символов.
ERROR_BUFFER_OVERFLOW
Возвращается, если параметр AdapterName содержит более 256 символов.

Комментарии

DHCP-клиенты хранят данные, полученные с DHCP-сервера, в локальном кэше. Если кэш DHCP-клиента содержит все данные, запрашиваемые в массиве RecdParams вызова функции DhcpRequestParams , клиент возвращает данные из своего кэша. Если запрошенные данные недоступны в кэше клиента, клиент обрабатывает вызов функции DhcpRequestParams , отправляя сообщение DHCP-INFORM на DHCP-сервер.

Когда клиент отправляет сообщение DHCP-INFORM на DHCP-сервер, он включает все запросы, предоставленные в необязательном параметре SendParams , и предоставляет идентификатор класса (ID), указанный в параметре ClassId , если он указан.

Клиенты также могут указать, что данные DHCP будут извлекаться с DHCP-сервера при каждой загрузке DHCP-клиента, что считается постоянным запросом. Чтобы включить постоянные запросы, вызывающий объект должен указать параметр RequestIdStr , а также указать дополнительный флаг DHCPAPI_REQUEST_PERSISTENT в параметре dwFlags . Эта возможность постоянных запросов особенно полезна, когда клиентам необходимо автоматически запрашивать критически важные для приложения сведения при каждой загрузке. Чтобы отключить запрос на сохранение, клиенты должны вызвать функцию .

Примечание Вызывающие стороны этого API не должны выполнять блокирующие вызовы этого API, так как для возврата кода или состояния может потребоваться до 2 минут. Поведение пользовательского интерфейса, в частности, не должно блокироваться при возвращении этого вызова, так как это может привести к значительной задержке времени отклика пользовательского интерфейса.
 
Дополнительные сведения о сообщениях DHCP INFORM и другие сведения о DHCP на основе стандартов см. в статье Стандарты DHCP.

Сведения об использовании функции DhcpRequestParams см. в разделе Примеры DHCP.

Требования

   
Минимальная версия клиента Windows 2000 Профессиональная [классические приложения | Приложения UWP]
Минимальная версия сервера Windows 2000 Server [классические приложения | Приложения UWP]
Целевая платформа Windows
Header dhcpcsdk.h
Библиотека Dhcpcsvc.lib
DLL Dhcpcsvc.dll

См. также раздел

Функции DHCP

DHCPCAPI_PARAMS_ARRAY

DhcpCApiInitialize

DhcpUndoRequestParams