次の方法で共有


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 以外のリターン コードを返します。 ドライバー マネージャーは、たとえば、非同期操作が完了することを事前にアプリケーションに通知するために、この情報を使用できます。

HandleHandleType で指定された型の有効なハンドルでない場合、SQLCancelHandle は SQL_INVALID_HANDLE を返します。

返品

SQL_SUCCESS または SQL_ERROR。

診断

SQLAsyncNotificationCallback は、次の 2 つの状況で SQL_ERROR を返すことがあります (これらは、ドライバーまたはドライバー マネージャーでの実装の問題を示します)。

エラー 説明
接続またはステートメントが通知を要求しませんでした。
ハンドルが無効です ドライバーが無効なハンドルで渡され、ドライバー マネージャーの内部検証テストが失敗しました。

参照

非同期実行 (ポーリング メソッド)