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

本地主机的结果仅在 NodeName 参数中返回其相对可分辨名称 (RDN)。

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]一个可选指针,指向函数从中检索安全上下文的线程。 仅当 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