1# IUsbInterface 2 3 4## **概述** 5 6定义USB驱动基本的操作功能。 7 8上层USB服务调用相关功能接口,可以打开/关闭设备,获取设备描述符,批量读取/写入数据等。 9 10**相关模块:** 11 12[USB](usb.md) 13 14 15## **汇总** 16 17 18### Public 成员函数 19 20 | 名称 | 描述 | 21| -------- | -------- | 22| [OpenDevice](#opendevice) ([in] struct [UsbDev](_usb_dev.md) dev) | 打开设备,建立连接。 | 23| [CloseDevice](#closedevice) ([in] struct [UsbDev](_usb_dev.md) dev) | 关闭设备,释放与设备相关的所有系统资源。 | 24| [GetDeviceDescriptor](#getdevicedescriptor) ([in] struct [UsbDev](_usb_dev.md) dev, [out] unsigned char[] descriptor) | 获取设备描述符,设备描述符提供了关于设备、设备的配置以及任何设备所归属的类的信息。 | 25| [GetStringDescriptor](#getstringdescriptor) ([in] struct [UsbDev](_usb_dev.md) dev, [in] unsigned char descId, [out] unsigned char[] descriptor) | 根据设备的字符串ID获取字符串描述符,字符串描述符是提供一些设备接口相关的描述性信息,比如厂商的名字、产品序列号等。 | 26| [GetConfigDescriptor](#getconfigdescriptor) ([in] struct [UsbDev](_usb_dev.md) dev, [in] unsigned char descId, [out] unsigned char[] descriptor) | 根据设备的配置ID获取配置描述符,配置描述符包含有关配置及其接口、备用设置及其终结点的信息。 | 27| [GetRawDescriptor](#getrawdescriptor) ([in] struct [UsbDev](_usb_dev.md) dev, [out] unsigned char[] descriptor) | 获取USB设备的原始描述符。 | 28| [GetFileDescriptor](#getfiledescriptor) ([in] struct [UsbDev](_usb_dev.md) dev, [out] int fd) | 获取USB设备的文件描述符。 | 29| [SetConfig](#setconfig) ([in] struct [UsbDev](_usb_dev.md) dev, [in] unsigned char configIndex) | 设置USB设备当前的配置信息,USB设备被主机配置过后,主机可以使用设备提供的所有功能。 | 30| [GetConfig](#getconfig) ([in] struct [UsbDev](_usb_dev.md) dev, [out] unsigned char configIndex) | 获取USB设备当前的配置信息。 | 31| [ClaimInterface](#claiminterface) ([in] struct [UsbDev](_usb_dev.md) dev, [in] unsigned char interfaceid, [in] unsigned char force) | 打开USB设备的接口并声明独占,必须在数据传输前执行。 | 32| [ReleaseInterface](#releaseinterface) ([in] struct [UsbDev](_usb_dev.md) dev, [in] unsigned char interfaceid) | 在停止数据传输后关闭占用的USB设备接口,并释放相关资源。 | 33| [SetInterface](#setinterface) ([in] struct [UsbDev](_usb_dev.md) dev, [in] unsigned char interfaceid, [in] unsigned char altIndex) | 设置USB设备指定接口的备选设置,用于在具有相同ID但不同备用设置的两个接口之间进行选择。 | 34| [BulkTransferRead](#bulktransferread) ([in] struct [UsbDev](_usb_dev.md) dev, [in] struct [UsbPipe](_usb_pipe.md) pipe, [in] int timeout, [out] unsigned char[] data) | 在USB设备指定端点方向为读取时,执行批量数据读取。 | 35| [BulkTransferWrite](#bulktransferwrite) ([in] struct [UsbDev](_usb_dev.md) dev, [in] struct [UsbPipe](_usb_pipe.md) pipe, [in] int timeout, [in] unsigned char[] data) | 在USB设备指定端点方向为写入时,执行批量数据写入。 | 36| [ControlTransferRead](#controltransferread) ([in] struct [UsbDev](_usb_dev.md) dev, [in] struct [UsbCtrlTransfer](_usb_ctrl_transfer.md) ctrl, [out] unsigned char[] data) | 在传输状态为读取并且控制端点是端点零时,对USB设备执行控制传输。 | 37| [ControlTransferWrite](#controltransferwrite) ([in] struct [UsbDev](_usb_dev.md) dev, [in] struct [UsbCtrlTransfer](_usb_ctrl_transfer.md) ctrl, [in] unsigned char[] data) | 在传输状态为写入并且控制端点是端点零时,对USB设备执行控制传输。 | 38| [InterruptTransferRead](#interrupttransferread) ([in] struct [UsbDev](_usb_dev.md) dev, [in] struct [UsbPipe](_usb_pipe.md) pipe, [in] int timeout, [out] unsigned char[] data) | 在USB设备指定端点方向为数据读取时执行中断数据读取。 | 39| [InterruptTransferWrite](#interrupttransferwrite) ([in] struct [UsbDev](_usb_dev.md) dev, [in] struct [UsbPipe](_usb_pipe.md) pipe, [in] int timeout, [in] unsigned char[] data) | 在USB设备指定端点方向为写入时执行中断数据写入。 | 40| [IsoTransferRead](#isotransferread) ([in] struct [UsbDev](_usb_dev.md) dev, [in] struct [UsbPipe](_usb_pipe.md) pipe, [in] int timeout, [out] unsigned char[] data) | 在USB设备指定端点方向为读取时执行等时数据读取。 | 41| [IsoTransferWrite](#isotransferwrite) ([in] struct [UsbDev](_usb_dev.md) dev, [in] struct [UsbPipe](_usb_pipe.md) pipe, [in] int timeout, [in] unsigned char[] data) | 在USB设备指定端点方向为写入时执行等时数据写入。 | 42| [RequestQueue](#requestqueue) ([in] struct [UsbDev](_usb_dev.md) dev, [in] struct [UsbPipe](_usb_pipe.md) pipe, [in] unsigned char[] clientData, [in] unsigned char[] buffer) | 在USB设备指定端点上进行异步数据发送或者接收请求,数据传输方向由端点方向决定。 | 43| [RequestWait](#requestwait) ([in] struct [UsbDev](_usb_dev.md) dev, [out] unsigned char[] clientData, [out] unsigned char[] buffer, [in] int timeout) | 等待RequestQueue异步请求的操作结果。 | 44| [RequestCancel](#requestcancel) ([in] struct [UsbDev](_usb_dev.md) dev, [in] struct [UsbPipe](_usb_pipe.md) pipe) | 取消待处理的数据请求。 | 45| [GetCurrentFunctions](#getcurrentfunctions) ([out] int funcs) | 获取USB设备当前的功能(按位域表示)。 | 46| [SetCurrentFunctions](#setcurrentfunctions) ([in] int funcs) | 设置USB设备当前的功能(按位域表示)。 | 47| [SetPortRole](#setportrole) ([in] int portId, [in] int powerRole, [in] int dataRole) | 设置USB设备端口的角色。 | 48| [QueryPort](#queryport) ([out] int portId, [out] int powerRole, [out] int dataRole, [out] int mode) | 查询USB设备端口的当前设置信息。 | 49| [BindUsbdSubscriber](#bindusbdsubscriber) ([in] [IUsbdSubscriber](interface_i_usbd_subscriber.md) subscriber) | 绑定订阅者。 | 50| [UnbindUsbdSubscriber](#unbindusbdsubscriber) ([in] [IUsbdSubscriber](interface_i_usbd_subscriber.md) subscriber) | 解绑订阅者。 | 51| [RegBulkCallback](#regbulkcallback) ([in] struct [UsbDev](_usb_dev.md) dev, [in] struct [UsbPipe](_usb_pipe.md) pipe, [in] [IUsbdBulkCallback](interface_i_usbd_bulk_callback.md) cb) | 注册批量传输异步回调函数。 | 52| [UnRegBulkCallback](#unregbulkcallback) ([in] struct [UsbDev](_usb_dev.md) dev, [in] struct [UsbPipe](_usb_pipe.md) pipe) | 注销批量传输异步回调函数。 | 53| [BulkRead](#bulkread) ([in] struct [UsbDev](_usb_dev.md) dev, [in] struct [UsbPipe](_usb_pipe.md) pipe, [in] Ashmem ashmem) | 批量传输异步读数据。 | 54| [BulkWrite](#bulkwrite) ([in] struct [UsbDev](_usb_dev.md) dev, [in] struct [UsbPipe](_usb_pipe.md) pipe, [in] Ashmem ashmem) | 批量传输异步写数据。 | 55| [BulkCancel](#bulkcancel) ([in] struct [UsbDev](_usb_dev.md) dev, [in] struct [UsbPipe](_usb_pipe.md) pipe) | 批量传输异步取消接口,用于取消当前接口的异步批量读写操作。 | 56 57 58## **成员函数说明** 59 60 61### BindUsbdSubscriber() 62 63 64``` 65IUsbInterface::BindUsbdSubscriber ([in] IUsbdSubscriber subscriber) 66``` 67 68**描述:** 69 70绑定订阅者。 71 72**参数:** 73 74 | 名称 | 描述 | 75| -------- | -------- | 76| subscriber | 订阅者信息,详见[IUsbdSubscriber](interface_i_usbd_subscriber.md)。 | 77 78**返回:** 79 800 表示操作成功。 81 82非零值 表示操作失败。 83 84 85### BulkCancel() 86 87 88``` 89IUsbInterface::BulkCancel ([in] struct UsbDev dev, [in] struct UsbPipe pipe ) 90``` 91 92**描述:** 93 94批量传输异步取消接口,用于取消当前接口的异步批量读写操作。 95 96**参数:** 97 98 | 名称 | 描述 | 99| -------- | -------- | 100| dev | USB设备地址信息,详见[UsbDev](_usb_dev.md)。 | 101| pipe | USB设备管道信息,详见[UsbPipe](_usb_pipe.md)。 | 102 103**返回:** 104 1050 表示操作成功。 106 107非零值 表示操作失败。 108 109 110### BulkRead() 111 112 113``` 114IUsbInterface::BulkRead ([in] struct UsbDev dev, [in] struct UsbPipe pipe, [in] Ashmem ashmem ) 115``` 116 117**描述:** 118 119批量传输异步读数据。 120 121**参数:** 122 123 | 名称 | 描述 | 124| -------- | -------- | 125| dev | USB设备地址信息,详见[UsbDev](_usb_dev.md)。 | 126| pipe | USB设备管道信息,详见[UsbPipe](_usb_pipe.md)。 | 127| ashmem | 共享内存,用于存放读取的数据。 | 128 129**返回:** 130 1310 表示操作成功。 132 133非零值 表示操作失败。 134 135 136### BulkTransferRead() 137 138 139``` 140IUsbInterface::BulkTransferRead ([in] struct UsbDev dev, [in] struct UsbPipe pipe, [in] int timeout, [out] unsigned char[] data ) 141``` 142 143**描述:** 144 145在USB设备指定端点方向为读取时,执行批量数据读取。 146 147**参数:** 148 149 | 名称 | 描述 | 150| -------- | -------- | 151| dev | USB设备地址信息,详见[UsbDev](_usb_dev.md)。 | 152| pipe | USB设备管道信息,详见[UsbPipe](_usb_pipe.md)。 | 153| timeout | 超时时间。 | 154| data | 读取的数据。 | 155 156**返回:** 157 1580 表示操作成功。 159 160非零值 表示操作失败。 161 162 163### BulkTransferWrite() 164 165 166``` 167IUsbInterface::BulkTransferWrite ([in] struct UsbDev dev, [in] struct UsbPipe pipe, [in] int timeout, [in] unsigned char[] data ) 168``` 169 170**描述:** 171 172在USB设备指定端点方向为写入时,执行批量数据写入。 173 174**参数:** 175 176 | 名称 | 描述 | 177| -------- | -------- | 178| dev | USB设备地址信息,详见[UsbDev](_usb_dev.md)。 | 179| pipe | USB设备管道信息,详见[UsbPipe](_usb_pipe.md)。 | 180| timeout | 超时时间。 | 181| data | 写入的数据。 | 182 183**返回:** 184 1850 表示操作成功。 186 187非零值 表示操作失败。 188 189 190### BulkWrite() 191 192 193``` 194IUsbInterface::BulkWrite ([in] struct UsbDev dev, [in] struct UsbPipe pipe, [in] Ashmem ashmem ) 195``` 196 197**描述:** 198 199批量传输异步写数据。 200 201**参数:** 202 203 | 名称 | 描述 | 204| -------- | -------- | 205| dev | USB设备地址信息,详见[UsbDev](_usb_dev.md)。 | 206| pipe | USB设备管道信息,详见[UsbPipe](_usb_pipe.md)。 | 207| ashmem | 为共享内存,用于存放需要写入的数据。 | 208 209**返回:** 210 2110 表示操作成功。 212 213非零值 表示操作失败。 214 215 216### ClaimInterface() 217 218 219``` 220IUsbInterface::ClaimInterface ([in] struct UsbDev dev, [in] unsigned char interfaceid, [in] unsigned char force ) 221``` 222 223**描述:** 224 225打开USB设备的接口并声明独占,必须在数据传输前执行。 226 227**参数:** 228 229 | 名称 | 描述 | 230| -------- | -------- | 231| dev | USB设备地址信息,详见[UsbDev](_usb_dev.md)。 | 232| interfaceid | USB设备接口ID。 | 233| force | 是否强制,1表示强制,0表示不强制。 | 234 235**返回:** 236 2370 表示操作成功。 238 239非零值 表示操作失败。 240 241 242### CloseDevice() 243 244 245``` 246IUsbInterface::CloseDevice ([in] struct UsbDev dev) 247``` 248 249**描述:** 250 251关闭设备,释放与设备相关的所有系统资源。 252 253**参数:** 254 255 | 名称 | 描述 | 256| -------- | -------- | 257| dev | USB设备地址信息,详见[UsbDev](_usb_dev.md)。 | 258 259**返回:** 260 2610 表示操作成功。 262 263非零值 表示操作失败。 264 265 266### ControlTransferRead() 267 268 269``` 270IUsbInterface::ControlTransferRead ([in] struct UsbDev dev, [in] struct UsbCtrlTransfer ctrl, [out] unsigned char[] data ) 271``` 272 273**描述:** 274 275在传输状态为读取并且控制端点是端点零时,对USB设备执行控制传输。 276 277**参数:** 278 279 | 名称 | 描述 | 280| -------- | -------- | 281| dev | USB设备地址信息,详见[UsbDev](_usb_dev.md)。 | 282| ctrl | USB设备控制数据,详见[UsbCtrlTransfer](_usb_ctrl_transfer.md)。 | 283| data | 读取的数据。 | 284 285**返回:** 286 2870 表示成功。 288 289非零值 表示失败。 290 291 292### ControlTransferWrite() 293 294 295``` 296IUsbInterface::ControlTransferWrite ([in] struct UsbDev dev, [in] struct UsbCtrlTransfer ctrl, [in] unsigned char[] data ) 297``` 298 299**描述:** 300 301在传输状态为写入并且控制端点是端点零时,对USB设备执行控制传输。 302 303**参数:** 304 305 | 名称 | 描述 | 306| -------- | -------- | 307| dev | USB设备地址信息,详见[UsbDev](_usb_dev.md)。 | 308| ctrl | USB设备控制数据,详见[UsbCtrlTransfer](_usb_ctrl_transfer.md)。 | 309| data | 写入的数据。 | 310 311**返回:** 312 3130 表示成功。 314 315非零值 表示失败。 316 317 318### GetConfig() 319 320 321``` 322IUsbInterface::GetConfig ([in] struct UsbDev dev, [out] unsigned char configIndex ) 323``` 324 325**描述:** 326 327获取USB设备当前的配置信息。 328 329**参数:** 330 331 | 名称 | 描述 | 332| -------- | -------- | 333| dev | USB设备地址信息,详见[UsbDev](_usb_dev.md)。 | 334| configIndex | USB设备配置信息的字符串描述符索引值(数字字符串)。 | 335 336**返回:** 337 3380 表示操作成功。 339 340非零值 表示操作失败。 341 342 343### GetConfigDescriptor() 344 345 346``` 347IUsbInterface::GetConfigDescriptor ([in] struct UsbDev dev, [in] unsigned char descId, [out] unsigned char[] descriptor ) 348``` 349 350**描述:** 351 352根据设备的配置ID获取配置描述符,配置描述符包含有关配置及其接口、备用设置及其终结点的信息。 353 354**参数:** 355 356 | 名称 | 描述 | 357| -------- | -------- | 358| dev | USB设备地址信息,详见[UsbDev](_usb_dev.md)。 | 359| descId | USB设备的配置ID。 | 360| descriptor | 获取USB设备配置信息。 | 361 362**返回:** 363 3640 表示操作成功。 365 366非零值 表示操作失败。 367 368 369### GetCurrentFunctions() 370 371 372``` 373IUsbInterface::GetCurrentFunctions ([out] int funcs) 374``` 375 376**描述:** 377 378获取USB设备当前的功能(按位域表示)。 379 380**参数:** 381 382 | 名称 | 描述 | 383| -------- | -------- | 384| funcs | 设备当前的功能值。 | 385 386**返回:** 387 3880 表示操作成功。 389 390非零值 表示操作失败。 391 392 393### GetDeviceDescriptor() 394 395 396``` 397IUsbInterface::GetDeviceDescriptor ([in] struct UsbDev dev, [out] unsigned char[] descriptor ) 398``` 399 400**描述:** 401 402获取设备描述符,设备描述符提供了关于设备、设备的配置以及任何设备所归属的类的信息。 403 404**参数:** 405 406 | 名称 | 描述 | 407| -------- | -------- | 408| dev | USB设备地址信息,详见[UsbDev](_usb_dev.md)。 | 409| descriptor | USB设备的描述符信息。 | 410 411**返回:** 412 4130 表示操作成功。 414 415非零值 表示操作失败。 416 417 418### GetFileDescriptor() 419 420 421``` 422IUsbInterface::GetFileDescriptor ([in] struct UsbDev dev, [out] int fd ) 423``` 424 425**描述:** 426 427获取USB设备的文件描述符。 428 429**参数:** 430 431 | 名称 | 描述 | 432| -------- | -------- | 433| dev | USB设备地址信息,详见[UsbDev](_usb_dev.md)。 | 434| fd | USB设备的文件描述符。 | 435 436**返回:** 437 4380 表示操作成功。 439 440非零值 表示操作失败。 441 442 443### GetRawDescriptor() 444 445 446``` 447IUsbInterface::GetRawDescriptor ([in] struct UsbDev dev, [out] unsigned char[] descriptor ) 448``` 449 450**描述:** 451 452获取USB设备的原始描述符。 453 454**参数:** 455 456 | 名称 | 描述 | 457| -------- | -------- | 458| dev | USB设备地址信息,详见[UsbDev](_usb_dev.md)。 | 459| descriptor | USB设备的原始描述符。 | 460 461**返回:** 462 4630 表示操作成功。 464 465非零值 表示操作失败。 466 467 468### GetStringDescriptor() 469 470 471``` 472IUsbInterface::GetStringDescriptor ([in] struct UsbDev dev, [in] unsigned char descId, [out] unsigned char[] descriptor ) 473``` 474 475**描述:** 476 477根据设备的字符串ID获取字符串描述符,字符串描述符是提供一些设备接口相关的描述性信息,比如厂商的名字、产品序列号等。 478 479**参数:** 480 481 | 名称 | 描述 | 482| -------- | -------- | 483| dev | USB设备地址信息,详见[UsbDev](_usb_dev.md)。 | 484| descId | USB设备的描述符ID。 | 485| descriptor | 获取USB设备的字符串描述符。 | 486 487**返回:** 488 4890 表示操作成功。 490 491非零值 表示操作失败。 492 493 494### InterruptTransferRead() 495 496 497``` 498IUsbInterface::InterruptTransferRead ([in] struct UsbDev dev, [in] struct UsbPipe pipe, [in] int timeout, [out] unsigned char[] data ) 499``` 500 501**描述:** 502 503在USB设备指定端点方向为数据读取时执行中断数据读取。 504 505**参数:** 506 507 | 名称 | 描述 | 508| -------- | -------- | 509| dev | USB设备地址信息,详见[UsbDev](_usb_dev.md)。 | 510| pipe | USB设备管道信息,详见[UsbPipe](_usb_pipe.md)。 | 511| timeout | 超时时间。 | 512| data | 读取的数据。 | 513 514**返回:** 515 5160 表示操作成功。 517 518非零值 表示操作失败。 519 520 521### InterruptTransferWrite() 522 523 524``` 525IUsbInterface::InterruptTransferWrite ([in] struct UsbDev dev, [in] struct UsbPipe pipe, [in] int timeout, [in] unsigned char[] data ) 526``` 527 528**描述:** 529 530在USB设备指定端点方向为写入时执行中断数据写入。 531 532**参数:** 533 534 | 名称 | 描述 | 535| -------- | -------- | 536| dev | USB设备地址信息,详见[UsbDev](_usb_dev.md)。 | 537| pipe | USB设备管道信息,详见[UsbPipe](_usb_pipe.md)。 | 538| timeout | 超时时间。 | 539| data | 写入的数据。 | 540 541**返回:** 542 5430 表示操作成功。 544 545非零值 表示操作失败。 546 547 548### IsoTransferRead() 549 550 551``` 552IUsbInterface::IsoTransferRead ([in] struct UsbDev dev, [in] struct UsbPipe pipe, [in] int timeout, [out] unsigned char[] data ) 553``` 554 555**描述:** 556 557在USB设备指定端点方向为读取时执行等时数据读取。 558 559**参数:** 560 561 | 名称 | 描述 | 562| -------- | -------- | 563| dev | USB设备地址信息,详见[UsbDev](_usb_dev.md)。 | 564| pipe | USB设备管道信息,详见[UsbPipe](_usb_pipe.md)。 | 565| timeout | 超时时间。 | 566| data | 读取的数据。 | 567 568**返回:** 569 5700 表示操作成功。 571 572非零值 表示操作失败。 573 574 575### IsoTransferWrite() 576 577 578``` 579IUsbInterface::IsoTransferWrite ([in] struct UsbDev dev, [in] struct UsbPipe pipe, [in] int timeout, [in] unsigned char[] data ) 580``` 581 582**描述:** 583 584在USB设备指定端点方向为写入时执行等时数据写入。 585 586**参数:** 587 588 | 名称 | 描述 | 589| -------- | -------- | 590| dev | USB设备地址信息,详见[UsbDev](_usb_dev.md)。 | 591| pipe | USB设备管道信息,详见[UsbPipe](_usb_pipe.md)。 | 592| timeout | 超时时间。 | 593| data | 写入的数据。 | 594 595**返回:** 596 5970 表示操作成功。 598 599非零值 表示操作失败。 600 601 602### OpenDevice() 603 604 605``` 606IUsbInterface::OpenDevice ([in] struct UsbDev dev) 607``` 608 609**描述:** 610 611打开设备,建立连接。 612 613**参数:** 614 615 | 名称 | 描述 | 616| -------- | -------- | 617| dev | USB设备地址信息,详见[UsbDev](_usb_dev.md)。 | 618 619**返回:** 620 6210 表示操作成功。 622 623非零值 表示操作失败。 624 625 626### QueryPort() 627 628 629``` 630IUsbInterface::QueryPort ([out] int portId, [out] int powerRole, [out] int dataRole, [out] int mode ) 631``` 632 633**描述:** 634 635查询USB设备端口的当前设置信息。 636 637**参数:** 638 639 | 名称 | 描述 | 640| -------- | -------- | 641| portId | USB设备端口ID。 | 642| powerRole | USB设备电源角色。 | 643| dataRole | USB设备数据角色。 | 644| mode | USB设备模式。 | 645 646**返回:** 647 6480 表示操作成功。 649 650非零值 表示操作失败。 651 652 653### RegBulkCallback() 654 655 656``` 657IUsbInterface::RegBulkCallback ([in] struct UsbDev dev, [in] struct UsbPipe pipe, [in] IUsbdBulkCallback cb ) 658``` 659 660**描述:** 661 662注册批量传输异步回调函数。 663 664**参数:** 665 666 | 名称 | 描述 | 667| -------- | -------- | 668| dev | USB设备地址信息,详见[UsbDev](_usb_dev.md)。 | 669| pipe | USB设备管道信息,详见[UsbPipe](_usb_pipe.md)。 | 670| cb | 回调函数对象,详见[IUsbdBulkCallback](interface_i_usbd_bulk_callback.md)。 | 671 672**返回:** 673 6740 表示操作成功。 675 676非零值 表示操作失败。 677 678 679### ReleaseInterface() 680 681 682``` 683IUsbInterface::ReleaseInterface ([in] struct UsbDev dev, [in] unsigned char interfaceid ) 684``` 685 686**描述:** 687 688在停止数据传输后关闭占用的USB设备接口,并释放相关资源。 689 690**参数:** 691 692 | 名称 | 描述 | 693| -------- | -------- | 694| dev | USB设备地址信息,详见[UsbDev](_usb_dev.md)。 | 695| interfaceid | USB设备接口ID。 | 696 697**返回:** 698 6990 表示操作成功。 700 701非零值 表示操作失败。 702 703 704### RequestCancel() 705 706 707``` 708IUsbInterface::RequestCancel ([in] struct UsbDev dev, [in] struct UsbPipe pipe ) 709``` 710 711**描述:** 712 713取消待处理的数据请求。 714 715**参数:** 716 717 | 名称 | 描述 | 718| -------- | -------- | 719| dev | USB设备地址信息,详见[UsbDev](_usb_dev.md)。 | 720| pipe | USB设备管道信息,详见[UsbPipe](_usb_pipe.md)。 | 721 722**返回:** 723 7240 表示操作成功。 725 726非零值 表示操作失败。 727 728 729### RequestQueue() 730 731 732``` 733IUsbInterface::RequestQueue ([in] struct UsbDev dev, [in] struct UsbPipe pipe, [in] unsigned char[] clientData, [in] unsigned char[] buffer ) 734``` 735 736**描述:** 737 738在USB设备指定端点上进行异步数据发送或者接收请求,数据传输方向由端点方向决定。 739 740**参数:** 741 742 | 名称 | 描述 | 743| -------- | -------- | 744| dev | USB设备地址信息,详见[UsbDev](_usb_dev.md)。 | 745| pipe | USB设备管道信息,详见[UsbPipe](_usb_pipe.md)。 | 746| clientData | 用户数据。 | 747| buffer | 传输的数据。 | 748 749**返回:** 750 7510 表示操作成功。 752 753非零值 表示操作失败。 754 755 756### RequestWait() 757 758 759``` 760IUsbInterface::RequestWait ([in] struct UsbDev dev, [out] unsigned char[] clientData, [out] unsigned char[] buffer, [in] int timeout ) 761``` 762 763**描述:** 764 765等待RequestQueue异步请求的操作结果。 766 767**参数:** 768 769 | 名称 | 描述 | 770| -------- | -------- | 771| dev | USB设备地址信息,详见[UsbDev](_usb_dev.md)。 | 772| clientData | 用户数据。 | 773| buffer | 传输的数据。 | 774| timeout | 超时时间。 | 775 776**返回:** 777 7780 表示操作成功。 779 780非零值 表示操作失败。 781 782 783### SetConfig() 784 785 786``` 787IUsbInterface::SetConfig ([in] struct UsbDev dev, [in] unsigned char configIndex ) 788``` 789 790**描述:** 791 792设置USB设备当前的配置信息,USB设备被主机配置过后,主机可以使用设备提供的所有功能。 793 794**参数:** 795 796 | 名称 | 描述 | 797| -------- | -------- | 798| dev | USB设备地址信息,详见[UsbDev](_usb_dev.md)。 | 799| configIndex | USB设备配置信息的字符串描述符索引值(数字字符串)。 | 800 801**返回:** 802 8030 表示操作成功。 804 805非零值 表示操作失败。 806 807 808### SetCurrentFunctions() 809 810 811``` 812IUsbInterface::SetCurrentFunctions ([in] int funcs) 813``` 814 815**描述:** 816 817设置USB设备当前的功能(按位域表示)。 818 819**参数:** 820 821 | 名称 | 描述 | 822| -------- | -------- | 823| funcs | 待设置的设备功能值。 | 824 825**返回:** 826 8270 表示操作成功。 828 829非零值 表示操作失败。 830 831 832### SetInterface() 833 834 835``` 836IUsbInterface::SetInterface ([in] struct UsbDev dev, [in] unsigned char interfaceid, [in] unsigned char altIndex ) 837``` 838 839**描述:** 840 841设置USB设备指定接口的备选设置,用于在具有相同ID但不同备用设置的两个接口之间进行选择。 842 843**参数:** 844 845 | 名称 | 描述 | 846| -------- | -------- | 847| dev | USB设备地址信息,详见[UsbDev](_usb_dev.md)。 | 848| interfaceid | USB设备接口ID。 | 849| altIndex | USB设备接口的备用设置信息。 | 850 851**返回:** 852 8530 表示操作成功。 854 855非零值 表示操作失败。 856 857 858### SetPortRole() 859 860 861``` 862IUsbInterface::SetPortRole ([in] int portId, [in] int powerRole, [in] int dataRole ) 863``` 864 865**描述:** 866 867设置USB设备端口的角色。 868 869**参数:** 870 871 | 名称 | 描述 | 872| -------- | -------- | 873| portId | USB设备端口ID。 | 874| powerRole | 电源角色的值。 | 875| dataRole | 数据角色的值。 | 876 877**返回:** 878 8790 表示操作成功。 880 881非零值 表示操作失败。 882 883 884### UnbindUsbdSubscriber() 885 886 887``` 888IUsbInterface::UnbindUsbdSubscriber ([in] IUsbdSubscriber subscriber) 889``` 890 891**描述:** 892 893解绑订阅者。 894 895**参数:** 896 897 | 名称 | 描述 | 898| -------- | -------- | 899| subscriber | 订阅者信息,详见[IUsbdSubscriber](interface_i_usbd_subscriber.md)。 | 900 901**返回:** 902 9030 表示操作成功。 904 905非零值 表示操作失败。 906 907 908### UnRegBulkCallback() 909 910 911``` 912IUsbInterface::UnRegBulkCallback ([in] struct UsbDev dev, [in] struct UsbPipe pipe ) 913``` 914 915**描述:** 916 917注销批量传输异步回调函数。 918 919**参数:** 920 921 | 名称 | 描述 | 922| -------- | -------- | 923| dev | USB设备地址信息,详见[UsbDev](_usb_dev.md)。 | 924| pipe | USB设备管道信息,详见[UsbPipe](_usb_pipe.md)。 | 925 926**返回:** 927 9280 表示操作成功。 929 930非零值 表示操作失败。 931