Функция CreatePrintAsyncNotifyChannel (prnasnot.h)
Создает канал связи между компонентом печати, размещенным в очереди печати, например драйвером печати или монитором портов, и приложением, которое получает уведомления от компонента.
Синтаксис
HRESULT CreatePrintAsyncNotifyChannel(
[in] PCWSTR pszName,
[in] PrintAsyncNotificationType *pNotificationType,
[in] PrintAsyncNotifyUserFilter eUserFilter,
[in] PrintAsyncNotifyConversationStyle eConversationStyle,
[in] IPrintAsyncNotifyCallback *pCallback,
[out] IPrintAsyncNotifyChannel **ppIAsynchNotification
);
Параметры
[in] pszName
Указатель на имя сервера печати или очереди печати.
[in] pNotificationType
Указатель на GUID схемы данных для типа уведомлений, отправляемых в канале.
[in] eUserFilter
Значение , указывающее, будут ли отправляться уведомления:
- Только приложения, работающие от имени того же пользователя, что и отправитель подключаемого модуля, размещенного в очереди печати.
- Более широкий набор прослушивающих приложений.
[in] eConversationStyle
Значение типа , указывающее, является ли обмен данными двунаправленным или однонаправленным.
[in] pCallback
Указатель на объект, который прослушивающее приложение будет использовать для обратного вызова компонента, размещенного в очереди очереди печати. Значение должно иметь значение NULL , если направление имеет значение kUniDirectional.
[out] ppIAsynchNotification
Указатель на новый канал.
Возвращаемое значение
HRESULT | Severity | Значение |
---|---|---|
S_OK | УСПЕШНОЕ ЗАВЕРШЕНИЕ | Функция успешно завершена. |
CHANNEL_ALREADY_OPENED | ОШИБКА | Канал уже открыт. |
MAX_CHANNEL_COUNT_EXCEEDED | ОШИБКА | Максимальное число прослушивающих приложений, уже зарегистрированных для указанного типа уведомлений с указанной очередью или сервером печати. Максимальное значение по умолчанию — 10 000. |
Возвращаемыми значениями являются коды ошибок COM. Так как эта функция может успешно завершить операцию, но вернуть HRESULT , отличный от S_OK для определения успешности вызова следует использовать макрос SUCCEEDED или FAILED. Чтобы получить определенный HRESULT , возвращенный функцией, используйте макрос HRESULT_CODE.
В следующем примере кода показано, как эти макросы можно использовать для оценки возвращаемого значения.
if (SUCCEEDED(hr)){
//Call was successful
}
if (FAILED(hr)) {
// Call failed
}
if (FAILED(hr)) {
// Call failed
switch (HRESULT_CODE(hr)){
case CHANNEL_ALREADY_OPENED:
// Some action
break;
case MAX_CHANNEL_COUNT_EXCEEDED:
// Some action
break;
default:
//Default action
break;
}
} else {
//call succeeded
}
Дополнительные сведения о кодах ошибок COM см. в разделе Обработка ошибок.
Другие возможные возвращаемые значения см. в разделе PrintAsyncNotifyError .
Комментарии
Чтобы закрыть канал, вызовите метод IPrintAsyncNotifyChannel::CloseChannel; Однако метод IPrintAsyncNotifyChannel::CloseChannel не может быть вызван сразу после вызова Метода CreatePrintAsyncNotifyChannel.
Вызовите только IPrintAsyncNotifyChannel::Release():
- Значение , если это явное совпадение с более ранним вызовом IPrintAsyncNotifyChannel::AddRef().
- Значение , если канал является каналом UniDirectional и вы отказались от указателя, полученного при успешном вызове CreatePrintAsyncNotifyChannel.
- Если после создания двунаправленного канала или в реализации IPrintNotifyAsyncCallback::OnEventNotify и:
- вы не вызывали IPrintAsyncNotifyChannel::SendNotification или IPrintAsyncNotifyChannel::CloseChannel OR
- вы не повторяли вызов IPrintAsyncNotifyChannel::SendNotification или IPrintAsyncNotifyChannel::CloseChannel, в результате чего произошел сбой ИЛИ
- на стороне сервера вы не повторяли вызов IPrintAsyncNotifyChannel::SendNotification, который успешно завершился с возвращаемым значением NO_LISTENER ИЛИ.
- на стороне клиента вы не повторяли вызов IPrintAsyncNotifyChannel::SendNotification, который успешно завершился с возвращаемым значением CHANNEL_ACQUIRED.
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Windows Vista [только классические приложения] |
Минимальная версия сервера | Windows Server 2008 [только классические приложения] |
Целевая платформа | Windows |
Header | prnasnot.h |
Библиотека | Winspool.lib |
DLL | Spoolss.dll |