Skip to content

Special Notes on Implementing IviFgen

In February of 2016, the IVI Foundation released version 5.1 of the IviFgen instrument class specification. This version of the IviFgen class specification includes the final set of changes required to enable developers to build IviFgen-compliant IVI-COM drivers that support new interfaces for advanced arbitrary waveform generation. At the same time, the IVI Foundation released a revised IVI-COM type library that defined these new interfaces. These new interfaces are commonly referred to as the “IviFgen2” interfaces because the new root interface is named “IviFgen2”. This new IviFgen type library (version 5.1) ships as part of the IVI Shared Components version 2.4 and higher.

Because the IviFgen instrument class specification represents the only class specification for which the actual interface definitions have been revised, there are some special considerations that must be taken into account when working with IviFgen-compliant drivers.

Creating New IviFgen-Compliant IVI-COM Drivers

Section titled “Creating New IviFgen-Compliant IVI-COM Drivers”

When Nimbus 4.2 or greater is installed, creating a new IviFgen-compliant IVI-COM driver always yields an IviFgen 5.1-compliant driver. The full set of interfaces defined by IviFgen 5.1 are automatically included in the driver. There is no means to create an IviFgen 3.0-compliant IVI-COM driver with Nimbus 4.2 or greater.

In practice, there should be few, if any, reasons to create a new IVI-COM driver that complies with the earlier version of the IviFgen class specification — IviFgen 3.0. However, if you wish to create a new IviFgen 3.0-compliant IVI-COM driver, then you must install Nimbus 4.1 or earlier. An IviFgen 3.0-compliant driver may be created with IVI Shared Components 2.3 or 2.4 (or greater). However, if creating the IviFgen 3.0-compliant driver with IVI Shared Components 2.4 (or later), then any references to the IviFgen 3.0 type library will need to be manually updated to point to the IviFgen 5.1 type library. All of the IviFgen 3.0 interfaces are fully defined and shipped with IVI Shared Components 2.4, but the containing type library version was changed from 3.0 to 5.1.

To update a C# or Visual Basic project to use the IviFgen 5.1 type library:

Section titled “To update a C# or Visual Basic project to use the IviFgen 5.1 type library:”
  1. Expand the References node in Solution Explorer for the project in question and locate the IviFgenLib reference.

  2. Delete the reference.

  3. Right-click on the References node and choose Add Reference. The Reference Manager appears.

  4. Select the COM tab and then choose Type Libraries.

  5. Check the entry titled “IviFgen 5.1 Type Library” and click OK.

To update a C++ project to use the IviFgen 5.1 type library:

Section titled “To update a C++ project to use the IviFgen 5.1 type library:”
  1. Locate any #import statements in the project source files that refer to the IviFgen type library. Nimbus automatically creates statements that look like the following:

    #import IviFgenLib_LIBID version("3.0") no_namespace
  2. Change the arguments to the version attribute from 3.0 to 5.1.

Working with Existing IviFgen 3.0-Compliant IVI-COM Drivers

Section titled “Working with Existing IviFgen 3.0-Compliant IVI-COM Drivers”

As noted above, when Nimbus 4.2 or greater is installed, you cannot create new IviFgen 3.0-compliant IVI-COM drivers. However, you can open, edit, and run existing IviFgen 3.0-compliant IVI-COM drivers. The driver will remain an IviFgen 3.0-compliant driver. No additional dependencies will be incorporated into the driver by virtue of compiling it on a machine with IVI Shared Components 2.4 installed. The driver will run on end user machines with much earlier versions of the IVI Shared Components than version 2.4.