ISSAsynchStatus::Abort (OLE DB)
非同期に実行されている操作をキャンセルします。
構文
HRESULT Abort(
HCHAPTER hChapter,
DBASYNCHOP eOperation);
引数
- hChapter[in]
操作を中止するチャプタのハンドル。呼び出し中のオブジェクトが行セット オブジェクトではない場合、または操作がチャプタに適用されない場合は、呼び出し元では hChapter を DB_NULL_HCHAPTER に設定する必要があります。
eOperation[in]
中止する操作。この引数には、DBASYNCHOP_OPEN を設定する必要があります。キャンセル要求は、非同期に行セットを開いたり、非同期に行セットのデータを設定する場合、または非同期にデータ ソース オブジェクトを初期化する場合に適用されます。
リターン コード値
- S_OK
非同期操作をキャンセルする要求が処理されました。ただし、その操作自体がキャンセルされることが保証されるわけではありません。実際に操作がキャンセルされたかどうか判断するには、コンシューマで ISSAsynchStatus::GetStatus を呼び出し、DB_E_CANCELED が返されるかどうかを調べる必要があります。ただし、要求直後に呼び出しても、この値が返されないことがあります。
- DB_E_CANTCANCEL
非同期操作をキャンセルできません。
- DB_E_CANCELED
非同期操作を中止する要求は、通知中にキャンセルされました。操作は引き続き非同期に実行されます。
- E_FAIL
プロバイダ固有のエラーが発生しました。
- E_INVALIDARG
hChapter パラメータが DB_NULL_HCHAPTER でないか、eOperation が DBASYNCH_OPEN ではありません。
E_UNEXPECTED
IDBInitialize::Initialize が呼び出されていないデータ ソース オブジェクトに対して ISSAsynchStatus::Abort が呼び出されました。または、IDBInitialize::Initialize が呼び出されたデータ ソース オブジェクトに対して ISSAsynchStatus::Abort が呼び出されましたが、そのキャンセルが初期化前に行われました。データ ソース オブジェクトはまだ初期化されていないことになります。
以前に ITransaction::Commit または ITransaction::Abort が呼び出された行セットに対して ISSAsynchStatus::Abort が呼び出された場合もこの値が返されます。この行セットはコミットまたはアボートの後に保持されず、ゾンビ状態になります。
初期化フェーズで非同期にキャンセルされた行セットに対して ISSAsynchStatus::Abort が呼び出された場合も、この値が返されます。行セットはゾンビ状態になります。
解説
行セットまたはデータ ソース オブジェクトの初期化を中止すると、その行セットまたはデータ ソース オブジェクトはゾンビ状態になり、IUnknown メソッド以外のすべてのメソッドから E_UNEXPECTED が返されます。この状態になると、コンシューマはその行セットまたはデータ ソース オブジェクトの解放しか実行できません。
eOperation に DBASYNCHOP_OPEN 以外の値を渡して ISSAsynchStatus::Abort を呼び出すと、S_OK が返されます。これは、操作が完了したかキャンセルされたことを示すわけではありません。