This documentation defines the usage environment as a programming language or development platform, for which it is possible to use the USB Monitoring Control library. Theoretically, there are unlimited languages and platforms that can use the library, because it supports both pure COM and OLE automation interfaces, which makes it highly portable. For clarity, in this documentation we focus on the following two environments:
Native environment means the language that is binary compatible with COM, more precisely, the one that supports COM local interfaces. You can create a native client in C/C++ languages, Borland Delphi and others. As usual, if you are looking for the highest performance and lowest overhead, while keeping your executable as small as possible, the native environment is your right choice.
The native client must load the library as an in-proc component and make sure to use the free threaded marshaller. In fact, the so-called native interfaces in the library require that your runtime does not provide the marshaller for the interface - they are intended to be called directly. INativeListener is the only pure native interface in the library. All other interfaces are dual and can be called through any marshaller (or without one).
Please note, that you can also create the client in “native” languages, such as C++ or Delphi, that in fact call the managed version of the library interfaces. While this is possible and actually may simplify your code and boost your development time, the performance will be slightly less, compared to the one in pure native environment.