#ifndef _DEVICE_H_ #define _DEVICE_H_ // windows #include typedef struct _DEVICE_INFO DEVICE_INFO, *PDEVICE_INFO; typedef void (*FN_DeviceReadPacket)( PDEVICE_INFO lpDeviceInfo, PUCHAR lpBufferData, ULONG dwBufferSize); typedef struct _DEVICE_INFO { CHAR Path[MAX_PATH]; CHAR Description[MAX_PATH]; CHAR Location[MAX_PATH]; CHAR HardwareID[MAX_PATH]; HANDLE Handle; FN_DeviceReadPacket ReadPacketCallback; UCHAR Channel; ULONG Index; PVOID UserData; } DEVICE_INFO, *PDEVICE_INFO; typedef struct _DEVICE_STATISTICS { LARGE_INTEGER FCSErrorCount; ULONG ReceivedSuccessCount; ULONG TransmittedSuccessCount; } DEVICE_STATISTICS, *PDEVICE_STATISTICS; // device BOOL DeviceFind( PDEVICE_INFO lpDeviceInfo, DWORD dwIndex); BOOL DeviceOpen( PDEVICE_INFO lpDeviceInfo); BOOL DeviceClose( PDEVICE_INFO lpDeviceInfo); // packet read/write DWORD DeviceReadPacket( PDEVICE_INFO lpDeviceInfo, PVOID lpBufferData, ULONG BufferLength, ULONG dwTimeout); BOOL DeviceWritePacket( PDEVICE_INFO lpDeviceInfo, PVOID lpBufferData, ULONG BufferLength); BOOL DeviceSetReadPacketCallback( PDEVICE_INFO lpDeviceInfo, FN_DeviceReadPacket ReadPacketCallback); // receive thread BOOL DeviceThreadReceiveStart( PDEVICE_INFO lpDeviceInfo); BOOL DeviceThreadReceiveStop( PDEVICE_INFO lpDeviceInfo); // channel BOOL DeviceGetChannel( PDEVICE_INFO lpDeviceInfo, PUCHAR lpChannel); BOOL DeviceSetChannel( PDEVICE_INFO lpDeviceInfo, UCHAR Channel); // packet filter BOOL DeviceSetPacketFilter( PDEVICE_INFO lpDeviceInfo, ULONG PacketFilter); // mac address BOOL DeviceGetMacAddress( PDEVICE_INFO lpDeviceInfo, PUCHAR lpMacAddress); BOOL DeviceSetMacAddress( PDEVICE_INFO lpDeviceInfo, PUCHAR lpMacAddress); // statistics BOOL DeviceGetStatistics( PDEVICE_INFO lpDeviceInfo, PDEVICE_STATISTICS lpDeviceStats); // other stuff BOOL DeviceGetDriverVersion( PDEVICE_INFO lpDeviceInfo, PUSHORT lpVersion); #endif