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 非同期呼び出しが完了し、ユーザーが結果のデータ ペイロードを取得する必要がある場合は、この操作コードを使用して非同期プロバイダーが呼び出されます。
XAsyncProviderDatabuffer フィールドと bufferSize フィールドの値は検証済みです。
Cancel 非同期処理をキャンセルする必要がある場合は、この操作コードを使用して非同期プロバイダーが呼び出されます。
非同期プロバイダーはすべての非同期処理をキャンセルしてから、result にエラー コード E_ABORT を指定して XAsyncComplete を呼び出します。
クリーンアップ 非同期処理が完了したかキャンセルされて、コンテキストのデータをクリーンアップできる状態になると、この操作コードを使用して非同期プロバイダーが呼び出されます。

解説

非同期プロバイダーに対する XAsyncProvider コールバック関数は繰り返し呼び出されます。各呼び出しで非同期プロバイダーが行う処理は、その呼び出しに指定されている操作コードによって決まります。 XAsyncOpは、 非同期プロバイダーが実装できる操作コードを表します。
非同期プロバイダーは、非同期処理を実行するために必要となる XAsyncOp の操作コードのみを実装する必要があります。 たとえば、非同期プロバイダーがキャンセル不可能な非同期 I/O 処理を行う場合、その処理にクリーンアップが不要であれば、その非同期プロバイダーが実装する必要があるのは XAsyncOp::GetResult のみです。

XAsyncOpDoWorkGetResult、および Cleanup 操作を実装する非同期プロバイダーの例については、「非同期プログラミング モデル」の「非同期ライブラリ」のセクションを参照してください。

要件

ヘッダー: XAsyncProvider.h

サポートされているプラットフォーム: Windows、Xbox One ファミリ本体と Xbox Series 本体

関連項目

XAsyncProviderData
XAsyncProvider のメンバー
非同期プログラミング モデル