---
title: DCMI_MAIN_CMD_VDEV_MNG
description: "int dcmi_set_device_info(int card_id, int device_id, enum dcmi_main_cmd main_cmd, unsigned int sub_cmd, const void *buf, unsigned int buf_size)"
url: https://www.hiascend.com/document/detail/zh/HDK/latest/A2/A2DCMI/dcmi_072.html
sourcePath: /source/zh/HDK/2610/A2/A2DCMI/dcmi_072.html
indexId: 0646ecee468777116a7ccb8c5be72bd6cd87fccf896fb90838140e4d1cb3f9fa43
---
# DCMI_MAIN_CMD_VDEV_MNG

#### 函数原型

int dcmi_set_device_info(int card_id, int device_id, enum dcmi_main_cmd main_cmd, unsigned int sub_cmd, const void *buf, unsigned int buf_size)


#### 功能说明

配置SRIOV功能开关。


#### 参数说明

| 参数名 | 输入/输出 | 类型 | 描述 |
| --- | --- | --- | --- |
| card\_id | 输入 | int | 设备ID，当前实际支持的ID通过dcmi\_get\_card\_list接口获取。 |
| device\_id | 输入 | int | 芯片ID，通过dcmi\_get\_device\_id\_in\_card接口获取。取值范围如下： NPU芯片：[0, device\_id\_max\-1]。 说明： device\_id\_max值为1，当device\_id为0时表示NPU芯片；当device\_id为1时表示MCU芯片。 |
| main\_cmd | 输入 | enum dcmi\_main\_cmd | DCMI\_MAIN\_CMD\_VDEV\_MNG |
| sub\_cmd | 输入 | unsigned int | typedef enum { DCMI\_VMNG\_SUB\_CMD\_GET\_VDEV\_RESOURCE, //获取单个虚拟设备的资源信息 DCMI\_VMNG\_SUB\_CMD\_GET\_TOTAL\_RESOURCE, //获取指定SoC设备的总资源信息，用于在创建新虚拟设备时参考使用 DCMI\_VMNG\_SUB\_CMD\_GET\_FREE\_RESOURCE, //获取指定SoC设备的未使用资源信息，用于在创建新虚拟设备时参考使用 DCMI\_VMNG\_SUB\_CMD\_SET\_SRIOV\_SWITCH, //设置SRIOV功能的开关 DCMI\_VMNG\_SUB\_CMD\_MAX, //枚举值上限标记 }DCMI\_VDEV\_MNG\_SUB\_CMD; 仅支持DCMI\_VMNG\_SUB\_CMD\_SET\_SRIOV\_SWITCH命令。 |
| buf | 输入 | const void \* | 详见本节约束说明。 |
| buf\_size | 输入 | unsigned int | buf数组的长度。 |


**表1 sub_cmd对应的buf格式**

| sub\_cmd | buf对应的数据类型 | size | 参数说明 |
| --- | --- | --- | --- |
| DCMI\_VMNG\_SUB\_CMD\_SET\_SRIOV\_SWITCH | unsigned int | 长度为：sizeof(unsigned int) | 0：关闭SRIOV功能 1：开启SRIOV功能 |


#### 返回值说明

| 类型 | 描述 |
| --- | --- |
| int | 处理结果： 成功：返回0。 失败：返回码请参见返回码。 |


#### 异常处理

无


#### 约束说明

- 关闭SRIOV功能前需要销毁所有的昇腾虚拟化实例（AVI）。
- 使能SRIOV时，请停掉该场景下的所有业务。


**表2 不同部署场景下的支持情况**

| 产品形态 | 物理机场景（裸机）root用户 | 物理机场景（裸机）运行用户组（非root用户） | 物理机+普通容器场景root用户 | 物理机+容器AVI场景root用户 |
| --- | --- | --- | --- | --- |
| Atlas 900 A2 PoD 集群基础单元 | Y | N | N | N |
| Atlas 800T A2 训练服务器 | Y | N | N | N |
| Atlas 800I A2 推理服务器 | Y | N | N | N |
| Atlas 200T A2 Box16 异构子框 | N | N | N | N |
| A200I A2 Box 异构组件 | Y | N | N | N |
| A300I A2 推理卡 | Y | N | N | N |
| 注：Y表示支持；N表示不支持；NA表示不涉及，当前未规划此场景。 | 注：Y表示支持；N表示不支持；NA表示不涉及，当前未规划此场景。 | 注：Y表示支持；N表示不支持；NA表示不涉及，当前未规划此场景。 | 注：Y表示支持；N表示不支持；NA表示不涉及，当前未规划此场景。 | 注：Y表示支持；N表示不支持；NA表示不涉及，当前未规划此场景。 |


#### 调用示例

```
…
int ret;
int card_id = 0;
int device_id = 0;
DCMI_MAIN_CMD main_cmd = DCMI_MAIN_CMD_VDEV_MNG;
unsigned int sub_cmd = DCMI_VMNG_SUB_CMD_SET_SRIOV_SWITCH;
unsigned int sriov_switch = 1;
unsigned int size = sizeof(unsigned int);
ret = dcmi_set_device_info(card_id, device_id, main_cmd, sub_cmd, (void *)&sriov_switch , size);
if (ret) {
// todo
}
// todo
…
```
