Answer by JohnHarvey · Mar 28, 2014 at 02:40 PM
There are two ways to instantiate a COM or .NET driver. The answer to this question depends on which you intend to use.
The simplest answer to this question is to instantiate the instrument-specific driver directly, without using any of the class-compliant features of IVI. If you instantiate the driver directly, all of the driver-specific interfaces will be accessible. In this case, you will be limited only by what the driver developers chose to include in the driver. (Many drivers choose to exclude certain items such as calibration or features that assume physical interaction with the instrument.)
If you are trying to write class-compliant code in which two or more compatible instruments that are IVI class-compliant use only the class-compliant interfaces, and can be interchanged, you must configure the instruments and drivers in the IVI configuration store and instantiate the drivers using the session factory (COM) or a class Create() method (.NET). In this case, you are limited to the class-compliant functionality of the driver. However, you can always cast from an IIviDriver reference to the instrument-specific base class of the driver if you are willing to introduce instrument-specific references into your code.
Even if an instrument command is not explicitly supported by the driver, it may still be possible to use the command if the driver supports some form of direct I/O to the instrument, either with basic I/O commands like read/write that the driver implements, or with a direct I/O mechanism that exposes the I/O (such as VISA-COM) that the driver is using to communicate with the instrument. All drivers that are compliant with the IVI-2014 generation of specifications are required to include direct I/O features, and many earlier drivers also support them.