DriverStudio的KUsbLowerDevice类(2)
- UID
- 1066743
|
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。
bIn为TURE表示输入,数据从设备到主机;FALSE表示输出,数据从主机到设备。
bShortOk为TRUE标示设备传输的字节数可以少于指定的字节数。
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。
|
|
|
|
|
|