> ## 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.

# XApuConnect

> XApuConnect

# XApuConnect

建立连接并为音频处理单元 (XAPU) 分配所需资源。

## Syntax

```cpp theme={null}
HRESULT XApuConnect(  
         XApuConnectInputParameters* params,  
         XApuConnectOutputParameters* data,  
         XApuHandle* handle  
)  
```

### Parameters

*params*   \_In\_\
Type: [XApuConnectInputParameters\*](/reference/audio/xapu/structs/xapuconnectinputparameters)

传递给 XApuConnect 用于分配资源的参数。

*data*   \_Out\_\
Type: [XApuConnectOutputParameters\*](/reference/audio/xapu/structs/xapuconnectoutputparameters)

XApuConnect 返回的参数。

*handle*   \_Outptr\_\
Type: XApuHandle\*

指向返回的 XAPU 句柄的指针。在调用其他 XAPU API 时,此句柄用于指示要操作的 XAPU 实例。

### Return value

Type: HRESULT

如果成功,则返回 S\_OK;否则,返回错误代码。

## Remarks

调用方必须为 XAPU 客户端指定要执行的 [XApuProcessType](/reference/audio/xapu/enums/xapuprocesstype)。一个 XAPU 实例在其生存期内只能使用一种类型的处理。若要执行两种或多种不同的处理,必须实例化两个或多个 XAPU 实例。

在 [XApuConnectInputParameters](/reference/audio/xapu/structs/xapuconnectinputparameters) 内部,调用方必须指定以下内容:

* XAPU 预期同时处理的流的最大数量。
* 每个流的最大排队命令数。
* 所有命令和流所需的总内存分配。这包括输入、输出和处理数据在流的最大数量乘以每个流的排队命令数上的总分配。

如果调用成功,[XApuConnectOutputParameters::baseData](/reference/audio/xapu/structs/xapuconnectoutputparameters) 参数将指向一块内存,调用方应使用这块内存来传递输入数据并检索流的输出数据。是否分区和回收这块内存由调用方决定。当调用 [XApuDisconnect](/reference/audio/xapu/functions/xapudisconnect) 时,该分配将被释放。

当设置了 [XApuConnectOptions::EnableResultReadyEvent](/reference/audio/xapu/enums/xapuconnectoptions) 时,[XApuConnectOutputParameters::resultReadyEvent](/reference/audio/xapu/structs/xapuconnectoutputparameters) 将包含一个 Win32 事件句柄。此句柄将在调用 [XApuDisconnect](/reference/audio/xapu/functions/xapudisconnect) 时关闭。

此句柄将在调用 [XApuDisconnect](/reference/audio/xapu/functions/xapudisconnect) 时关闭。

不建议频繁调用 [XapuConnect](/reference/audio/xapu/functions/xapuconnect) 和 [XApuDisconnect](/reference/audio/xapu/functions/xapudisconnect) 来启动和停止流,因为这些调用非常耗时,并且可能由于内存碎片而导致资源丢失。相反,应在流会话初始化时调用一次 [XapuConnect](/reference/audio/xapu/functions/xapuconnect),然后在流传输过程中使用 [XApuCommandType::Activate](/reference/audio/xapu/enums/xapucommandtype) 和 [XApuCommandType::Deactivate](/reference/audio/xapu/enums/xapucommandtype) 来启动和停止流。在流会话结束时,应调用 [XApuDisconnect](/reference/audio/xapu/functions/xapudisconnect)。所有 XAPU 客户端均适用。

## Requirements

**头文件:** xapu.h

**库:** xapu.lib

**支持的平台:** XBOX Series X|S

## Conceptual documentation

* [XAPU 概述](/build/console-features/audio/overviews/xapu-overview)

## See also

[XAPU](/reference/audio/xapu/xapu_members)\
[XApuDecodeConvertCommand](/reference/audio/xapu/structs/xapudecodeconvertcommand)\
[XApuDequeueResult](/reference/audio/xapu/functions/xapudequeueresult)\
[XApuEnqueueCommand](/reference/audio/xapu/functions/xapuenqueuecommand)\
[XApuGetResultCount](/reference/audio/xapu/functions/xapugetresultcount)


## Related topics

- [XApuConnectOptions](/zh-CN/reference/audio/xapu/enums/xapuconnectoptions.md)
- [XApuConnectOutputParameters](/zh-CN/reference/audio/xapu/structs/xapuconnectoutputparameters.md)
- [XApuConnectInputParameters](/zh-CN/reference/audio/xapu/structs/xapuconnectinputparameters.md)
- [XApuDisconnect](/zh-CN/reference/audio/xapu/functions/xapudisconnect.md)
- [XApuDequeueResult](/zh-CN/reference/audio/xapu/functions/xapudequeueresult.md)
