次の方法で共有


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

関連項目

非同期印刷通知インターフェイス

IPrintAsyncNotifyChannel

印刷