Windows CPI-C 注意事项

以下通信通用编程接口 (CPI-C) 调用和 Windows 扩展特别重要。 在使用 Host Integration Server 之前,应查看它们。

注意

调用的名称是假名。 实际的 C 函数名称显示在假名后的括号中。 例如, Set_Processing_Mode 是调用的假名。 实际函数名称为 cmspm

Set_Processing_Mode ( cmspm)
指定会话的后续调用是在他们请求的操作完成时返回 (阻止) ,还是在启动操作后立即返回 (非阻止) 。 当程序发出 Wait_For_Conversation 或通过发送到Specify_Windows_Handle中 由 hwndNotify 标识的 WndProc 的 Windows 消息时,会通知 程序完成非阻止调用。 为聊天设置处理模式时,它将应用于会话的所有后续调用,直到再次设置该模式。

Specify_Windows_Handle ( xchwnd)
设置在非阻止模式下完成操作时向其发送消息的窗口句柄。

Wait_For_Conversation ( cmwait)
等待处理模式会话特征设置为 CM_NON_BLOCKING 并在 return_code 参数中返回CM_OPERATION_INCOMPLETE时启动 的操作 完成。 运行适用于 Microsoft Windows 的后台线程或单线程应用程序时,请使用 Wait_For_Conversation 。 从旧版 Host Integration Server 和 SNA 服务器移植代码时,最有可能发生这种情况。

重要

应用程序可以通过调用 Set_Processing_Mode 来设置处理模式。 如果窗口句柄设置为 NULL,或者从不发出此调用,则应用程序必须调用 Wait_For_Conversation 才能在未完成的操作完成时收到通知。

异步操作完成后,应用程序窗口 hwndNotify 将接收 RegisterWindowMessage 返回的消息,并将“WinAsyncCPIC”作为输入字符串。 wParam 值包含正在完成的操作的聊天返回代码。 其值取决于最初发出的操作。 lParam 参数包含原始函数调用中指定的会话标识符CM_PTR。

WinCPICCleanup
从 Windows CPI-C 实现终止和注销应用程序。

重要

完成从 Windows CPI-C 实现中注销应用程序时,应用程序必须调用此函数。

WinCPICExtractEvent
为应用程序提供一种方法,用于确定用于 CPI-C 会话的事件句柄。

WinCPICIsBlocking
确定任务是否正在执行,同时等待上一个阻止调用完成。 这在 Windows 版本 3 时使用。x 进入 PeekMessageLoop ,同时允许 Windows 继续。 尽管对阻止函数发出的调用似乎对应用程序而言是阻止的,但 Windows CPI-C 动态链接库 (DLL) 必须放弃处理器才能允许其他应用程序运行。 这意味着,发出阻止调用的应用程序可能会重新输入,具体取决于它收到的消息。 在此实例中, WinCPICIsBlocking 可用于确定应用程序任务当前是否在等待未完成的阻止调用完成时重新输入。

此扩展旨在向编写为使用 Windows Specify_Processing_Mode 函数CM_BLOCKING特征的应用程序提供帮助。 WinCPICIsBlocking 与 Windows API 中的 InSendMessage 具有相同的用途。

最初面向 Windows 版本 3 的较旧应用程序。支持 多个会话的 x 和 必须在 Specify_Processing_Mode 中指定CM_NONBLOCKING,以便它们可以同时支持多个未完成的操作。 在所有环境中,每个会话的应用程序仍限制为一个未完成的操作。

注意

Windows CPI-C 禁止每个线程有多个未完成的阻塞调用。

WinCPICSetBlockingHook
允许 Windows CPI-C 实现通过新函数阻止 CPI-C 函数调用。 仅当不使用异步调用时,阻止调用才适用。 如果函数需要阻止,则会重复调用阻塞调用,直到原始请求完成。 这允许 Windows 在原始应用程序等待调用返回时继续运行。 请注意,在阻止调用中,可以重新输入应用程序。 Windows 版本 3 使用了 WinCPICSetBlockingHook进入PeekMessageLoop 以在不阻止系统其余部分的情况下进行阻止调用的 x 应用程序。

注意

默认情况下,Windows Server 不会进入 PeekMessageLoop。 相反,它们会阻止等待调用完成的事件。 唯一需要使用适用于 Windows 的 WinCPICSetBlockingHook 时,Windows 的单线程应用程序共享通用源代码。 在这种情况下,必须显式进行此调用。 将此调用与 WinCPICIsBlockingWinCPICUnhookBlockingHook 对比。

WinCPICSetEvent
将 Win32 事件句柄与谓词完成相关联。

WinCPICStartup
允许应用程序指定所需的 Windows CPI-C 版本并检索特定 CPI-C 实现的详细信息。

重要

在发出任何进一步的 Windows CPI-C 调用之前,应用程序必须调用此函数以向 Windows CPI-C 实现注册自身。

WinCPICUnhookBlockingHook
删除以前安装的任何阻止挂钩,并重新安装默认阻止机制。