标题:
DriverStudio的KUsbLowerDevice类(1)
[打印本页]
作者:
look_w
时间:
2017-11-18 13:26
标题:
DriverStudio的KUsbLowerDevice类(1)
DriverWorks
提供了三个类:
KUsbLowerDevice
、
KUsbInterface
和
KUsbPipe
类,用于实现
USB
设备操作。
KUsbLowerDevice
类用于逻辑设备的编程,
KUsbInterface
类用于借口的编程,
KUsbPipe
类用于管道的编程。
1
、
KUsbLowerDevice
类
KUsbLowerDevice
类是
KPnpLowerDevice
类的继承,它继承类
KPnpLowerDevice
类的成员函数。
KUsbLowerDevice
类实例代表端点
0
,允许
USB
驱动程序通过默认控制管道控制
USB
设备,如配置
USB
设备,传输各种控制和状态请求。
成员函数如下:
★
NTSTATUS Initialize (
KDevice* AttachingDevice,
PDEVICE_OBJECT PhysicalDeviceObject);
初始化一个用默认构造函数定义的
KUsbLowerDevice
类实例,必须在
PASSIVE_LEVEL
中断级别上调用该函数。如下所示:
KUsbLowerDevice m_Lower;
M_Lower.Initialize (this, Pdo);
★
AC_STATUS ActiveConfiguration (
UCHAR ConfigurationValue,
ULONG MaxConfigSize = 1024);
激活指定的USB设备配置,在PnP开始例程中使用。
ConfigurationValue
为配置号,第1个配置号为1.
MaxConfigSize
为声明存放设备配置描述符的最大存储空间字节数。
返回AC_SUCCESS表示成功,还有七种错误代码。
★
NTSTATUS DeActivateConfiguration (
PIO_COMPLETION_ROUTINE pfnCompletionRoutine = NULL,
PVOID pContext = NULL);
终止
USB
设备当前活动配置,在
PnP
停止例程中使用。若完成例程为
NULL
,应在
passive_level
中断级别上调用该函数。
pfnCompletionRoutine
为完成例程,默认为
NULL
。
pContext
为传递给完成例程的环境变量参数,默认为
NULL
。
★
void ReleaseResources (void);
释放动态分配的
USB
资源,在
PnP
删除例程中使用。
★
NTSTATUS GetDeviceDescriptor (PUSB_DEVICE_DESCRIPTOR pDevDesc);
获取设备描述符,必须在
PASSIVE_LEVEL
中断级别上调用该函数。
pDevDesc
存放设备描述符变量的地址。
★
NTSTATUS GetStringDescroptor (
UCHAR Index,
PSTR pStr,
LONG MaxLen,
SHORT LangId);
获取字符串描述符,必须在
PASSIVE_LEVEL
中断级别上调用该函数。
Index
为字符串索引号。
pStr
为存放字符串地址。
MaxLen
为字符串的最大字节数。
LangId
为语言
ID
号,默认为
English/American
。
★
ULONG GetCurrentFrameNumber (void);
从系统
USB
总线驱动程序返回当前
USB
帧号,在同步传输中可以用作起始帧号。
★
PUSB_INTERFACE_DESCRIPTOR LocateInterface (
PVOID* pStart,
PUSB_ENDPOINT_DESCRIPTOR* ppEndpoints,
LONG InterfaceNumber = -1,
LONG AlternateSetting = -1,
LONG InterfaceClass = -1,
LONG InterfaceSubClass = -1,
LONG InterfaceProtocal = -1);
返回接口描述符,必须在
PASSIVE_LEVEL
中断级别上调用该函数。
pStart
为地址指针。初次调用或重新开始搜索时,置为
NULL
。调用者不能改变指针数值,仅作为内部重复搜索接口的标志。
ppEndpoints
为存放属于该接口的端点阵列。
InterfaceNumber
为接口索引号,
-1
表示非标准值。
InterfaceSetting
为要选择的接口设置值,
-1
表示非标准值。
InterfaceClass
为接口类值,
-1
表示非标准值。
InterfaceSubClass
为接口子类值,
-1
表示非标准值。
InterfaceProtocol
为接口协议值,
-1
表示非标准值。
★
NTSTATUS PreconfigureInterface (
PUSB_INTERFACE_DESCRIPTOR pInterfaceDesc);
欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/)
Powered by Discuz! 7.0.0