twain2/scn_usb.h

67 lines
1.8 KiB
C++

#ifndef SCN_USB_H_HEADER_INCLUDED_B2BF228E
#define SCN_USB_H_HEADER_INCLUDED_B2BF228E
#include <Windows.h>
#include <usbscan.h>
#pragma pack(1)
struct tag_usb_pipe
{
HANDLE h_pipe;
USBSCAN_PIPE_INFORMATION pipe_info;
OVERLAPPED overlap;
};
typedef struct tag_usb_pipe usb_pipe_t, *pusb_pipe_t;
#pragma pack()
typedef struct tag_usb_scan_dev_info
{
WORD vid;
WORD pid;
WORD index;
}usb_scan_dev_info, *pusb_scan_dev_info;
typedef struct tag_usb_scan_dev
{
USHORT _NumberOfDevs;
tag_usb_scan_dev_info dev_infos[1024];
}usb_scan_dev, *pusb_scan_dev;
//##ModelId=4D40D3230138
class cscn_usb
{
public:
USBSCAN_PIPE_CONFIGURATION m_usbscan_config;
usb_pipe_t m_usb_pipes[MAX_NUM_PIPES];
HANDLE m_h_dev;
void init(WORD w_vid, WORD w_pid);
BOOL control_in (BYTE by_pipe_addr, WORD w_value, WORD w_index, PVOID p_data, DWORD dw_size, PDWORD pdw_read, LPOVERLAPPED lp_overlap);
BOOL control_out (BYTE by_pipe_addr, WORD w_value, WORD w_index, PVOID p_data, DWORD dw_size, PDWORD pdw_write, LPOVERLAPPED lp_overlap);
BOOL interrupt_in(BYTE by_pipe_addr, PBYTE pby_data, BYTE by_len, PBYTE pby_read, LPOVERLAPPED lp_overlap);
BOOL bulk_in (BYTE by_pipe_addr, PVOID p_data, DWORD dw_size, DWORD timeout,PDWORD pdw_ret);
BOOL bulk_out(BYTE by_pipe_addr, PVOID p_data, DWORD dw_size, PDWORD pdw_ret);
HANDLE open(WORD index);
BOOL Read_Data(PVOID p_data, DWORD length, DWORD timeout, PDWORD pdw_ret);
BOOL close(void);
cscn_usb(void);
~cscn_usb(void);
BOOL is_connected(void);
private:
BOOL m_b_is_connected;
//##ModelId=4D41B612027E
WORD m_w_vid;
//##ModelId=4D41B62200F7
WORD m_w_pid;
//##ModelId=4D41B63103A7
WORD m_w_serial_no;
};
usb_scan_dev Devices();
usb_scan_dev Devices(WORD w_vid);
usb_scan_dev Devices(WORD w_vid, WORD w_pid);
#endif /* SCN_USB_H_HEADER_INCLUDED_B2BF228E */