XAsyncBegin
Initializes an XAsyncBlock and begins asynchronous work by an asynchronous provider.
Syntax
HRESULT XAsyncBegin(
XAsyncBlock* asyncBlock,
void* context,
const void* identity,
const char* identityName,
XAsyncProvider* provider
)
Parameters
asyncBlock _Inout_
Type: XAsyncBlock*
A pointer to the XAsyncBlock that holds data for the asynchronous call.
context _In_opt_
Type: void*
Optional. A context pointer to be stored in the XAsyncProviderData object passed to the XAsyncProvider callback function.
identity _In_opt_
Type: void*
Optional. A pointer to an arbitrary token that can be used to identify the asynchronous call.
identityName _In_opt_
Type: char*
Optional. An string that names the function providing the asynchronous call. The value of this parameter is typically set to the __FUNCTION__
compiler macro.
provider _In_
Type: XAsyncProvider*
A pointer to the XAsyncProvider callback function to invoke for the asynchronous call.
Return value
Type: HRESULT
Returns S_OK
if successful; otherwise, returns an error code. For a list of error codes, see Error Codes.
Remarks
XAsyncBegin
is invoked to indicate that the asynchronous provider should begin asynchronous work. After XAsyncBegin
is invoked, other XAsyncProvider functions, such as XAsyncGetResult will provide meaningful data.
When XAsyncBegin
is invoked, the callback function specified in provider is invoked, specifying XAsyncOp::Begin in the op parameter of XAsyncProvider. If the callback function implements this operation code, it should start its asynchronous work by either calling XAsyncSchedule or through exterior means. After XAsyncBegin
returns, it is assumed that the callback function has started asynchronous work on a system-defined thread.
Note
The callback function specified in provider is processed synchronously in the XAsyncBegin
call chain. Asynchronous work performed by the callback function must not block the thread.
You can use the identity and identityName parameters to identify and manage mismatched XAsyncOp::Begin
and XAsyncOp::GetResult
calls to the callback function. Typically, the value of identity is set to the function pointer of the function that invoked XAsyncBegin
, and the value of identityName is set to the __FUNCTION__
compiler macro.
Requirements
Header: XAsyncProvider.h
Library: xgameruntime.lib
Supported platforms: Windows, Xbox One family consoles and Xbox Series consoles
See also
XAsyncProvider Members
XAsyncProviderData
XAsyncProvider
XAsyncGetResult
Asynchronous Programming Model