функция обратного вызова PFN_WSK_GET_NAME_INFO (wsk.h)

Функция WskGetNameInfo обеспечивает независимое от протокола преобразование с транспортного адреса на имя узла.

Синтаксис

PFN_WSK_GET_NAME_INFO PfnWskGetNameInfo;

NTSTATUS PfnWskGetNameInfo(
  [in]            PWSK_CLIENT Client,
  [in]            PSOCKADDR SockAddr,
  [in]            ULONG SockAddrLength,
  [out, optional] PUNICODE_STRING NodeName,
  [out, optional] PUNICODE_STRING ServiceName,
  [in]            ULONG Flags,
  [in, optional]  PEPROCESS OwningProcess,
  [in, optional]  PETHREAD OwningThread,
  [in, out]       PIRP Irp
)
{...}

Параметры

[in] Client

[in] Указатель на структуру WSK_CLIENT , возвращенную с помощью параметра WskProviderNpi объектаФункция WskCaptureProviderNPI.

[in] SockAddr

[in] Указатель на структуру SOCKADDR , содержащую IP-адрес и номер порта сокета.

[in] SockAddrLength

[in] Указывает длину (в байтах) буфера, на который указывает параметр SockAddr . Значение SockAddrLength не должно превышать размер структуры SOCKADDR_STORAGE .

[out, optional] NodeName

[out] Необязательный указатель на структуру UNICODE_STRING , содержащую строку Юникода, представляющую имя узла (узла). При успешном выполнении имя узла Юникода по умолчанию записывается как полное доменное имя (FQDN). Вызывающий объект должен предоставить буфер UNICODE_STRING, достаточно большой для хранения имени узла Юникода, который содержит завершающий символ NULL. Если параметр NodeBuffer имеет значение NULL, вызывающий объект не хочет получать строку имени узла. NodeBuffer и ServiceBuffer не должны иметь значение NULL.

[out, optional] ServiceName

[out] Необязательный указатель на структуру UNICODE_STRING , содержащую строку Юникода, представляющую имя службы, связанное с номером порта. Вызывающий объект должен предоставить буфер UNICODE_STRING достаточно большой для хранения имени службы Юникода, включающего завершающий символ NULL. Если параметр NodeBuffer имеет значение NULL, вызывающий объект не хочет получать строку имени службы. NodeBuffer и ServiceBuffer не должны иметь значение NULL.

[in] Flags

[in] Значение ULONG, используемое для настройки обработки этой функции.

Доступны следующие флаги:

NI_DGRAM

Указывает, что служба является службой датаграмм. Этот флаг необходим для нескольких служб, которые предоставляют разные номера портов для службы UDP и TCP.

NI_NAMEREQD

Указывает, что имя узла, которое не может быть разрешено DNS, приводит к ошибке.

NI_NOFQDN

В результате локальному узлу возвращается только относительное различающееся имя (RDN) в параметре NodeName .

NI_NUMERICHOST

Указывает, что функция возвращает числовую форму имени узла, а не его имя, обратный поиск DNS. Числовая форма имени узла также возвращается, если имя узла не может быть разрешено DNS.

NI_NUMERICSERV

Указывает, что функция возвращает номер порта службы, а не ее имя. Кроме того, если имя узла не найдено для IP-адреса (например, 127.0.0.2), имя узла возвращается в качестве IP-адреса.

[in, optional] OwningProcess

[in] Необязательный указатель на процесс, из которого функция получает контекст безопасности. Этот контекст безопасности указывает контекст учетной записи пользователя, в котором функция обрабатывает запрос разрешения имен.

Если этот параметр имеет значение NULL, функция обрабатывает запрос разрешения имен в контексте предопределенной локальной учетной записи с минимальными привилегиями.

Если этот параметр не имеет значение NULL и для вызывающего потока действует токен олицетворения, эта функция завершается ошибкой и возвращает STATUS_INVALID_PARAMETER.

[in, optional] OwningThread

[in] Необязательный указатель на поток, из которого функция получает контекст безопасности. Этот параметр может иметь значение, отличное от NULL , только если Свойство OwningProcess не равно NULL. В противном случае эта функция завершается сбоем и возвращает STATUS_INVALID_PARAMETER.

Если этот параметр не имеет значение NULL и для вызывающего потока действует токен олицетворения, эта функция завершается ошибкой и возвращает STATUS_INVALID_PARAMETER.

[in, out] Irp

[вход/выход] Указатель на пакет запроса ввода-вывода (IRP), используемый для асинхронного выполнения запроса. По завершении запроса Irp ->Iostatus.Information будет содержать возвращенный код состояния.

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

WskGetNameInfo возвращает один из следующих кодов NTSTATUS:

Код возврата Описание
STATUS_INVALID_PARAMETER
Указан недопустимый параметр.
STATUS_NO_MATCH
Не удается разрешить имя узла.
STATUS_SUCCESS
Функция успешно завершена. Если приложение WSK указало указатель на IRP в Параметр Irp , IRP будет завершен с состоянием успешного выполнения.
STATUS_PENDING
Подсистеме WSK не удалось выполнить функцию немедленно. Подсистема WSK завершит IRP после завершения операции управления. Состояние операции управления будет возвращено в поле IoStatus.Status IRP.
Другие коды состояния
Произошла ошибка. IRP будет завершен с состоянием сбоя.

Комментарии

Процесс, на который указывает параметр OwningProcess , или поток, на который указывает процесс OwningThread , указывает контекст безопасности для этой функции. Учетная запись пользователя, обозначенная контекстом безопасности, указывает контекст для запроса разрешения имен функции.

Требования

Требование Значение
Минимальная версия клиента Доступно в Windows 7 и более поздних версиях операционных систем Windows.
Целевая платформа Универсальное
Верхняя часть wsk.h (включая Wsk.h)
IRQL PASSIVE_LEVEL

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

SOCKADDR

SOCKADDR_STORAGE

UNICODE_STRING

WSK_CLIENT

WskCaptureProviderNPI

WskGetAddressInfo