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

# XAsyncBegin

> XAsyncBegin

# XAsyncBegin

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

## 구문

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

### 매개 변수

*asyncBlock*   \_Inout\_\
형식: [XAsyncBlock\*](/reference/system/xasync/structs/xasyncblock)

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

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

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

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

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

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

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

*provider*   \_In\_\
형식: [XAsyncProvider](/reference/system/xasyncprovider/functions/xasyncprovider)\*

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

### 반환 값

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

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

## 설명

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

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

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

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

## 요구 사항

**헤더:** XAsyncProvider.h

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

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

## 개념 설명서

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

## 함께 보기

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


## Related topics

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