# USB服务子系统使用指导
下面使用步骤以bulktransfer为例。
## 使用步骤
1. 获取usb service实例
```cpp
static OHOS::USB::UsbSrvClient &g_usbClient = OHOS::USB::UsbSrvClient::GetInstance();
```
2. 获取usb设备列表
```cpp
std::vector deviceList;
int32_t ret = g_usbClient.GetDevices(deviceList);
```
3. 申请设备权限
```cpp
int32_t ret = g_usbClient.RequestRight(device.GetName());
```
4. 打开设备
```cpp
USBDevicePipe pip;
int32_t et = g_usbClient.OpenDevice(device, pip);
```
5. 配置设备接口
```cpp
ret = g_usbClient.ClaimInterface(pip, interface, true);
interface为deviceList中device的interface。
```
6. 数据传输
```cpp
srvClient.BulkTransfer(pipe, endpoint, vdata, timeout);
```
pipe为打开设备后的数据传输通道,endpoint为device中数据传输的端点,vdata是需要传输或读取的二进制数据块,timeout为传输超时时长。
7. 关闭设备
```cpp
ret = g_usbClient.Close(pip);
```