非同期プロバイダーの操作コードを表します。
構文
enum class XAsyncOp : uint32_t
{
Begin,
DoWork,
GetResult,
Cancel,
Cleanup
}
定数
| 定数 | 説明 |
|---|---|
| Begin |
XAsyncBegin が呼び出されると、この操作コードを使用して非同期プロバイダーが呼び出されます。 この操作コードが実装されている場合、非同期プロバイダーがその非同期処理を開始するために、XAsyncSchedule を呼び出すか、外部非同期プロセス (重複する I/O など) を開始します。 注 この操作コードに対して実行される非同期処理は、スレッドをブロックしないものでなければなりません。 |
| DoWork | 処理をスケジュールするために XAsyncSchedule が呼び出されると、この操作コードを使用して非同期プロバイダーが呼び出されます。 この操作コードが実装されている場合、非同期プロバイダーはその非同期処理を行ってから、requiredBufferSize にデータ ペイロード サイズを指定して XAsyncComplete を呼び出します。 追加の処理を行う必要がある場合、非同期プロバイダーはその処理をスケジュールしてから、result にエラー コード E_PENDING を指定して XAsyncComplete を呼び出すことで追加処理に対処できます。 |
| GetResult | 非同期呼び出しが完了し、ユーザーが結果のデータ ペイロードを取得する必要がある場合は、この操作コードを使用して非同期プロバイダーが呼び出されます。 XAsyncProviderData の buffer フィールドと bufferSize フィールドの値は検証済みです。 |
| Cancel | 非同期処理をキャンセルする必要がある場合は、この操作コードを使用して非同期プロバイダーが呼び出されます。 非同期プロバイダーはすべての非同期処理をキャンセルしてから、result にエラー コード E_ABORT を指定して XAsyncComplete を呼び出します。 |
| クリーンアップ | 非同期処理が完了したかキャンセルされて、コンテキストのデータをクリーンアップできる状態になると、この操作コードを使用して非同期プロバイダーが呼び出されます。 |
解説
非同期プロバイダーに対する XAsyncProvider コールバック関数は繰り返し呼び出されます。各呼び出しで非同期プロバイダーが行う処理は、その呼び出しに指定されている操作コードによって決まります。
XAsyncOpは、 非同期プロバイダーが実装できる操作コードを表します。
非同期プロバイダーは、非同期処理を実行するために必要となる XAsyncOp の操作コードのみを実装する必要があります。 たとえば、非同期プロバイダーがキャンセル不可能な非同期 I/O 処理を行う場合、その処理にクリーンアップが不要であれば、その非同期プロバイダーが実装する必要があるのは XAsyncOp::GetResult のみです。
XAsyncOp の DoWork、GetResult、および Cleanup 操作を実装する非同期プロバイダーの例については、「非同期プログラミング モデル」の「非同期ライブラリ」のセクションを参照してください。
要件
ヘッダー: XAsyncProvider.h
サポートされているプラットフォーム: Windows、Xbox One ファミリ本体と Xbox Series 本体