RegisterForPrintAsyncNotifications 函数 (prnasnot.h)
使应用程序能够注册来自打印后台处理程序托管的打印组件(如打印机驱动程序、打印处理器和端口监视器)的通知。
语法
HRESULT RegisterForPrintAsyncNotifications(
[in] PCWSTR pszName,
[in] PrintAsyncNotificationType *pNotificationType,
[in] PrintAsyncNotifyUserFilter eUserFilter,
[in] PrintAsyncNotifyConversationStyle eConversationStyle,
[in] IPrintAsyncNotifyCallback *pCallback,
[out] HANDLE *phNotify
);
参数
[in] pszName
指向打印服务器或打印队列名称的指针。
[in] pNotificationType
指向应用程序必须接收的通知类型的数据架构 GUID 的指针。
[in] eUserFilter
一个值,指定是否将通知发送到:
- 仅以与打印后台处理程序托管的插件发送方相同的用户身份运行的应用程序。
- 一组更广泛的侦听应用程序。
[in] eConversationStyle
一个值,该值指定通信是双向通信还是单向通信。
[in] pCallback
指向打印后台处理程序托管组件将用于调用应用程序的 对象的指针。 这绝不应为 NULL。
[out] phNotify
指向表示注册的结构的指针。
返回值
HRESULT | 严重性 | 含义 |
---|---|---|
S_OK | 成功 | 函数已成功完成。 |
ALREADY_REGISTERED | ERROR | 已注册对象。 |
LOCAL_ONLY_REGISTRATION | 成功 | 注册本地通知已成功。 未注册远程通知。 |
MAX_REGISTRATION_COUNT_EXCEEDED | ERROR | 已达到最大注册数。 不允许进行更多的注册。 |
REMOTE_ONLY_REGISTRATION | 成功 | 远程通知注册成功。 未注册本地通知。 |
返回值为 COM 错误代码。 由于此函数可能成功完成操作,但返回除S_OK以外的 HRESULT,因此应使用 SUCCEEDED 或 FAILED 宏来确定调用是否成功。 若要获取函数返回的特定 HRESULT,请使用 HRESULT_CODE 宏。
下面的代码示例演示如何使用这些宏来计算返回值。
if (SUCCEEDED(hr)) {
// Call succeeded, check HRESULT value returned
switch (HRESULT_CODE(hr)){
case S_OK:
// Some action
break;
case LOCAL_ONLY_REGISTRATION:
// Some action
break;
case REMOTE_ONLY_REGISTRATION:
// Some action
break;
default:
// Default action
break;
}
} else {
// Call failed, check HRESULT value returned
switch (HRESULT_CODE(hr)){
case ALREADY_REGISTERED:
// Some action
break;
case MAX_REGISTRATION_COUNT_EXCEEDED:
// Some action
break;
default:
// Default action
break;
}
}
有关 COM 错误代码的详细信息,请参阅错误处理。
有关其他可能的返回值,请参阅 PrintAsyncNotifyError 。
注解
由于 RegisterForPrintAsyncNotifications 调用,为 pCallback 对象调用 IUnknown::AddRef 方法。 调用 UnRegisterForPrintAsyncNotifications 将释放 pCallback 对象。 创建通道时 ,pCallback 对象的引用计数也会递增,并在通道关闭时递减。
pSchema 参数是后台处理程序接受并用于筛选侦听器客户端的 GUID 指针。 后台处理程序异步通知机制的任何客户端都可以定义自己的通知类型。 即使后台处理程序不知道发送的通知类型,它仍然根据通知类型筛选侦听器客户端。 pSchema 引用的通知架构是公开 IPrintAsyncNotifyDataObject 的通知对象使用的架构。 后台处理程序通知管道的客户端可以定义自己的数据架构,并且可以来回发送任何数据类型, 并且 pSchema 引用的 GUID 对于该数据架构是唯一的。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows Vista [仅限桌面应用] |
最低受支持的服务器 | Windows Server 2008 [仅限桌面应用] |
目标平台 | Windows |
标头 | prnasnot.h |
Library | WinSpool.lib |
DLL | Spoolss.dll |
另请参阅
反馈
https://aka.ms/ContentUserFeedback。
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈