2、KUsbInterface类
KUsbInterface类的作用更多的是结构上的而非功能上的,其成员函数几乎不与实际物理设备交互。驱动程序用这个类可获得接口和管道的信息。
成员函数如下:
★
NTSTATUS Initialize (
KUsbInterfaceDevice& Device,
UCHAR InterfaceNumber,
UCHAR ConfigurationValue,
UCHAR InitialAlternateSetting);
初始化一个用默认构造函数定义的KUsbInterface类实例,在IRQL<=DISPATCH_LEVEL中断级别上调用该函数。
Device为KUsbInterfaceDevice类实例。
InterfaceNumber为接口号。
ConfigurationValue为配置号。
InitialAlternateSetting为初始化配置的接口号。
★
SA_STATUS SelectAlternate (UCHAR AlternateSetting);
按指定的接口号重新使能接口。返回SA_SUCCESS,表示成功。
AlternateSetting为所选的接口号。
★
UCHAR AlternateSetting (void);
返回当前的接口号。
★
ULONG NumberOfPipes (void);
返回当前使能接口的管道数量。
★
PUSBD_PIPE_INFORMATION Pipes (int Index = 0);
返回指定索引号的管道信息结构地址。
★
UCHAR Protocol (vod);
返回接口的协议值。
★
UCHAR Subclass (void);
返回借口的子类值。
★
UCHAR Class (void);
返回接口的类值。
★
BOOLEAN IsOpen (void);
测试接口是否打开。返回TRUE,表示已打开。
★
PURB BuildVendorRequest ();
分配并初始化一个用于类请求的URB。
★
NTSTATUS SubmitUrb ();
将URB发送给系统USB总线驱动程序进行处理。
★
NTSTATUS ClearFeature ();
清除一个特征标志。
★
NTSTATUS SetFeature ();
设置一个特征标志。
★
NTSTATUS GetStatus ();
获取状态信息。
KUsbPipe类
KUsbPipe类对应于管道,管道是主机和一个端点的信息链接。
成员函数如下:
★
NTSTATUS Initialize (
KUsbLowerDevice& Device,
UCHAR EndPointAddress,
ULONG MaxTransferSize = 0);
初始化一个用默认构造函数定义的KUsbPipe类实例,在IRQ<=DISPATCH_LEVEL中断级别上调用该函数。
Device为KUsbLowerDevice类实例。
EndpointAddress为端点地址。
MaxTransferSize为管道最大传输字节数。
★
NTSTATUS Reset (void); |