WinAsyncAPPCIOCP

WinAsyncAPPCIOCP 函数为所有 APPC 谓词提供异步入口点。 使用此函数而不是谓词的阻塞版本,以允许使用 I/O 完成端口在同一线程上处理多个会话。 此谓词仅在 Microsoft Windows 上受支持,并且使用 Win32 I/O 完成端口。

语法

  
    HANDLE WINAPI WinAsyncAPPCIOCP(   
APPC_IOCP_INFO *iocp_handle,  
longlpVcb);  

参数

iocp_handle
指向用于传递 I/O 完成端口信息的 APPC_IOCP_INFO 结构的指针。

lpVcb
指向谓词控件块的指针

APPC_IOCP_INFO结构具有以下原型:

  
APPC_CompletionPort;APPC_NumberOfBytesTransferred;  
    APPC_CompletionKey;  
    APPC_pOverlapped;  
  

APPC_CompletionPort

此提供的参数是在创建 I/O 完成端口时调用 CreateIoCompletionPort 函数返回的 HANDLE。 在调用 WinAsyncAPPCIOCP 函数之前,必须创建 I/O 完成端口。 谓词完成后,APPC 库调用 PostQueuedCompletionStatus 函数,并将结构中的剩余字段作为输入,这些字段只是传递到应用程序发出的 GetQueuedCompletionStatus 函数。

APPC_NumberOfBytesTransferred

此提供的参数将被忽略。 APPC 谓词完成后,APPC 库调用 PostQueuedCompletionStatus 函数,并将此字段作为输入,为 dwNumberOfBytesTransferred 返回的值将直接传递到应用程序发出的 GetQueuedCompletionStatus 函数。

APPC_CompletionKey

此提供的参数将被忽略。 APPC 谓词完成后,APPC 库会调用 PostQueuedCompletionStatus 函数,并将此字段作为输入,为 dwCompletionKey 返回的值将直接传递到应用程序颁发的 GetQueuedCompletionStatus 函数。

APPC_pOverlapped

此提供的参数将被忽略。 APPC 谓词完成后,APPC 库调用 PostQueuedCompletionStatus 函数,并将此字段作为输入,为 lpOverlapped 返回的值只需传递到应用程序发出的 GetQueuedCompletionStatus 函数。

返回值

返回值指定异步解析请求是否成功。 如果函数成功,则返回值为异步任务句柄。 如果函数不成功,则返回零。

当此函数返回成功值时,这并不表示 APPC 调用最终将成功返回。 它仅指示 APPC 库可以尝试使用 I/O 完成端口进行异步 APPC 调用以通知。

注解

此函数适用于 Win32 API 中的 CreateIoCompletionPortGetQueuedCompletionStatus 。 Microsoft 平台 SDK 文档的“参考”部分介绍了这些函数。

有关如何在多线程 TP 中使用此谓词的示例,请参阅位于 SNA\MSENDRCV 文件夹中的多线程接收示例 TP (MRCVIO,) 使用 Host Integration Server SDK 中包含的 I/O 完成端口。

可在基本对话中使用的可阻止的 APPC 谓词如下所示: