SQLAsyncNotificationCallback 関数
準拠
導入されたバージョン: ODBC 3.8
標準へのコンプライアンス: なし
まとめ
SQLAsyncNotificationCallback を使用すると、ドライバーが SQL_STILL_EXECUTING を返した後、現在の非同期操作の進行状況がある場合にドライバー マネージャーにコールバックできます。 SQLAsyncNotificationCallback は、ドライバーによってのみ呼び出すことができます。
ドライバーは、関数名 SQLAsyncNotificationCallback で SQLAsyncNotificationCallback を呼び出しません。 代わりに、ドライバー マネージャーは、対応する接続ハンドルまたはステートメント ハンドルの SQL_ATTR_ASYNC_DBC_NOTIFICATION_CALLBACK または SQL_ATTR_ASYNC_STMT_NOTIFICATION_CALLBACK 属性の値として、ドライバーに関数ポインターを渡します。 異なるハンドルには、異なる関数ポインター値の割り当てができます。 関数ポインターの型は、SQL_ASYNC_NOTIFICATION_CALLBACK として定義されます。
SQLAsyncNotificationCallback はスレッド セーフです。 ドライバーは、異なるハンドルで同時に SQLAsyncNotificationCallback を呼び出す複数のスレッドの使用を選択できます。
構文
typedef SQLRETURN (SQL_API *SQL_ASYNC_NOTIFICATION_CALLBACK)(
SQLPOINTER pContex,
BOOL fLast);
引数
pContex
ドライバー マネージャーによって定義されたデータ構造へのポインター。 この値は、SQLSetConnectAttr(SQL_ATTR_ASYNC_DBC_NOTIFICATION_CONTEXT) または SQLSetStmtAttr(SQL_ATTR_ASYNC_STMT_NOTIFICATION_CONTEXT) を介してドライバーに渡されます。 ドライバーは値にアクセスできません。
fLast
このコールバック関数の呼び出しが現在の非同期操作の最後の 1 回の呼び出しであることを示すためにドライバーによって使用されます。 ドライバーマネージャーが関数を再度呼び出すと、ドライバーは SQL_STILL_EXECUTING 以外のリターン コードを返します。 ドライバー マネージャーは、たとえば、非同期操作が完了することを事前にアプリケーションに通知するために、この情報を使用できます。
Handle が HandleType で指定された型の有効なハンドルでない場合、SQLCancelHandle は SQL_INVALID_HANDLE を返します。
返品
SQL_SUCCESS または SQL_ERROR。
診断
SQLAsyncNotificationCallback は、次の 2 つの状況で SQL_ERROR を返すことがあります (これらは、ドライバーまたはドライバー マネージャーでの実装の問題を示します)。
エラー | 説明 |
---|---|
接続またはステートメントが通知を要求しませんでした。 | |
ハンドルが無効です | ドライバーが無効なハンドルで渡され、ドライバー マネージャーの内部検証テストが失敗しました。 |