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
リッスンしているアプリケーションが Print Spooler でホストされるコンポーネントを呼び出すために使用するオブジェクトへのポインター。 方向性が kUniDirectional の場合は NULL にする必要があります。
[out] ppIAsynchNotification
新しいチャネルへのポインター。
戻り値
HRESULT | 重大度 | 説明 |
---|---|---|
S_OK | SUCCESS | 関数は正常に終了しました。 |
CHANNEL_ALREADY_OPENED | ERROR | チャネルは既に開かれています。 |
MAX_CHANNEL_COUNT_EXCEEDED | ERROR | 指定したキューまたはプリント サーバーに対して、指定した種類の通知に対して既に登録されているリッスン しているアプリケーションの最大数。 既定の最大値は 10,000 です。 |
戻り値は COM エラー コードです。 この関数は操作を正常に完了しても、S_OK以外の HRESULT を返す可能性があるため、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 を呼び出します。ただし、 CreatePrintAsyncNotifyChannel の呼び出しの直後に IPrintAsyncNotifyChannel::CloseChannel を呼び出すことはできません。
IPrintAsyncNotifyChannel::Release() のみを呼び出します。
- 以前の IPrintAsyncNotifyChannel::AddRef() 呼び出しと明示的に一致する場合は 。
- チャネルが UniDirectional チャネルであり、CreatePrintAsyncNotifyChannel の正常な呼び出しで受信したポインターを破棄する場合。
- 場合は、BiDirectional チャネルを作成した後、または IPrintNotifyAsyncCallback::OnEventNotify と の実装で、
- IPrintAsyncNotifyChannel::SendNotification または IPrintAsyncNotifyChannel::CloseChannel OR を呼び出さなかった
- OR に失敗した IPrintAsyncNotifyChannel::SendNotification または IPrintAsyncNotifyChannel::CloseChannel の呼び出しを再試行しませんでした
- サーバー側で、戻り値 NO_LISTENER OR で成功した IPrintAsyncNotifyChannel::SendNotification の呼び出しを再試行しませんでした
- クライアント側では、戻り値CHANNEL_ACQUIREDで成功した IPrintAsyncNotifyChannel::SendNotification の呼び出しを再試行しませんでした。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows Vista [デスクトップ アプリのみ] |
サポートされている最小のサーバー | Windows Server 2008 [デスクトップ アプリのみ] |
対象プラットフォーム | Windows |
ヘッダー | prnasnot.h |
Library | Winspool.lib |
[DLL] | Spoolss.dll |