функция обратного вызова 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:
Код возврата | Описание |
---|---|
|
Указан недопустимый параметр. |
|
Не удается разрешить имя узла. |
|
Функция успешно завершена. Если приложение WSK указало указатель на IRP в Параметр Irp , IRP будет завершен с состоянием успешного выполнения. |
|
Подсистеме WSK не удалось выполнить функцию немедленно. Подсистема WSK завершит IRP после завершения операции управления. Состояние операции управления будет возвращено в поле IoStatus.Status IRP. |
|
Произошла ошибка. IRP будет завершен с состоянием сбоя. |
Комментарии
Процесс, на который указывает параметр OwningProcess , или поток, на который указывает процесс OwningThread , указывает контекст безопасности для этой функции. Учетная запись пользователя, обозначенная контекстом безопасности, указывает контекст для запроса разрешения имен функции.
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Доступно в Windows 7 и более поздних версиях операционных систем Windows. |
Целевая платформа | Универсальное |
Верхняя часть | wsk.h (включая Wsk.h) |
IRQL | PASSIVE_LEVEL |