XAsyncOp
非同期プロバイダーの操作コードを表します。
構文
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 本体