WPUQueryBlockingCallback 函数 (ws2spi.h)

WPUQueryBlockingCallback 函数返回指向服务提供程序应在维护阻塞操作时定期调用的回调函数的指针。

语法

int WPUQueryBlockingCallback(
  [in]  DWORD              dwCatalogEntryId,
  [out] LPBLOCKINGCALLBACK *lplpfnCallback,
  [out] PDWORD_PTR         lpdwContext,
  [out] LPINT              lpErrno
);

参数

[in] dwCatalogEntryId

标识调用服务提供程序的描述符。

[out] lplpfnCallback

接收阻止回调函数的指针。

[out] lpdwContext

接收服务提供程序必须传入阻止回调的上下文值的指针。

[out] lpErrno

指向错误代码的指针。

返回值

如果未发生错误, WPUQueryBlockingCallback 将返回零,并将指向阻止回调函数的指针存储在 lpfnCallback 中,并将关联的上下文值存储在 lpdwContext 中。 否则,它将返回SOCKET_ERROR,并且 lpErrno 中提供了特定的错误代码。

错误代码 含义
WSAEFAULT
lpfnCallbacklpdwContext 参数不是进程地址空间的有效部分。
WSAEINVAL
dwCatalogEntryId 参数无效。
 
 

注解

WPUQueryBlockingCallback 函数返回指向 lpfnCallback 中回调函数的指针,该函数将在阻塞操作期间定期调用。 此函数还返回 lpdwContext 中要传递到阻塞回调中的上下文值。

在 Windows 中,此函数可以在 lpfnCallback 中返回 null,指示未安装用户定义的阻止挂钩。 在这种情况下,服务提供程序应使用本机 Windows 同步对象来实现阻止。

LPBLOCKINGCALLBACK 的定义如下:

typedef BOOL ( CALLBACK FAR * LPBLOCKINGCALLBACK )( DWORD dwContext );

如果服务提供程序要继续等待阻止操作完成,则阻止回调将返回 TRUE 。 如果已使用 WSPCancelBlockingCall 取消阻止操作,它将返回 FALSE

如果可能,地址中缺少的任何组件都将默认为合理的值。 例如,缺少的端口号将默认为零。

要求

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

另请参阅

WSPCancelBlockingCall