LPNSPGETSERVICECLASSINFO 回调函数 (ws2spi.h)

NSPGetServiceClassInfo 函数检索与命名空间提供程序相关的所有相关的类信息 (架构) 。 此调用检索服务的所有实例通用的任何特定于命名空间的信息,包括 SAP 的连接信息,或 SAP 或 TCP 的端口信息。

语法

LPNSPGETSERVICECLASSINFO Lpnspgetserviceclassinfo;

INT Lpnspgetserviceclassinfo(
  [in]      LPGUID lpProviderId,
  [in, out] LPDWORD lpdwBufSize,
  [in, out] LPWSASERVICECLASSINFOW lpServiceClassInfo
)
{...}

参数

[in] lpProviderId

指向要从中检索服务类架构的特定命名空间提供程序的 GUID 的指针。

[in, out] lpdwBufSize

输入时, lpServiceClassInfo 参数指向的缓冲区的大小(以字节为单位)。

在输出时,如果函数失败且错误为 WSAEFAULT,则此参数指定指向检索记录所需的 lpServiceClassInfo 参数的缓冲区的最小大小(以字节为单位)。

[in, out] lpServiceClassInfo

返回指向 WSASERVICECLASSINFOW 结构的指针,该结构包含特定于命名空间的映射信息的服务类。 必须填充 lpServiceClassId 参数,以指示应返回哪个 WSASERVICECLASSINFOW 记录。

返回值

如果未发生错误, NSPGetServiceClassInfo 函数将返回 NO_ERROR ( 零) 。 否则, 将返回SOCKET_ERROR (–1) ,并且命名空间提供程序必须使用 WSASetLastError 设置相应的错误代码。

错误代码 含义
WSA_NOT_ENOUGH_MEMORY
没有足够的内存可用于执行此操作。
WSAEACCES
调用例程没有足够的权限来访问信息。
WSAEFAULT
lpServiceClass 参数指向的缓冲区太小,无法包含 WSASERVICECLASSINFOW 结构。 应用程序需要传入更大的缓冲区。
WSAEINVAL
指定的服务类标识符或命名空间提供程序标识符无效。 如果 lpProviderIdlpServiceClassIdlpdwBufSizelpServiceClassInfo 参数为 NULL,则返回此错误。
WSAEOPNOTSUPP
此操作不受支持。 如果命名空间提供程序未实现此函数,则返回此错误。
WSANO_DATA
请求的名称有效,但找不到请求的类型的数据。
WSATYPE_NOT_FOUND
未找到指定的类。

注解

W2_32.dll 使用此函数来实现 WSAGetServiceClassNameByClassId 函数,以及检索传递给 NSPLookupServiceBeginNSPSetService 函数的特定于命名空间的信息。

要求

   
最低受支持的客户端 Windows 2000 Professional [仅限桌面应用]
最低受支持的服务器 Windows 2000 Server [仅限桌面应用]
目标平台 Windows
标头 ws2spi.h

另请参阅

NSPInstallServiceClass

NSPLookupServiceBegin

NSPRemoveServiceClass

NSPSetService

WSAGetServiceClassInfo

WSAGetServiceClassNameByClassId

WSASERVICECLASSINFOW

WSASetLastError