Systems Alliance

VPP-4.3.5:
VISA Shared Components

August 6, 2015

Revision 5.5

Systems Alliance

VPP-4.3.5 Revision History

This section is an overview of the VPP-4.3.5 specification revision history.

Revision 1.0, October 16, 2008

First draft of the VPP-4.3.5 specification, based on Section 6 of the VPP-4.3.4 specification. This specification covers all aspects of the VISA Shared Components binaries and installation.

Revision 5.0, June 9, 2010

Added USBTMC components to shared component specification.

Revision 5.1, March 6, 2013

Added Windows 7 and Windows 8 to the list of supported operating systems.

Revision 5.4, May 14, 2014

Made changes to specify the VISA .NET shared components. Added observations to clarify the mechanism used by the VISA Shared Components installers to register the Primary Interop Assembly. Changed the version to 5.4 to ensure that all VISA specifications being voted on at the same time have the same version.

Revision 5.5, February 11, 2015

Made changes to clarify the behavior of the viParseRsrc/viParseRsrcEx functions. Modified the uninstallation behavior of the VISA Shared Components and VISA.NET Shared Installer. Clarified the necessary prerequisite software for installing VISA.NET Shared Components.

Revision 5.5, August 6, 2015

Removed Windows 2000 and added Windows 10 to the list of supported operating systems.


NOTICE

VPP-4.3.4: VISA Shared Components is authored by the IVI Foundation member companies. For a vendor membership roster list, please visit the IVI Foundation web site at www.ivifoundation.org, or contact the IVI Foundation at 2515 Camino del Rio South, Suite 340, San Diego, CA 92108.

The IVI Foundation wants to receive your comments on this specification. You can contact the Foundation through email at , through the web site at www.ivifoundation.org, or you can write to the IVI Foundation, 2515 Camino del Rio South, Suite 340, San Diego, CA 92108.

Warranty

The IVI Foundation and its member companies make no warranty of any kind with regard to this material, including, but not limited to, the implied warranties of merchantability and fitness for a particular purpose. The IVI Foundation and its member companies shall not be liable for errors contained herein or for incidental or consequential damages in connection with the furnishing, performance, or use of this material.

Trademarks

Product and company names listed are trademarks or trade names of their respective companies.

No investigation has been made of common-law trademark rights in any work.

Table of Contents Page XXX

Table of Contents

Section 1: Introduction to the VXIplug&play Systems Alliance and the IVI Foundation 1

Section 2: Overview of VISA Shared Components Specification 1

2.1. Objectives of This Specification 2

2.2. Audience for This Specification 3

2.3. Scope and Organization of This Specification 4

2.4. Application of This Specification 5

2.5. References 6

2.6. Definition of Terms and Acronyms 7

2.7. Conventions 8

Section 3: VISA Shared Components 1

3.1. VXIplug&play Infrastructure 2

3.2. VISA Plug-In Architecture Components 3

3.2.1. VISA Header Files 3

3.2.2. The VISA Router 3

3.2.3. The Conflict Resolution Manager 6

3.2.4. VISA Utilities 37

3.3. VISA COM Components 38

3.4. VISA .NET Components 39

3.4.1. Conflict Resolution Manager .NET API 39

3.5 VISA Shared USBTMC Device Driver 46

Section 4: VISA Shared Components Installers 47

4.1. Installing VISA Shared Components On 32-Bit Operating Systems 48

4.2. Installing VISA Shared Components On 64-Bit OS’s 53

4.3. Installing VISA .NET Shared Components 60

Appendix A: Implementation Files 1

A.1 Contents of the visaRouter.h File 1

A.2 Contents of the ConflictMgr.h File 1

A.3 Contents of the ConflictMgr.def File 6

A.4 Contents of the visaUtilities.h File 7

A.5 Contents of the visaUtilities.def File 7

VXIplug&play Systems Alliance VPP-4.3.5: VISA Shared Components

Section 1: Introduction to the VXIplug&p[ay Systems Alliance and the IVI Foundation Page 1-1

Section 1:  Introduction to the VXIplug&play Systems Alliance and the IVI Foundation

The VXIplug&play Systems Alliance was founded by members who shared a common commitment to end-user success with open, multivendor VXI systems. The alliance accomplished major improvements in ease of use by endorsing and implementing common standards and practices in both hardware and software, beyond the scope of the VXIbus specifications. The alliance used both formal and de facto standards to define complete system frameworks. These standard frameworks gave end-users "plug & play" interoperability at both the hardware and system software level.

The IVI Foundation is an organization whose members share a common commitment to test system developer success through open, powerful, instrument control technology. The IVI Foundation’s primary purpose is to develop and promote specifications for programming test instruments that simplify interchangeability, provide better performance, and reduce the cost of program development and maintenance.

In 2002, the VXIplug&play Systems Alliance voted to become part of the IVI Foundation. In 2003, the VXIplug&play Systems Alliance formally merged into the IVI Foundation. The IVI Foundation has assumed control of the VXIplug&play specifications, and all ongoing work will be accomplished as part of the IVI Foundation.

All references to VXIplug&play Systems Alliance within this document, except contact information, are there to preserve consistency with the original set of specifications.

VXIplug&play Systems Alliance VPP-4.3.5: VISA Shared Components

Section 2: Overview of VISA Shared Components Specification Page 2-7

Section 2:  Overview of VISA Shared Components Specification

This VISA specification is a document authored by the VXIplug&play Systems Alliance. The technical work embodied in this document and the writing of this document was performed by the VISA Technical Working Group.

This section provides a complete overview of the VISA Shared Components specification, and gives readers general information that may be required to understand how to read, interpret, and implement individual aspects of this specification. This section is organized as follows:

• Objectives of this specification

• Audience for this specification

• Scope and organization of this specification

• Application of this specification

• References

• Definitions of terms and acronyms

• Conventions

2.1.  Objectives of This Specification

The VISA Shared Components specification describes the deployment of a common set of VISA components for developing multi-vendor software programs, including instrument drivers. There are two sets of components which are installed separately.

·  The VISA Shared Components installer includes the VISA COM components and the VISA Plug-In Architecture components provided by the IVI Foundation.

·  The VISA .NET Shared Components installer includes the VISA .NET components provided by the IVI Foundation. The VISA .NET Shared Components installer has a dependency on the VISA Shared Components installer.

These installers are available from the IVI Foundation to guarantee a consistent, reliable installation.

2.2.  Audience for This Specification

The primary audience is I/O vendors who wish to implement and install VISAcompliant I/O software.

Secondary audiences include instrument driver developers—whether an instrument vendor, system integrator, or end user—who wishes to implement instrument driver software that is compliant with the VXIplug&play standards, and instrumentation end users and application programmers who wish to implement applications that utilize instrument drivers compliant with this specification.

2.3.  Scope and Organization of This Specification

This specification is organized in sections, with each section discussing a particular aspect of the VISA model.

Section 1, Introduction to the VXIplug&play Systems Alliance and the IVI Foundation, explains the VXIplug&play Systems Alliance and its relation to the IVI Foundation.

Section 2, Overview of VISA I/O Components and Installation Specification, provides an overview of this specification, including the objectives, scope and organization, application, references, definition of terms and acronyms, and conventions.

Section 3, VISA Shared Components, provides an overview of the files and required infrastructure that make up the VISA Shared Components.

Section 4, VISA Shared Components Installers, discusses the implementation of the VISA Shared Components installers.

2.4.  Application of This Specification

This specification describes standards to be used by developers of VISA and VISA COM I/O library software. After June 1, 2007 every release of a VISA I/O library must use installers provided by the IVI Foundation to install shared VISA components.

It is also useful as a reference for developers and end users of VISA I/O library software, as well as VXIplug&play and IVI instrument drivers.

2.5.  References

The following documents contain information that you may find helpful as you read this document:

• VPP-1, VXIplug&play Charter Document

• VPP-2, System Frameworks Specification

• VPP-3.1, Instrument Drivers Architecture and Design Specification

• VPP-3.2, Instrument Functional Body Specification

• VPP-3.3, Instrument Driver Interactive Developer Interface Specification

• VPP-3.4, Instrument Driver Programmatic Developer Interface Specification

• VPP-4.1, VISA-1 Main Specification

• VPP-4.2, The VISA Transition Library

• VPP-4.3, The VISA Library

• VPP-4.3.2, VISA Implementation Specification for Textual Languages

• VPP-4.3.3, VISA Implementation Specification for the G Language

• VPP-4.3.4, VISA Implementation Specification for COM

• VPP-4.3.6, VISA Implementation Specification for .NET

• VPP-6, Installation and Packaging Specification

• VPP-7, Soft Front Panel Specification

• VPP-9, Instrument Vendor Abbreviations

• VXI-1, VXIbus System Specification, Revision 1.4, VXIbus Consortium

• VXI-11, TCP/IP Instrument Protocol, VXIbus Consortium

2.6.  Definition of Terms and Acronyms

The following are some commonly used terms within this document

API / Application Programmers Interface. The direct interface that an end user sees when creating an application. The VISA API consists of the sum of all of the operations, attributes, and events of each of the VISA Resource Classes. The VISA COM I/O API consists of a collection of COM interfaces. The VISA COM .NET API consists of a collection of .NET interfaces and classes.
COM / Component Object Model, a Microsoft technology for reusable software components.
Component / A DLL or EXE that implements executable ANSII C, COM, or .NET code. Executable components may be accompanied by other supporting files, such as help files.
Instrument / A device that accepts some form of stimulus to perform a designated task, test, or measurement function. Two common forms of stimuli are message passing and register reads and writes. Other forms include triggering or varying forms of asynchronous control.
Instrument Driver / Library of functions for controlling a specific instrument.
VISA / Virtual Instrument Software Architecture. This is the general name given to this document and its associated architecture. The architecture consists of two main VISA components: the VISA Resource Manager and the VISA Instrument Control Resources.
VISA COM / VISA for COM. VISA COM is an architecture that provides VISA functionality via a COM API.
VISA Shared Components / A common set of VISA components for which there must be only one implementations. That implementation is provided by the IVI Foundation, and is described in this document.
WOW64 / Windows On Windows 64, a Microsoft technology for allowing the execution of 32-bit native code programs on 64-bit operating systems.

2.7.  Conventions

Throughout this specification you will see the following headings on certain paragraphs. These headings instill special meaning on these paragraphs.

Rules must be followed to ensure compatibility with the System Framework. A rule is characterized by the use of the words SHALL and SHALL NOT in bold upper case characters. These words are not used in this manner for any purpose other than stating rules.

Recommendations consist of advice to implementers that will affect the usability of the final device. They are included in this standard to draw attention to particular characteristics that the authors believe to be important to end user success.

Permissions are included to authorize specific implementations or uses of system components. A permission is characterized by the use of the word MAY in bold upper case characters. These permissions are granted to ensure specific System Framework components are well defined and can be tested for compatibility and interoperability.

Observations spell out implications of rules and bring attention to things that might otherwise be overlooked. They also give the rationale behind certain rules, so that the reader understands why the rule must be followed.

A Note on the text of the specification: Any text that appears without heading should be considered as description of the standard and how the architecture was intended to operate. The purpose of this text is to give the reader a deeper understanding of the intentions of the specification including the underlying model and specific required features. As such, the implementer of this standard should take great care to ensure that a particular implementation does not conflict with the text of the standard.

VXIplug&play Systems Alliance VPP-4.3.5: VISA Shared Components

Appendix A: Implementation Files Page A-XXX

Section 3:  VISA Shared Components

The VISA shared components are a common set of VISA components for developing multivendor software programs, including VISA I/O libraries and a variety of instrument drivers.

The components are “shared” because multiple VISA, VISA COM and VISA .NET vendor-specific implementations must share a single copy of each component. Because there may only be a single copy of the component per PC, and the behavior of each component is precisely described, the IVI Foundation supplies a standard implementation of each of them; in fact, the IVI Foundation implementation of each shared component must be used wherever the component is called for.

The VISA Shared Components installer includes the VXIplug&play infrastructure, VISA COM components, and VISA Plug-In Architecture components. The IVI Shared Components are available from the IVI Foundation in the form of standard installers that guarantee a consistent, reliable installation.

The VXIplug&play infrastructure includes the framework directory structure, registry entries, and environment variables. They are described in VPP-2, System Frameworks Specification.

The VISA Plug-In Architecture components include shared files that allow multiple vendor-specific VISA libraries to be installed on a single PC. In the past, the standard did not directly support this, as each vendor-specific VISA library had to install a file named visa32.dll in the system directory. To avoid potential backwards compatibility issues with older versions of VISA that follow this naming standard, the VISA Plug-In Architecture is available only on 64-bit PCs.

The VISA COM components include shared VISA COM functionality, including the VISA COM type library, the associated PIA, the Global Resource Manager, and Basic Formatted IO. These components are available for both 32-bit and 64-bit PCs. They are described in VPP-4.3.4, VISA Implementation Specification for COM.