IPrintAsyncNotifyChannel::CloseChannel メソッド (prnasnot.h)
チャネルを閉じます。
構文
HRESULT CloseChannel(
[in] IPrintAsyncNotifyDataObject *pData
);
パラメーター
[in] pData
チャネルが閉じた理由を示す通知へのポインター。 このポインターは NULL にすることができます。
戻り値
HRESULT | 重大度 | 説明 |
---|---|---|
S_OK | SUCCESS | 関数は正常に終了しました。 |
CHANNEL_ACQUIRED |
ERROR or SUCCESS |
このチャネルの別のリスナーが既に応答しています。 送信者との通信を続行できるのは、最初の回答者のみです。
この HRESULT に ERROR 重大度がある場合、呼び出し元の関数はエラー状態を処理する必要があります。 |
CHANNEL_ALREADY_CLOSED |
ERROR or SUCCESS |
チャネルは既に閉じています。 チャネルが既に閉じられ、解放されているため、この HRESULT が返される場合、IPrintAsyncNotifyChannel::Release を呼び出すことはできません。
この HRESULT に ERROR 重大度がある場合、呼び出し元の関数はエラー状態を処理する必要があります。 |
CHANNEL_CLOSED_BY_ANOTHER_LISTENER | ERROR | 呼び出し元以外のリッスン アプリケーションが通信チャネルを閉じました。 |
CHANNEL_CLOSED_BY_SAME_LISTENER | ERROR | 呼び出し元は既に通信チャネルを閉じています。 |
INVALID_NOTIFICATION_TYPE | ERROR | 指定された通知の種類が無効です。 |
戻り値は COM エラー コードです。 この関数は正常に操作を完了しても、S_OK以外の HRESULT を返す可能性があるため、SUCCEEDED または FAILED マクロを使用して呼び出しの成功を確認する必要があります。 関数によって返された特定の HRESULT を取得するには、HRESULT_CODE マクロを使用します。 次のコード例は、これらのマクロを使用する方法を示しています。
その他の戻り値については、「 PrintAsyncNotifyError 」を参照してください。
COM エラー コードの詳細については、「エラー処理」を参照してください。
if (SUCCEEDED(hr)) {
// Call succeeded, check HRESULT value returned
switch (HRESULT_CODE(hr)){
case CHANNEL_ACQUIRED:
// Some action
break;
case CHANNEL_ALREADY_CLOSED:
// Some action
break;
default:
// Default action
break;
}
} else {
// Call failed, check HRESULT value returned
switch (HRESULT_CODE(hr)){
case CHANNEL_CLOSED_BY_ANOTHER_LISTENER:
// Some action
break;
case CHANNEL_CLOSED_BY_SAME_LISTENER:
// Some action
break;
case INVALID_NOTIFICATION_TYPE:
// Some action
break;
case CHANNEL_ACQUIRED:
// This can be an error and a successful return
// some action
break;
case CHANNEL_ALREADY_CLOSED:
// This can be an error and a successful return
// some action
break;
default:
// Default action
break;
}
}
解説
CloseChannel は、通信チャネルの両側 (印刷スプーラーまたはリッスンしているアプリケーションによってホストされるコンポーネント) によって呼び出すことができます。
印刷スプーラーが SendNotification の以前の呼び出しを処理中に IPrintAsyncNotifyChannel::SendNotification 呼び出しが行われた場合、印刷スプーラーは通知をキューに入れます。 印刷スプーラーによってホストされているコンポーネントまたはアプリケーションが CloseChannel を呼び出す場合、キューに登録された通知は破棄されます。
CreatePrintAsyncNotifyChannel の呼び出し直後に CloseChannel を呼び出すことはできません。
要件
サポートされている最小のクライアント | Windows Vista [デスクトップ アプリのみ] |
サポートされている最小のサーバー | Windows Server 2008 [デスクトップ アプリのみ] |
対象プラットフォーム | Windows |
ヘッダー | prnasnot.h |
[DLL] | Prnasnot.dll |