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


функция обратного вызова 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. Если параметр NodeBufferNULL, вызывающий объект не хочет получать строку имени службы. 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

[in/out] Указатель на пакет запроса ввода-вывода (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 (include Wsk.h)
IRQL PASSIVE_LEVEL

См. также

SOCKADDR

SOCKADDR_STORAGE

UNICODE_STRING

WSK_CLIENT

WskCaptureProviderNPI

WskGetAddressInfo