typedef
VOID
( CALLBACK
* mPCH375_INT_ROUTINE ) (
// 中断服务回调程序
PUCHAR
iBuffer );
// 指向一个缓冲区,提供当前的中断特征数据
HANDLE
WINAPI
CH375OpenDevice(
// 打开CH375设备,返回句柄,出错则无效
ULONG
iIndex );
// 指定CH375设备序号,0对应第一个设备,-1则自动搜索一个可以被打开的设备并返回序号
VOID
WINAPI
CH375CloseDevice(
// 关闭CH375设备
ULONG
iIndex );
// 指定CH375设备序号
ULONG
WINAPI
CH375GetVersion( );
// 获得DLL版本号,返回版本号
ULONG
WINAPI
CH375DriverCommand(
// 直接传递命令给驱动程序,出错则返回0,否则返回数据长度
ULONG
iIndex,
// 指定CH375设备序号,V1.6以上DLL也可以是设备打开后的句柄
mPWIN32_COMMAND
ioCommand );
// 命令结构的指针
// 该程序在调用后返回数据长度,并且仍然返回命令结构,如果是读操作,则数据返回在命令结构中,
// 返回的数据长度在操作失败时为0,操作成功时为整个命令结构的长度,例如读一个字节,则返回mWIN32_COMMAND_HEAD+1,
// 命令结构在调用前,分别提供:管道号或者命令功能代码,存取数据的长度(可选),数据(可选)
// 命令结构在调用后,分别返回:操作状态代码,后续数据的长度(可选),
//
操作状态代码是由WINDOWS定义的代码,可以参考NTSTATUS.H,
//
后续数据的长度是指读操作返回的数据长度,数据存放在随后的缓冲区中,对于写操作一般为0
ULONG
WINAPI
CH375GetDrvVersion( );
// 获得驱动程序版本号,返回版本号,出错则返回0
BOOL
WINAPI
CH375ResetDevice(
// 复位USB设备
ULONG
iIndex );
// 指定CH375设备序号
BOOL
WINAPI
CH375GetDeviceDescr(
// 读取设备描述符
ULONG
iIndex,
// 指定CH375设备序号
PVOID
oBuffer,
// 指向一个足够大的缓冲区,用于保存描述符
PULONG
ioLength );
// 指向长度单元,输入时为准备读取的长度,返回后为实际读取的长度
BOOL
WINAPI
CH375GetConfigDescr(
// 读取配置描述符
ULONG
iIndex,
// 指定CH375设备序号
PVOID
oBuffer,
// 指向一个足够大的缓冲区,用于保存描述符
PULONG
ioLength );
// 指向长度单元,输入时为准备读取的长度,返回后为实际读取的长度
BOOL
WINAPI
CH375SetIntRoutine(
// 设定中断服务程序
ULONG
iIndex,
// 指定CH375设备序号
mPCH375_INT_ROUTINE
iIntRoutine );
// 指定中断服务回调程序,为NULL则取消中断服务,否则在中断时调用该程序
BOOL
WINAPI
CH375ReadInter(
// 读取中断数据
ULONG
iIndex,
// 指定CH375设备序号
PVOID
oBuffer,
// 指向一个足够大的缓冲区,用于保存读取的中断数据
PULONG
ioLength );
// 指向长度单元,输入时为准备读取的长度,返回后为实际读取的长度
BOOL
WINAPI
CH375AbortInter(
// 放弃中断数据读操作
ULONG
iIndex );
// 指定CH375设备序号
BOOL
WINAPI
CH375ReadData(
// 读取数据块
ULONG
iIndex,
// 指定CH375设备序号
PVOID
oBuffer,
// 指向一个足够大的缓冲区,用于保存读取的数据
PULONG
ioLength );
// 指向长度单元,输入时为准备读取的长度,返回后为实际读取的长度
BOOL
WINAPI
CH375AbortRead(
// 放弃数据块读操作
ULONG
iIndex );
// 指定CH375设备序号
BOOL
WINAPI
CH375WriteData(
// 写出数据块
ULONG
iIndex,
// 指定CH375设备序号
PVOID
iBuffer,
// 指向一个缓冲区,放置准备写出的数据
PULONG
ioLength );
// 指向长度单元,输入时为准备写出的长度,返回后为实际写出的长度
BOOL
WINAPI
CH375AbortWrite(
// 放弃数据块写操作
ULONG
iIndex );
// 指定CH375设备序号
BOOL
WINAPI
CH375WriteRead(
// 先写出标准的数据块(命令),再读取标准的数据块(应答)
ULONG
iIndex,
// 指定CH375设备序号
PVOID
iBuffer,
// 指向一个缓冲区,放置准备写出的数据,长度不大于mCH375_PACKET_LENGTH
PVOID
oBuffer,
// 指向一个足够大的缓冲区,长度不小于mCH375_PACKET_LENGTH,用于保存读取的数据
PULONG
ioLength );
// 指向长度单元,不大于mCH375_PACKET_LENGTH,输入时为准备写出的长度,返回后为实际读取的长度
BOOL
WINAPI
CH375GetStatus(
// 通过CH375直接输入数据和状态
ULONG
iIndex,
// 指定CH375设备序号
PULONG
iStatus );
// 指向一个双字单元,用于保存状态数据
// 位7-位0对应CH375的D7-D0引脚,位9对应CH375的RXD#引脚,位10对应CH375的REQ#引脚
BOOL
WINAPI
CH375SetTimeout(
// 设置USB数据读写的超时
ULONG
iIndex,
// 指定CH375设备序号
ULONG
iWriteTimeout,
// 指定USB写出数据块的超时时间,以毫秒mS为单位,0xFFFFFFFF指定不超时(默认值)
ULONG
iReadTimeout );
// 指定USB读取数据块的超时时间,以毫秒mS为单位,0xFFFFFFFF指定不超时(默认值)
BOOL
WINAPI
CH375WriteAuxData(
// 写出辅助数据
ULONG
iIndex,
// 指定CH375设备序号
PVOID
iBuffer,
// 指向一个缓冲区,放置准备写出的数据
PULONG
ioLength );
// 指向长度单元,输入时为准备写出的长度,返回后为实际写出的长度
BOOL
WINAPI
CH375SetExclusive(
// 设置独占使用当前CH375设备
ULONG
iIndex,
// 指定CH375设备序号
ULONG
iExclusive );
// 为0则设备可以共享使用,非0则独占使用
ULONG
WINAPI
CH375GetUsbID(
// 获取USB设备ID,返回数据中,低16位为厂商ID,高16位为产品ID,错误时返回全0(无效ID)
ULONG
iIndex );
// 指定CH375设备序号
PVOID
WINAPI
CH375GetDeviceName(
// 返回指向CH375设备名称的缓冲区,出错则返回NULL
ULONG
iIndex );
// 指定CH375设备序号,0对应第一个设备
BOOL
WINAPI
CH375SetBufUpload(
// 设定内部缓冲上传模式
ULONG
iIndex,
// 指定CH375设备序号,0对应第一个设备
ULONG
iEnableOrClear );
// 为0则禁止内部缓冲上传模式,使用直接上传,非0则启用内部缓冲上传模式并清除缓冲区中的已有数据
// 如果启用内部缓冲上传模式,那么CH375驱动程序创建线程自动接收USB上传数据到内部缓冲区,同时清除缓冲区中的已有数据,当应用程序调用CH375ReadData后将立即返回缓冲区中的已有数据
LONG
WINAPI
CH375QueryBufUpload(
// 查询内部上传缓冲区中的已有数据包个数,成功返回数据包个数,出错返回-1
ULONG
iIndex );
// 指定CH375设备序号,0对应第一个设备
BOOL
WINAPI
CH375SetBufDownload(
// 设定内部缓冲下传模式
ULONG
iIndex,
// 指定CH375设备序号,0对应第一个设备
ULONG
iEnableOrClear );
// 为0则禁止内部缓冲下传模式,使用直接下传,非0则启用内部缓冲下传模式并清除缓冲区中的已有数据
// 如果启用内部缓冲下传模式,那么当应用程序调用CH375WriteData后将仅仅是将USB下传数据放到内部缓冲区并立即返回,而由CH375驱动程序创建的线程自动发送直到完毕
LONG
WINAPI
CH375QueryBufDownload(
// 查询内部下传缓冲区中的剩余数据包个数(尚未发送),成功返回数据包个数,出错返回-1
ULONG
iIndex );
// 指定CH375设备序号,0对应第一个设备
BOOL
WINAPI
CH375ResetInter(
// 复位中断数据读操作
ULONG
iIndex );
// 指定CH375设备序号
BOOL
WINAPI
CH375ResetAux(
// 复位辅助数据写操作
ULONG
iIndex );
// 指定CH375设备序号
BOOL
WINAPI
CH375ResetRead(
// 复位数据块读操作
ULONG
iIndex );
// 指定CH375设备序号
BOOL
WINAPI
CH375ResetWrite(
// 复位数据块写操作
ULONG
iIndex );
// 指定CH375设备序号
typedef
VOID
( CALLBACK
* mPCH375_NOTIFY_ROUTINE ) (
// 设备事件通知回调程序
ULONG
iEventStatus );
// 设备事件和当前状态(在下行定义): 0=设备拔出事件, 3=设备插入事件