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]指向通过 的 WskProviderNpi 参数返回的 WSK_CLIENT 结构的指针 WskCaptureProviderNPI 函数。

[in] SockAddr

[in]指向 SOCKADDR 结构的指针,该结构包含套接字的 IP 地址和端口号。

[in] SockAddrLength

[in]指定 SockAddr 参数指向的缓冲区的长度(以字节为单位)。 SockAddrLength 的值不应超过SOCKADDR_STORAGE结构的大小。

[out, optional] NodeName

[out]指向 UNICODE_STRING 结构的可选指针,该结构包含一个 Unicode 字符串,该字符串表示主机 (节点) 名称。 成功后,Unicode 主机名将默认写入为完全限定的域名 (FQDN) 。 调用方必须提供足够大的UNICODE_STRING缓冲区来保存 Unicode 主机名,其中包括终止 NULL 字符。 如果 NodeBuffer 参数为 NULL,则调用方不希望接收主机名字符串。 NodeBufferServiceBuffer 不得同时为 NULL

[out, optional] ServiceName

[out]指向 UNICODE_STRING 结构的可选指针,该结构包含表示与端口号关联的服务名称的 Unicode 字符串。 调用方必须提供足够大的UNICODE_STRING缓冲区来保存 Unicode 服务名称,其中包括终止 NULL 字符。 如果 NodeBuffer 参数为 NULL,则调用方不希望接收服务名称字符串。 NodeBufferServiceBuffer 不得同时为 NULL

[in] Flags

[in]一个 ULONG 值,用于自定义此函数的处理。

以下标志可用:

NI_DGRAM

指示服务是数据报服务。 对于为 UDP 和 TCP 服务提供不同端口号的少数服务,此标志是必需的。

NI_NAMEREQD

指示 DNS 无法解析的主机名会导致错误。

NI_NOFQDN

导致本地主机只有其相对可分辨名称 (RDN) 在 NodeName 参数中返回。

NI_NUMERICHOST

指示函数返回主机名的数值形式,而不是其名称(反向 DNS 查找)。 如果 DNS 无法解析主机名,则还会返回主机名的数值形式。

NI_NUMERICSERV

指示函数返回服务的端口号,而不是其名称。 此外,如果找不到 (127.0.0.2 的 IP 地址的主机名(例如) ),则主机名将作为 IP 地址返回。

[in, optional] OwningProcess

[in]指向函数从中检索安全上下文的进程的可选指针。 此安全上下文指示函数在其中处理名称解析请求的用户帐户上下文。

如果此参数为 NULL,则该函数在具有最小特权的预定义本地帐户的上下文中处理名称解析请求。

如果此参数不为 NULL ,并且模拟令牌对调用线程有效,则此函数将失败并返回STATUS_INVALID_PARAMETER。

[in, optional] OwningThread

[in]指向函数从中检索安全上下文的线程的可选指针。 仅当 OwningProcess 为非 NULL 时,此参数才能为非 NULL。 否则,此函数将失败并返回STATUS_INVALID_PARAMETER。

如果此参数不为 NULL ,并且模拟令牌对调用线程有效,则此函数将失败并返回STATUS_INVALID_PARAMETER。

[in, out] Irp

[in/out]指向 I/O 请求数据包的指针, (IRP) 用于异步完成请求。 请求完成后, Irp ->Iostatus.Information 将保存返回的状态代码。

返回值

WskGetNameInfo 返回以下 NTSTATUS 代码之一:

返回代码 说明
STATUS_INVALID_PARAMETER
指定的参数无效。
STATUS_NO_MATCH
无法解析主机名。
STATUS_SUCCESS
函数已成功完成。 如果 WSK 应用程序在 中指定了指向 IRP 的指针 Irp 参数,IRP 将以成功状态完成。
STATUS_PENDING
WSK 子系统无法立即完成函数。 WSK 子系统将在完成控制操作后完成 IRP。 将在 IRP 的 IoStatus.Status 字段中返回控制操作的状态。
其他状态代码
出现了错误。 IRP 将以失败状态完成。

注解

OwningProcess 参数指向的进程或 OwningThread 进程指向的线程指示此函数的安全上下文。 安全上下文指示的用户帐户指示函数的名称解析请求的上下文。

要求

要求
最低受支持的客户端 在 Windows 7 及更高版本的 Windows 操作系统中可用。
目标平台 通用
标头 wsk.h (包括 Wsk.h)
IRQL PASSIVE_LEVEL

另请参阅

SOCKADDR

SOCKADDR_STORAGE

UNICODE_STRING

WSK_CLIENT

WskCaptureProviderNPI

WskGetAddressInfo