IDTech Windows SDK Guide  1.1.178.0 / NuGet 2.0.1.13
API reference for SREDKey2
Initialize SREDKey2:

A Singleton instance has been established in the IDT_SREDKey2 class. Establish the callback, and then any call to the singleton will automatically connect via USB if you then enable USB Monitoring.

public SREDKey2_Simple_Demo()
{
InitializeComponent();
IDT_SREDKey2.setCallback(MessageCallBack);
IDT_Device.startUSBMonitoring();
string firmwareVersion = "";
RETURN_CODE rt = IDT_SREDKey2.SharedController.device_getFirmwareVersion(ref firmwareVersion);
}

Alternately, the IDTechSDK.dll library can be used to drive multiple IDTech Devices. If the plan is to use two or more devices, then the IDT_Device class should be used instead of the invidual device class. You can then tell the SDK what device to use, and then use the same code/API method for both devices:

public MultiDevice_Simple_Demo()
{
InitializeComponent();
IDT_Device.setCallback(MessageCallBack);
IDT_Device.startUSBMonitoring();
string firmwareVersion = "";
//Let's first get the FW version from SREDKEY2
IDT_Device.setDeviceType(IDT_DEVICE_Types.IDT_DEVICE_SREDKEY2, DEVICE_INTERFACE_Types.DEVICE_INTERFACE_USB,
DEVICE_PROTOCOL_Types.DEVICE_PROTOCOL_KB);
RETURN_CODE rt = IDT_Device.SharedController.device_getFirmwareVersion(ref firmwareVersion);
//Let's now switch to the VP3300 (also connected to computer via USB) and get firmware version from that device
IDT_Device.setDeviceType(IDT_DEVICE_Types.IDT_DEVICE_VP3300, DEVICE_INTERFACE_Types.DEVICE_INTERFACE_USB,
DEVICE_PROTOCOL_Types.DEVICE_PROTOCOL_IDG);
rt = IDT_Device.SharedController.device_getFirmwareVersion(ref firmwareVersion);
}

The SDK is driven by the commands in the IDT_Device class. This class has all the functions for many different ID Tech devices. As a result, there may be many functions that may not be applicable to your particular device. That is why we also provide the individual device class, like IDT_SREDKey2. When you use that individual device class, that acts as a filter of all the available commands that can be executed in the IDT_Device class. If you attempt to use an API method in IDT_Device class not intended for your particular device, either the SDK or the device FW will return an applicable error code as a response.