首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

DriverStudio的KUsbLowerDevice类(2)

DriverStudio的KUsbLowerDevice类(2)

指定要配置的接口和相应的管道。

pInterfaceDesc为接口描述符变量地址,由LocateInterface返回。


NTSTATUS Preconfigure (
UCHAR ConfigIndex = 0,
ULONG MaxConfigSize = DEFAULT_CONFIG_SIZE);

获取设备配置描述符。若成功返回,其值返回到成员变量m_config中,只能在PASSIVE_LEVEL中断级别上访问该数值。


ConfigIndex
为要获取的设备配置描述符的索引号。

MaxConfigSize为申请分配用于存放配置描述符的内存的字节数。


NTSTATUS Configure (void);
让系统USB总线驱动程序使设备处于配置状态,只能在PASSIVE_LEVEL中断级别上访问该数据。应先调用PreConfigure和PreconfigureInterface之后,在调用该函数。


NTSTATUS Unconfigure (
PIO_COMPLETION_ROUTINE CompletionRoutine = NULL,
PVOID Context = NULL);

调用系统USB总线驱动程序使设备处于未配置状态。若完成例程为NULL,必须在PASSIVE_LEVEL中断级别上调用该函数。


CompletionRoutine
为完成例程,默认为NULL。


Contex
为传递给完成例程的环境变量参数,默认为NULL。


注意:线面六个成员函数,KUsbInterface和KUsbPipe类也有,后面不再详述

分配初始化一个用于厂商请求的URB

TransferBufferMdl为应用程序存放传输数据的内存,需先变为KMemory类实例。

TransferBuffer为驱动程序存放传输数据的内存区。

TransferBufferLength为传输的字节数,对应于wLength

RequestTypeReservedBits为类别请求字节中的保留位。

Request为具体请求数值,对应于bRequest

Value为数值,对应于wValue

bInTURE表示输入,数据从设备到主机;FALSE表示输出,数据从主机到设备。

bShortOkTRUE标示设备传输的字节数可以少于指定的字节数。

Link为连接下一个传输的URBan,若没有则置NULL

Index为索引值,对应于wIndex

Function为类别请求,默认值为URB_FUNCTION_VENDOR_DEVICE

pUrb若指向一个已经存在的URBan,则初始化该URBan;若置NULL,则分配一个新的URB




分配并初始化一个用于类请求的URB


将URB发送给系统USB总线驱动程序进行处理。若完成例程为NULL,则必须在PASSIVE_LEVEL中断级别上调用该函数。


FORM1
将分配一个IRP,若又完成例程,则完成例程负责删除IRP,并且必须返回STATUS_MORE_PROCESSING_REQUIRED。FORM2由调用者提供一个IRP,用于PnP目的。


I
是由调用者提供的IRP。


pUrb
是创建的URBan。


CopletionRoutine
为完成例程,默认为NULL。


CompletionContext
为传递给完成例程的环境参数,默认为NULL。


mSecTimeOut
为对同步调用的定时参数,以毫秒为单位。当超过定时参数后,返回STATUS_TIMEOUT。0标示无限期等待。


NTSTATUS ClearFeature (
USHORT Feature,
PIO_COMPLETION_ROUTINE CompletionRoutine = NULL,
PVOID Context = NULL);

清除一个特征标志。这个函数分配一个URB,并发送给系统USB总线驱动程序。若完成例程为NULL,则必须在PASSIVE_LEVEL中断级别上调用该函数。若有完成例程,则完成例程负责删除URB,URB由KIrp::Urb函数获得。


Feature
为特征值。


CompletionRoutine
为完成例程,默认为NULL。

Context为传递给完成例程的环境变量参数,默认为NULL。


NTSTATUS SetFeature (
USHORT Feature,
PIO_COMPLETION_ROUTINE CompletionRoutine = NULL,
PVOID Context = NULL);

设置一个特征标志。这个函数分配一个URB,并发送给系统USB总线驱动程序。若完成例程为NULL,则必须在PASSIVE_LEVEL中断级别上调用该函数。若有完成例程,则完成例程负责删除URB,URB由KIrp::Urb函数获得。


Features
为特征值。


CompletionRoutine
为完成例程,默认为NULL。


Context
为传递给完成例程的环境变量参数,默认为NULL。


NTSTATUS GetStatus (
PUSHORT pStatus,
PIO_COMPLETION_ROUTINE CompletionRoutine = NULL,
PVOID Context = NULL);

获取状态信息。这个函数分配一个URB,并发送给系统USB总线驱动程序。若完成例程为NULL,则必须在PASSIVE_LEVEL中断级别上调用该函数。若有完成例程,则完成例程负责删除URB,URB由KIrp::Urb函数获得。


pStatus
为状态值。


CompletionRoutine
为完成例程,默认为NULL。


Context
为传递给完成例程的环境变来那个参数,默认为NULL。
返回列表