National Instruments NI-VISA™ Software for Windows, Version 4.4.1

Read Me First, July 2008

© 1995–2008 National Instruments Corporation. All rights reserved.



Using NI-VISA 4.4.1

Supported Platforms

Supported Development Environments

Installing and Uninstalling NI-VISA 4.4.1

LabWindows™/CVI™ Run-Time Engine

PXI Support

PXI Geographic Addressing Support

PXI Resource Naming

PXI System Configuration

Multiple GPIB-VXI Controller Support

Agilent/HP Controller Support

Using viPeekXX/viPokeXX Macros

WHQL Signing USB Hardware

Creating and Digitally Signing Catalog Files

Known Issues

Improvements and Bug Fixes

NI-VISA 4.4.1







NI-VISA 3.5.1


NI-VISA 3.4.1


NI-VISA 3.3.1




NI-VISA 3.0.1



Using NI-VISA 4.4.1

Supported Platforms

NI-VISA for Windows supports the following platforms:

While this distribution targets all these platforms, you can run setup.exe only on Windows Vista, Windows XP, and Windows 2000.

Supported Development Environments

NI-VISA for Windows supports the following development environments:

Installing and Uninstalling NI-VISA 4.4.1

NI-VISA 4.4.1 does not support Windows 9x/NT. To run your VISA application on Windows 95, you must install NI-VISA 2.6.1 or lower. To run your VISA application on Windows 98/Me, you must install NI-VISA 3.0.1 or lower. To run your VISA application on Windows NT, you must install NI-VISA 3.3.1 or lower.

Before you install NI-VISA 4.4.1, we strongly recommend that you uninstall any versions of VISA prior to NI-VISA 2.0.1. NI-VISA 4.4.1 should upgrade properly over NI-VISA 2.0.1 through 4.3.

After uninstalling NI-VISA, some DLLs and executables may remain in the NI-VISA directories. To complete the uninstall process, you must restart your machine.

Note: The uninstaller application does not notify you when rebooting is necessary. If you plan to reinstall NI-VISA, you should always reboot the machine after running the uninstaller.

You can programmatically or "silently" install NI-VISA. You can also programmatically control which features of NI-VISA are enabled for installation, allowing you to install a subset of the NI-VISA feature list. Refer to the spec.ini file in the same directory as this readme for more information about installing NI-VISA programmatically and selecting which features to install.

LabWindows/CVI Run-Time Engine

The Setup program now automatically installs the LabWindows/CVI Run-Time Engine when necessary. The NI-VISA interactive utility, VISAIC, requires the LabWindows/CVI Run-Time Engine 8.0 or later to be installed. When you install this utility, Setup also installs the LabWindows/CVI Run-Time Engine if it is not already present.

PXI Support

PXI Geographic Addressing Support

Starting with NI-VISA 3.0, NI-VISA supports geographic addressing for PXI resources. Geographic addressing includes the ability to identify the chassis number and slot number for a PXI module. To support geographic addressing, the following attributes have been implemented on the PXI INSTR resource type:

  • VI_ATTR_SLOT—specifies the PXI slot number for instrument.
  • VI_ATTR_PXI_CHASSIS—specifies the PXI chassis number for the instrument.

Using these attributes, PXI resources can be located based on their geographic address in a system. For example, you can use the resource description string "PXI?*INSTR{VI_ATTR_PXI_CHASSIS==1 && VI_ATTR_SLOT==3}" to locate a PXI device in chassis 1, slot 3.

PXI Resource Naming

Starting with NI-VISA 3.0, NI-VISA includes a new PXI resource format based on the traditional bus number/device number/function number addressing scheme:


For example, given a PXI device at bus 2, device number 17, function number 1, the corresponding resource name for this device would be PXI0::2-17.1::INSTR.

In this new resource name, the 0 in PXI0 represents the PCI interface number for the PXI system. Currently, this interface number is always 0. Note that the interface number is not necessarily the same as a device's PCI bus number.

Of course, NI-VISA continues to support the legacy PXI naming convention:


Note that for a single-function PXI device on PCI bus 0, both of these resource formats yield an identical string.

PXI System Configuration

To enable geographic addressing, a PXI system description file (pxisys.ini) must be present on the system. Beginning with NI-VISA 3.0, Measurement & Automation Explorer (MAX) includes the ability to identify components in a PXI system. Through the hardware identification process, MAX collects the information necessary to generate a PXI system description file.

Follow these steps to configure your PXI system for geographic addressing:

  1. Launch MAX.
  2. Expand the Devices and Interfaces folder. If you are configuring a LabVIEW RT system, locate that system's Devices and Interfaces folder under the Remote Systems view.
  3. Identify your PXI controller. Locate the PXI System 0 item. PXI System 0 represents the PXI system and its controller. To identify this controller, right-click on PXI System 0 and use the Identify As feature, selecting your controller from the resulting list.

    Note: If you are using an external PC to control the PXI system via a PXI bridge such as MXI-3, select this option from the menu.

  4. Identify your PXI chassis. Expand the PXI System 0 view to locate your PXI chassis in the system. For embedded controllers, a chassis is added when the controller has been identified. For a chassis controlled via MXI-3, these chassis are added automatically by the software. To identify a chassis, right-click on the chassis and use the Identify As feature, selecting your chassis from the resulting list. The chassis is assigned a number based on the PCI bus number that the chassis resides on.

Once the controller and chassis have been identified, a pxisys.ini file is created. This file conforms to the PXI specification and allows drivers (including NI-VISA) and other configuration software to enable geographic addressing and other features of PXI. On Windows, this file is in the Windows directory. For LabVIEW RT systems, the pxisys.ini file is automatically copied to the remote system's c:\ni-rt\system directory.

Multiple GPIB-VXI Controller Support

NI-VISA supports multiple GPIB-VXI controllers in a single system. Because the National Instruments GPIB-VXI controller ships with a primary address of 1, NI-VISA automatically searches for any GPIB-VXI controllers at that address.

If you have changed the primary address (for example, if you added a second GPIB-VXI controller to your system and set the primary address of the second controller to 9), or if you have a GPIB-VXI controller from another vendor, you need to add it using MAX so NI-VISA can find it. Right-click on Devices and Interfaces and select Create New... to add a new GPIB-VXI interface. Specify the controller's GPIB primary and secondary addresses, as well as the GPIB board to which it is connected. Then specify a new GPIB-VXI interface number and its logical address (usually 0).

If you are using a GPIB-VXI command module from another vendor, you also need to obtain and install that vendor's VISA GPIB-VXI component.

If you have a GPIB device at primary address 1 and that device does not recognize *IDN?, you should disable the GPIB-VXI auto-detect feature in MAX from the Tools»NI-VISA»VISA Options menu.

Agilent/HP Controller Support

NI-VISA now works with Agilent/HP GPIB and VXI controller cards. To use this feature, go into MAX, select Tools»NI-VISA»VISA Options, choose the Passports tab, and enable the NiVisaTulip.dll Passport. NI-VISA automatically finds and accesses any GPIB or VXI devices. However, NI-VISA does not configure the Agilent/HP hardware; you still must do that with the Agilent/HP I/O Config utility.

If you have both National Instruments and Agilent/HP controllers in the same system, you must configure the cards at different system addresses, such as GPIB0 and GPIB1. If both vendors try to use the same interface address, NI-VISA reports an error from viFindRsrc or VISA Find Resources.

Using viPeekXX/viPokeXX Macros

Users who want to use the viPeekXX/viPokeXX macros for platforms on which the macros are available must define a macro called NIVISA_PEEKPOKE before including visa.h. Note that the macros are currently available on only the Win32 platform (all C/C++ compilers).

If you have used these macros with a version of NI-VISA prior to 2.0, your application will continue to run, but the peek/poke performance decreases. You should relink with the libraries supplied with this installation to regain the prior peek/poke performance.

WHQL Signing USB Hardware

To WHQL (Windows Hardware Quality Labs) sign your USB hardware using the NI-VISA driver for Windows XP/2000, as part of this process you need a PDB (Program DataBase) file for the underlying driver (NiViUsbK.sys).

NiViUsbK.pdb is provided for this purpose. It is in <NI-VISA Installation Directory>\WinNT\NIvisa\USB. This is typically C:\VXIPNP\WinNT\NIvisa\USB.

Creating and Digitally Signing Catalog Files

On Windows Vista, if you generate an INF file using the NI-VISA Driver Wizard, the INF file installs correctly by itself. However, a warning dialog notifies you that Windows cannot verify the publisher of this driver software. To avoid this dialog, you must create and digitally sign a Windows Catalog (.cat) file.

For more information about creating and signing catalog files, Microsoft has a Kernel-Mode Code Signing Walkthrough whitepaper that describes the details of this process. The generated catalog file should reference only the INF file.

Known Issues

IVI driver developers can use the new VISA COM API. NI-VISA does not yet document this API, so only those developers familiar with the specification should use it in this release. The relevant COM classes for getting started include IResourceManager and IVisaSession, registered in GlobMgr.dll. The VISA COM API is functionally equivalent to the VISA C API. It does not add features; it is just another language interface. You can install the VISA COM API only if you have Internet Explorer 4.01 or higher on your system.

If you are using NI-VISA with the VisaNS .NET API, you may find that an existing project created with an older version of VisaNS now produces build errors that read error CS0011: Referenced class '<className>' has base class or interface 'NationalInstruments.ISynchronizeCallbacks' defined in an assembly that is not referenced. You must add a reference to assembly 'NationalInstruments.Common'. To eliminate this error, add a reference to the NationalInstruments.Common assembly to your project.

The NI-VISA Configuration component is not compatible with NI-RIO 2.1 and lower. The NI-VISA Installer shows a warning if the NI-VISA Configuration component is selected to be installed and NI-RIO 2.1 or lower is currently installed on the system.

If NI-VISA 4.2 or earlier is installed on a system with LabWindows/CVI 8.5 or later, and you then subsequently upgrade to NI-VISA 4.3 or later, the installer does not clean up some of the older files. In this installation scenario, to use the latest VISA API with LabWindows/CVI, you should manually remove the following files, after upgrading NI-VISA:

C:\Program Files\National Instruments\CVI85\bin\visa.lfp
C:\Program Files\National Instruments\CVI85\bin\visa.sub
C:\Program Files\National Instruments\CVI85\bin\msvc\visa.lib
C:\Program Files\National Instruments\CVI85\bin\borland\visa.lib
C:\Program Files\National Instruments\CVI85\extlib\msvc\visa.lib
C:\Program Files\National Instruments\CVI85\extlib\borland\visa.lib
C:\Program Files\National Instruments\CVI85\include\visa.h
C:\Program Files\National Instruments\CVI85\include\vpptype.h
C:\Program Files\National Instruments\CVI85\include\visatype.h

Improvements and Bug Fixes

NI-VISA 4.4.1

Bug ID 119631. On Windows Vista, certain installation upgrade scenarios may cause a system crash (blue screen). This is fixed.


Added support for using NI-VISA with 64-bit applications on Windows Vista x64 Edition. VXI, GPIB-VXI, and FireWire resources are not currently supported for 64-bit applications.

Added automatic detection of LXI (TCP/IP) devices that support the mDNS and DNS-SD technologies.

Added support for USB and TCP/IP resources on VxWorks-based LabVIEW RT targets.

Bug ID 93267. VISA may crash when trying to close a session in use by a different thread. This is fixed.

Bug ID 92346. The C examples would build with warnings when using Microsoft Visual C++ 2005 or higher. This is fixed.

Bug ID 114300. In MAX, VISA options may not reflect manual modifications made to visaconf.ini. This is fixed.

Bug ID 103875. viPrintf and variants did not support the %@2 identifier when using short integer arrays nor the %@3 identifier when using any arrays. This is fixed.


When using the MAX Copy Configuration API, you can now specify "ni-visa" as the product. All documented modes are supported.

Bug ID 4DKBD6JW. For PXI/PCI INSTR resources that generate interrupts, VISA incorrectly reversed the logic for the Compare Mask and Compare Value fields in a Compare Interrupt Detection step. This is fixed. If the INF file generated by the Driver Wizard was modified to work around this bug, you should regenerate the INF file.

Bug ID 4FIETP7Z. On Pocket PC 2003/Windows Mobile 5.0 devices, when using USB resources, there was a memory leak when finding and opening a USB device. This is fixed.

Bug ID 4FEAIM00. viWaitOnEvent did not return a warning status when the event queue overflowed. Now viWaitOnEvent returns VI_WARN_QUEUE_OVERFLOW on the first call after an overflow occurs.

Bug ID 4E3DCFAB. In LabWindows/CVI, when user protection is enabled, the use of viMoveInXx and viMoveOutXx operations may incorrectly return user protection errors such as Argument too small or Insufficient buffer size. This is fixed.

Bug ID 4DCB1SJW. For Serial INSTR resources that access parallel ports, reading data from the parallel port may not work correctly. This is fixed.

Bug ID 4CRDPMX3. viPrintf and variants when using the %lf identifier may sometimes calculate an incorrect interpretation of the floating-point data. This is fixed.

Bug ID 4AIFF25E. Asynchronous operations that use the VI_QUEUE mechanism have been optimized and a quicker response time from viWaitOnEvent may be observed, especially on transfers that take a relatively short time to complete.

Bug ID 46N03T48. For PXI/PCI INSTR resources, the PXI_IS_EXPRESS attribute may have not returned VI_TRUE on some PXI Express devices. This is fixed.

Bug ID 4G9F2GWI. On Windows Vista, if MAX was not launched with administrator privileges, changes to the Run the VISA server on startup option would not be saved. This is fixed.


The default installation directory has changed from "C:\VXIPNP" to "C:\Program Files\IVI Foundation\VISA". Upgrades over previous versions of NI-VISA use the previous installation directory.

The default path to the configuration file visaconf.ini has changed to "C:\Documents and Settings\All Users\Application Data\National Instruments\NIvisa" on Windows XP/2000 and to "C:\ProgramData\National Instruments\NIvisa" on Windows Vista.

Added support for Windows Mobile 5.0 on x86 processors.

BasFrmIO.dll was not being registered correctly, which caused some IVI-based drivers not to initialize correctly. This is fixed.

Bug ID 48CE671R. On some Windows CE devices, VISA failed to open virtual serial ports used for Bluetooth. This is fixed.

Bug ID 46Q632QK. Each VISA session to a TCP/IP INSTR (VXI-11) resource created a new device link with the device even when using an identical device name. The TCP/IP INSTR device is more prone to run out of device links in this scenario. Now TCP/IP INSTR sessions share device links for the same TCP/IP device when an identical device name is used.

Bug ID 48ACG54U. viScanf and variants did not correctly support the %b enhanced format code in some cases. This is fixed.

Bug ID 477CTU00. In MAX, the NI-VISA Runtime version now appears in the Software section.

Bug ID 48NINM4U. In MAX, VISA aliases for TCP/IP resources previously were not saved correctly and would not persist. This is fixed.

Bug ID 46FB4OQ1. In MAX, VISA Options for Remote Systems would hang for minutes when there were network devices with corrupted DNS information on the subnet. The duration of this hang has been significantly reduced.

Bug ID 46D93RWI. In MAX, changing the hostname or IP address of a remote system that is enabled for finding resources was not being saved correctly and would result in an additional remote system that is not enabled for finding resources. This is fixed.

Bug ID 46F9LLWI. In MAX, for certain situations, the Port Settings Conflict page displayed erroneous values. This is fixed.


Added support for Windows Vista (32-bit version) and Vista x64 Edition (64-bit version).

The NI-VISA Driver Wizard generates new INF files that work on Vista. If you want to run your VISA based drivers on Vista that previously required an INF file, you will need to regenerate a new INF file using the new Driver Wizard.

On Pocket PC 2003/Windows Mobile 5.0 devices, the NI-VISA configuration file visaconf.ini was installed as read-only. This caused problems with serial port detection. Now it is writeable.

On some cRIO-based LabVIEW RT targets, Serial INSTR sessions may falsely time out when accessing a serial port after the system has been running for a few hours. This is fixed.

In MAX, the chassis and slot numbers displayed for Compact RIO devices may not be correct. This is fixed.

In MAX, a VISA FireWire resource was not displayed when Show Only Devices Registered to VISA is set. This is fixed.

In MAX, the IP address of TCPIP INSTR and SOCKET resources was not shown when the resource was configuring using a hostname. This IP address is now shown.

In MAX, exporting VISA Server settings and then importing would not save the state of the Run on Startup option. This is fixed.

In LabVIEW, if the I/O Filtering option is set to URL format, local resources were not included in the I/O control list. This is fixed.

NI Spy would not log VISA calls from some services. This is fixed.

NI-VISA Server now warns if it is launched and there are no permissions set to allow clients to connect.

The NI-VISA Driver Wizard now has an option for PXI Express devices that provide a way to read the slot number using a sequence of register-level accesses.

The enabled/disabled state of Passports is preserved across upgrades of NI-VISA.

In MAX, when creating a report, VISA details were not present. This is fixed.

64-bit data transfers in register-based operations was not available in CVI. This is fixed.

For GPIB INSTR resources, VISA would set only the GPIB I/O timeout and not the GPIB serial poll timeout. The serial poll timeout is used in viReadSTB. This is fixed.

For Serial INSTR resources, viRead would wait 1 ms when the timeout is set to immediate. This is fixed.

For GPIB INSTR resources, only one call to viWaitOnEvent could be outstanding at any given time. This is fixed.

Calling viFindRsrc with a nonempty, all-whitespace expression string would cause VISA to crash. This is fixed.

Calling viFindRsrc with an expression string that contained two sets of double quotes would not work. This is fixed.

For USB INSTR resources, viReadSTB could fail with a timeout error on some devices that are not completely compliant with the USB TMC specification. This is fixed.


Added support for 64-bit data transfers in register-based operations, to support the VISA 4.0 specification.

The I/O control in LabVIEW 8.0 would not always honor the parameters you specified in the filtering dialog, depending on the order in which you made changes. This is fixed.

viScanf would crash when reading indefinite-length block data. This is fixed.

For ENET-Serial INSTR sessions, framing errors were occasionally not detected. This is fixed.

Improved performance of NI Spy.

Improved performance of VISA in MAX, especially when expanding folders or exporting/importing configuration data.

In MAX, some strings in foreign languages would be displayed with invalid garbage characters. This is fixed.


For TCP/IP SOCKET sessions, re-enabling the termination character between read operations would incorrectly flush the internal buffer. This is fixed.

For TCP/IP SOCKET sessions, reading less than the entire amount of data that the device sent would not work correctly for asynchronous read operations. This is fixed.

In MAX, on LabVIEW RT systems, you can now import the Serial Advanced Settings that were exported on systems with NI-VISA 3.4.1 and older.

In MAX, on large LabVIEW RT systems, expanding Devices and Interfaces or clicking on the Serial category is much faster.

In MAX, improved usability for VXI-11 LAN/LXI instruments. The Create New wizard for detecting devices is easier to use. Also, the device detail views now show the model name and serial number, and also allow access to the device's web page.

In MAX, if you enabled the NiVisaTulip Passport, Agilent I/O GPIB and VXI resources would not show up in the Miscellaneous VISA Resources category. This is fixed.

NI-VISA 3.5.1

The new PXI/PCI Express attributes are now implemented.


For TCP/IP INSTR sessions, viWrite would fail if the transfer size was more than 8 KB. This is fixed.

Significantly optimized PCI interrupts and block moves.

Significantly optimized calls to viFindRsrc and viOpen for all interface types.

After running MAX, GPIB-VXI controllers were not autodetected until after a reboot. This is fixed.

If NI-Motion was installed, trying to create a new VISA resource in MAX would hang. This is fixed.

NI-VISA 3.4.1

Fixed compatibility issue with VISA I/O Control in LabVIEW 8.0 on Windows XP x64 Edition.


For USB RAW sessions, communication with nonzero control endpoints is now supported with the use of VI_ATTR_USB_CTRL_PIPE.

For USB RAW sessions, the default setting for VI_ATTR_USB_END_IN has been changed from VI_USB_END_SHORT to VI_USB_END_SHORT_OR_COUNT.

For USB RAW sessions, viReadAsync would fail if the transfer size was over 8 KB and not a multiple of the maximum packet size of the endpoint. This is fixed.

For USB RAW sessions, changing the USB Alternate Setting on a USB Interface number other than 0 would fail. This is fixed.

For USB RAW sessions, viOpen leaked a handle for each invocation. This is fixed.

For TCP/IP SOCKET sessions, VI_ATTR_SUPPRESS_END_EN set to VI_TRUE did not work in all cases. This is fixed. The default attribute setting for VI_ATTR_SUPPRESS_END_EN on TCP/IP SOCKET sessions is now VI_TRUE.

For PXI INSTR sessions, when enabling for VI_EVENT_PXI_INTR using VI_QUEUE, viDiscardEvents did not work properly. This is fixed.

Searching for VXI-11 resources would fail if the system had multiple ethernet interfaces. This is fixed.

FireWire resources used to show up under the Miscellaneous VISA Resources category in MAX. There is now a new category for FireWire resources.

For Serial resources in MAX on LabVIEW RT systems, COM ports were not ordered sequentially. You also could not save changes to the port settings. These are fixed.

For GPIB INSTR sessions, when using a GPIB-USB controller, if you unplugged and replugged the GPIB-USB cable, you would have to exit and restart your application to communicate with it again. This is fixed.

For VXI resources, the minimum supported version of NI-VXI is now 3.x. NI-VISA 3.4 will no longer work with NI-VXI 2.x on Windows.

NI-VISA 3.3.1

The maximum number of supported Serial ports on LabVIEW RT (Phar Lap ETS) was 32. It is now 128.

Opening a Serial port on LabVIEW RT (Phar Lap ETS) while also performing a VISA Write to the same port would cause a crash. This is fixed.

Performing asynchronous I/O to a remote VISA resource would return an incorrect transfer count and/or data. This is fixed.

Querying a PXI/PCI resource would return incorrect manufacturer information if that device's subsystem identification differed from its primary identification. Another symptom of the same problem is that trying to enable interrupts would return an error. This is fixed.


Added support for the FireWire (1394) INSTR resource on Windows and Phar Lap ETS platforms. This supports register-based device access. This is a new feature.

The PXI/PCI INSTR resource now supports a new "emergency termination" feature that will send a user-defined series of register reads and writes to the device in the event of a process crash.

For USB RAW sessions, now interrupt-out endpoints may be used for viWrite.

For USB RAW sessions, viReadAsync is now implemented.

Only up to 30 USB RAW devices could be used at one time. This arbitrary limitation has been removed.

For USB RAW resources, the procedure of resetting a pipe may not have been given enough time to complete if the VISA timeout was set very low. This could put some USB devices into a bad state. This is fixed.

viFindRsrc would crash when given long strings that use remote NI-VISA. This is fixed.

Calling viMoveAsync on a remote VISA session would return an error. This is fixed.

For Serial INSTR sessions, viClear previously would flush (discard) the I/O buffers and then send a break. According to the VISA spec, VISA must flush (discard) the I/O output buffer, send a break, and then flush (discard) the I/O input buffer. This is fixed.

viScanf and variants did not support the %u identifier for arrays. This is fixed.

viPrintf and variants did not support the %zy and %Zy identifiers for floating point data. This is fixed.

viPrintf and variants previously generated NaN, +Inf, and -Inf. It now generates NAN, INF, and NINF, respectively.

viScanf and variants did not correctly interpret the input values NAN, INF, and NINF. This is fixed.

Detecting a VXI-11 device without a name (IP address only) would crash MAX. This is fixed.

Reading PXI BAR addresses or the Model Name property from VISA would sometimes return incorrect values. This is fixed.

The function viMapAddress would hang when executed multiple times on PXI/PXI instruments when the CPU had hyperthreading enabled. This is fixed.

Remote VISA systems in MAX would use the IP address in cases where it should have used the hostname. This is fixed.

Guest users on Windows XP could not change VISA aliases. This is fixed.


Enabling the NiVisaTulip Passport would cause applications to crash on exit. This is fixed.

For a USB RAW resource, calling viEnableEvent on VI_EVENT_USB_INTR with the VI_HNDLR mechanism would cause a crash when the first interrupt arrived. This is fixed.

Added support in MAX for the standard Export and Import wizard. For NI-VISA, this allows you to transfer the VISA aliases and driver settings.

Calling viPrintf on a remote VISA session would return VI_ERROR_IO instead of VI_ERROR_RSRC_LOCKED when the remote resource was locked. This is fixed.

The VISA Interactive Control utility (VISAIC) now displays an error message box when viFindRsrc returns an error.

For a PXI INSTR resource, calling viDisableEvent and then viWaitOnEvent would cause a crash. On Windows, the application would exit; on LabVIEW RT (both Phar Lap ETS and RTX), the system would need to be rebooted. This is fixed.


Right-clicking on a PXI chassis in MAX now provides the option to open a VISA session to that PXI BACKPLANE resource.

Fixed various issues in MAX related to changing the IP address of a remote VISA system.

Calling viParseRsrcEx would in some cases output the resource class using the same case you used in the resource string in the input parameter. The output parameter should always be uppercase. This is fixed.

For a Serial INSTR resource, calling viGetAttribute on VI_ATTR_ASRL_WIRE_MODE would always output -1 if you had not yet set the mode for the given resource. Now if you have NI-Serial 1.6 or higher installed with supported hardware, it will output the default configured state rather than -1. Otherwise, it will still output -1. Note that NI-Serial 1.6 does not implement this feature on all currently supported NI RS-485 controllers.


NI-VISA 3.1 supports the PXI/PCI interface type in the RTX real-time environment in LabVIEW RT. This is a new feature.

The VISA Driver Development Wizard can install the generated INF file onto your local system. This is a new feature.

The BACKPLANE resource type is supported in the PXI resource class. This is a new feature.

For a VI running on LabVIEW RT, calling VISA Close on an ENET-Serial resource would occasionally either hang or return an error. This has been fixed.

Calling viClose on an Ethernet resource would leak a socket handle. This has been fixed.

In MAX, it was not possible to create static TCPIP resources on a LabVIEW RT system. This has been fixed.

On Windows NT, 2000, or XP, calling viEnableEvent on a PXI/PCI INSTR resource would occasionally cause a system crash. This has been fixed.

Reading data from a Serial port was slow. The performance has improved.

Using the Serial Break VI from LabVIEW did not work with remote NI-VISA. This has been fixed.

Querying VI_ATTR_ASRL_AVAIL_NUM on a parallel port would return a large random number. The correct value for this is always 0. This has been fixed.

If you created a TCPIP resource in MAX with an alias, it would not show up. This has been fixed.

In MAX, choosing the Tools»NI-VISA»VISA Options menu item would not always bring up the options. This has been fixed.

In MAX, if you disabled a COM port and clicked Refresh, the Serial resource would disappear completely. This has been fixed. The resource now continues to exist but has a black X overlay icon to indicate that it is disabled.

The VISA Driver Development Wizard now supports the PXI standard module.ini format. It will generate that file along with the .inf files for NI-VISA. You can also use this wizard to load module.ini files from other vendors.

In MAX, if you inserted a new Serial port, it would erroneously claim that the settings have a conflict. This has been fixed.

The VI_EVENT_USB_INTR event attributes did not work properly. This has been fixed.

If you unplugged a VISA USB device and plugged it back in, NI-VISA could not access the device properly. This has been fixed.

Calling viEnableEvent on a remote VISA session would leak memory in the server. This has been fixed.

Creating a new remote NI-VISA system would hang MAX. This has been fixed.

The hostname localhost or the IP address did not work properly with remote NI-VISA. Only the DHCP name or network IP address would work. This has been fixed.

The remote NI-VISA server did not properly validate a hostname with an underscore. This has been fixed.

Calling viGetAttribute on VI_ATTR_INTF_INST_NAME on TCPIP resources with Internet Explorer 2 would crash. This has been fixed.

If you enabled a LabVIEW RT system that was using DHCP as a VISA remote system to search when finding resources, NI-VISA would use the IP address rather than the DNS name. Starting with LabVIEW RT 7.1, remote systems are correctly assigned DNS names, and NI-VISA can use the DNS name when finding remote resources. Any existing remote VISA system that was enabled for finding will remain listed using its IP address unless you disable and re-enable the system for finding. Enabling a remote system with LabVIEW RT 7.1 already installed will result in NI-VISA using the DNS name if it is the same as the name of the remote controller. Otherwise, if the remote system is not using DHCP, or if the DNS name does not match the controller name, NI-VISA will still use the IP address of the remote system.

In MAX, if you changed the VISA Options and browsed to another item, your changes would sometimes be lost. This has been fixed.

The manufacturer and model name for PXI/PCI resources were incorrectly reported as unknown. This has been fixed.

The global attributes on a GPIB INTFC resource were not properly shared across sessions. This has been fixed.

Calling viOpen on a remote NI-VISA resource did not honor the openTimeout parameter. This has been fixed.

NI-VISA 3.0.1

For a PXI INSTR resource, calling viEnableEvent and viDisableEvent in a loop would leak memory. On LabVIEW RT, this would eventually cause a reboot.

For a GPIB INTFC resource, performing any asynchronous I/O would occasionally cause a crash when you later close the VISA session.

Installing NI-VISA 3.0 on a system with LabVIEW 6.1 would cause user VIs that use VISA Configure Serial Port to have a broken wire.


The driver now works properly with Fast User Switching on Windows XP/2000.

For a PXI INSTR resource, we now support PXI/PCI devices that rely on the subvendor ID and/or the subvendor model code. To use this functionality, you must create a new .inf file with the VISA Driver Development Wizard. The attributes VI_ATTR_PXI_SUB_MANF_ID and VI_ATTR_PXI_SUB_MODEL_CODE are no longer supported by the VISA driver. The correct attributes to query are now VI_ATTR_MANF_ID and VI_ATTR_MODEL_CODE. These will return the primary vendor information if no subvendor information is present, and they will return the subvendor information if it is present.

For a PXI MEMACC resource, viMemFree now frees all memory correctly.

For a Serial INSTR resource, viOpen on both Windows and LabVIEW RT will now accept COMx as a valid resource name even if MAX has not yet been run.

For a Serial INSTR resource, viOpen will now open a port if the process that had been using that port exited ungracefully (such as with <Ctrl-C>). The previous behavior had been that viOpen would return VI_ERROR_RSRC_BUSY.

For a Serial INSTR resource, viWriteAsync was not implemented. Now it is.

For a Serial INSTR resource, multiple sessions to the same port caused weird behavior if you tried to both write and read data simultaneously. This has been fixed.

For a Serial INSTR resource, if you enabled RTS/CTS flow control and then manually tried to set the state of the RTS line, some operating systems would generate VI_ERROR_NSUP_ATTR while others would return VI_SUCCESS but not actually modify the state of the line. Neither of these behaviors was correct. Now NI-VISA will return VI_ERROR_INV_SETUP in this case on all operating systems.

For a Serial INSTR resource, the RS-485 wire mode attribute now works properly on Windows XP/2000.

In GPIB, the attribute VI_ATTR_INTF_INST_NAME would report an unknown board type for some GPIB-USB and GPIB-ENET controllers. The symptom was also visible in the VISA Interactive Control utility. This attribute now reports the correct information.

In GPIB, the implementation of viFindRsrc could take up to 10 s if you had NI-488.2 version 2.0 installed. The symptom was also visible in LabVIEW when you dropped the first VISA resource control on the front panel. This now takes less than 1 s on most machines.

NI Spy occasionally would incorrectly report an output jobID of 0 for viReadAsync or viWriteAsync, even though the operation completed successfully with a valid nonzero jobID.

NI Spy would not restore the window location on a monitor other than the primary monitor. This now works as expected.

If you ran MAX as a guest user and edited the Passport settings, the new settings could not be saved to the registry, but MAX did not generate a warning. This has been fixed, and you will now get a warning.

For a TCPIP SOCKET resource, viReadAsync was not implemented. Now it is.

The remote NI-VISA server could not be started on the same machine as the remote DAQ server because they both used the same port. Now the remote NI-VISA server uses port 3537 by default.

viFindRsrc would crash on a complex expression with multiple | symbols. This has been fixed.

If you had a GPIB device at primary address 1 that generated a response to *IDN? that was longer than 100 characters, viFindRsrc would occasionally crash. This has been fixed.

Some VISA COM components were not being correctly registered.

The VISA COM API would return an incorrect string from ReadString if the number of bytes read was exactly what was requested.

The VISA COM API would not return output string parameters correctly if the variable passed into the function was uninitialized or had a garbage value. This problem was normally only seen from C++ when using a raw BSTR instead of CComBSTR. This has been fixed.

In GPIB, the implementation of viFindRsrc on LabVIEW RT would find GPIB resources only on GPIB0. It now finds GPIB resources on any configured GPIB interface number.

Calling viUnmapAddress when using an Agilent HP-E1406A GPIB-VXI controller would cause the application to crash. This has been fixed.

The attributes VI_ATTR_MANF_NAME and VI_ATTR_MODEL_NAME are now correctly implemented for GPIB-VXI regardless of whether NI-VXI is installed.

The maximum simultaneous number of GPIB-VXI controllers supported by NI-VISA has changed from 10 to 32.

The VISA Driver Development Wizard (formerly known as the PXI Driver Development Wizard) now allows multiple logical-OR PXI interrupt conditions.

You can now edit the binding properties of a VISA TCPIP resource in MAX. For example, you can change the hostname or IP address.

MAX can now auto-detect VXI-11 TCPIP resources on your subnet. When you right-click on Devices and Interfaces and choose Create New..., you then need to specify a VXI-11 instrument and click the option to have MAX browse your local subnet.

If you enabled the VISA COM API for VI_EVENT_SERVICE_REQ for a callback, it would crash when the event was being raised. This has been fixed.

If you tried to exit the VISA Interactive Control utility by right-clicking on the taskbar icon and choosing Close, the utility would hang. This has been fixed.

Using remote NI-VISA with asynchronous I/O did not properly transmit data asynchronously. This has been fixed.

In Serial on LabVIEW RT, you can now configure advanced settings (such as FIFO triggers and the default RS-485 wire mode) in MAX.

In Serial, if the Windows configuration settings for a given port were different from the NI-VISA settings, MAX would overwrite the Windows settings when you clicked Refresh. Now, MAX points out the different settings and lets you choose.

In MAX, selecting Rename on an alias and changing merely the case of the alias would cause an error. This has been fixed.

When calling viWaitOnEvent repeatedly with a timeout of 0 (immediate), some interfaces and event types would still consume excessive CPU time. Now doing this will yield the CPU regardless of the interface or event type.

For a Serial INSTR resource, if a parity or framing error occurred, NI-VISA would not return the correct error condition. This has been fixed.

viFindRsrc would return VI_ERROR_INV_EXPR if the expression exceeded 255 characters. Now it will accept resource expressions of any length.

If a PXI multifunction device did not have function 0 registered as an NI-VISA resource, viFindRsrc would not return any of the other functions of that device either, even if they were registered with NI-VISA. This now works properly.

Calling viFindRsrc would always assert REN on each GPIB board after finding devices. Now viFindRsrc will reassert REN on each board only if there is at least one open VISA INSTR session on that board.

For a TCPIP SOCKET resource, using viRead with termchar enabled was much slower than reading the exact number of bytes. The performance of using termchar with viRead is now much better than it was.


A. This product includes components that use the socket++ library. In regards to the socket++ library, the following notice applies:

Copyright © 1992, 1993, 1994 Gnanasekaran Swaminathan (University of Virginia). Certain modifications have been made by Gregory Lavender (University of Texas) and National Instruments Corporation to the version of the socket++ library used in this product.

B. This product includes components that were created using DriverWorks; such components are Copyright © 2004 Compuware Corporation.

C. This product includes components that use Xerces. In regards to the Xerces library, the following notice applies:

This product includes software developed by the Apache Software Foundation ( that is subject to the Apache License, Version 2.0 (the "Xerces License"), a copy of which may be found at: Copyright © 1999–2005 The Apache Software Foundation. All rights reserved. Certain modifications have been made by National Instruments Corporation to the version of the Xerces library used in this product; such modifications are Copyright © 2008 National Instruments Corporation. The content of this notice is for informational purposes only and does not modify the Xerces License. See the Xerces License for the specific language governing permissions and limitations relating to the Xerces library.

D. This product includes components that use mDNSResponder. In regards to the mSDNResponder library, the following notice applies:

This product includes software developed by the Apple Computer, Inc. that is subject to the Apache License, Version 2.0 (the "mDNSResponder License"), a copy of which may be found at: Copyright © 2002–2003 Apple Computer, Inc. All rights reserved. Certain modifications have been made by National Instruments Corporation to the version of mDNSResponder library used in this product; such modifications are Copyright © 2008 National Instruments Corporation. The content of this notice is for informational purposes only and does not modify the mDNSResponder License. See the mDNSResponder License for the specific language governing permissions and limitations relating to the mDNSResponder library.