> ## Documentation Index
> Fetch the complete documentation index at: https://docs.xbox.com/llms.txt
> Use this file to discover all available pages before exploring further.

# XAsyncBegin

> XAsyncBegin

# XAsyncBegin

[XAsyncBlock](https://docs.xbox.com/ko/reference/system/xasync/structs/xasyncblock.md)을 초기화하고 비동기 공급자에 의한 비동기 작업을 시작합니다.

## 구문

```cpp theme={null}
HRESULT XAsyncBegin(  
         XAsyncBlock* asyncBlock,  
         void* context,  
         const void* identity,  
         const char* identityName,  
         XAsyncProvider* provider  
)  
```

### 매개 변수

*asyncBlock*   \_Inout\_\
형식: [XAsyncBlock\*](https://docs.xbox.com/ko/reference/system/xasync/structs/xasyncblock.md)

비동기 호출에 대한 데이터를 보유하는 [XAsyncBlock](https://docs.xbox.com/ko/reference/system/xasync/structs/xasyncblock.md)에 대한 포인터입니다.

*context*   \_In\_opt\_\
형식: void\*

선택 사항. [XAsyncProvider](https://docs.xbox.com/ko/reference/system/xasyncprovider/functions/xasyncprovider.md) 콜백 함수에 전달되는 [XAsyncProviderData](https://docs.xbox.com/ko/reference/system/xasyncprovider/structs/xasyncproviderdata.md) 개체에 저장될 컨텍스트 포인터입니다.

*identity*   \_In\_opt\_\
형식: void\*

선택 사항. 비동기 호출을 식별하는 데 사용할 수 있는 임의 토큰에 대한 포인터입니다.

*identityName*   \_In\_opt\_\
형식: char\*

선택 사항. 비동기 호출을 제공하는 함수의 이름을 지정하는 문자열입니다. 이 매개 변수의 값은 일반적으로 `__FUNCTION__` 컴파일러 매크로로 설정됩니다.

*provider*   \_In\_\
형식: [XAsyncProvider](https://docs.xbox.com/ko/reference/system/xasyncprovider/functions/xasyncprovider.md)\*

비동기 호출에 대해 호출할 [XAsyncProvider](https://docs.xbox.com/ko/reference/system/xasyncprovider/functions/xasyncprovider.md) 콜백 함수에 대한 포인터입니다.

### 반환 값

형식: [HRESULT](https://learn.microsoft.com/openspecs/windows_protocols/ms-erref/0642cb2f-2075-4469-918c-4441e69c548a)

성공하면 `S_OK`를 반환하고, 그렇지 않으면 오류 코드를 반환합니다. 오류 코드 목록은 [오류 코드](https://docs.xbox.com/ko/reference/errorcodes.md)를 참조하세요.

## 설명

`XAsyncBegin`은 비동기 공급자가 비동기 작업을 시작해야 함을 나타내기 위해 호출됩니다. `XAsyncBegin`이 호출된 후 [XAsyncGetResult](https://docs.xbox.com/ko/reference/system/xasyncprovider/functions/xasyncgetresult.md)와 같은 다른 [XAsyncProvider](https://docs.xbox.com/ko/reference/system/xasyncprovider/xasyncprovider_members.md) 함수는 의미 있는 데이터를 제공합니다.

`XAsyncBegin`이 호출되면 *provider*에 지정된 콜백 함수가 호출되고 [XAsyncProvider](https://docs.xbox.com/ko/reference/system/xasyncprovider/functions/xasyncprovider.md)의 *op* 매개 변수에 [XAsyncOp::Begin](https://docs.xbox.com/ko/reference/system/xasyncprovider/enums/xasyncop.md)을 지정합니다. 콜백 함수가 이 작업 코드를 구현하는 경우 [XAsyncSchedule](https://docs.xbox.com/ko/reference/system/xasyncprovider/functions/xasyncschedule.md)을 호출하거나 외부 수단을 통해 비동기 작업을 시작해야 합니다. `XAsyncBegin`이 반환된 후에는 콜백 함수가 시스템 정의 스레드에서 비동기 작업을 시작한 것으로 가정합니다.

> [!NOTE]
>
> *provider*에 지정된 콜백 함수는 `XAsyncBegin` 호출 체인에서 동기적으로 처리됩니다. 콜백 함수가 수행하는 비동기 작업은 스레드를 차단해서는 안 됩니다.

*identity* 및 *identityName* 매개 변수를 사용하여 콜백 함수에 대한 불일치하는 `XAsyncOp::Begin` 및 `XAsyncOp::GetResult` 호출을 식별하고 관리할 수 있습니다. 일반적으로 *identity*의 값은 `XAsyncBegin`을 호출한 함수의 함수 포인터로 설정되고 *identityName*의 값은 `__FUNCTION__` 컴파일러 매크로로 설정됩니다.

## 요구 사항

**헤더:** XAsyncProvider.h

**라이브러리:** xgameruntime.lib

**지원되는 플랫폼:** Windows, XBOX One 제품군 콘솔 및 XBOX Series 콘솔

## 개념 설명서

* [사용자 지정 공급자 설정](https://docs.xbox.com/ko/build/core-features/common/async/async-libraries/async-library-xasyncprovider-example-setup-custom-provider.md)
* [XAsyncProvider 라이브러리 개요](https://docs.xbox.com/ko/build/core-features/common/async/async-libraries/async-library-xasyncprovider.md)
* [비동기 프로그래밍 모델](https://docs.xbox.com/ko/build/core-features/common/async/async-programming-model.md)

## 함께 보기

[XAsyncProvider 멤버](https://docs.xbox.com/ko/reference/system/xasyncprovider/xasyncprovider_members.md)\
[XAsyncProviderData](https://docs.xbox.com/ko/reference/system/xasyncprovider/structs/xasyncproviderdata.md)\
[XAsyncProvider](https://docs.xbox.com/ko/reference/system/xasyncprovider/functions/xasyncprovider.md)\
[XAsyncGetResult](https://docs.xbox.com/ko/reference/system/xasyncprovider/functions/xasyncgetresult.md)\
[비동기 프로그래밍 모델](https://docs.xbox.com/ko/build/core-features/common/async/async-programming-model.md)


## Related topics

- [XAsyncComplete](https://docs.xbox.com/ko/reference/system/xasyncprovider/functions/xasynccomplete.md)
- [XAsyncSchedule](https://docs.xbox.com/ko/reference/system/xasyncprovider/functions/xasyncschedule.md)
- [XAsyncGetResult](https://docs.xbox.com/ko/reference/system/xasyncprovider/functions/xasyncgetresult.md)
- [XAsyncProviderData](https://docs.xbox.com/ko/reference/system/xasyncprovider/structs/xasyncproviderdata.md)
- [XAsyncProvider 라이브러리 개요](https://docs.xbox.com/ko/build/core-features/common/async/async-libraries/async-library-xasyncprovider.md)
