VMCI Overview

The Virtual Machine Communication Interface (VMCI) is an infrastructure that provides fast and efficient communication between a virtual machine and the host operating system and between two or more virtual machines on the same host. The VMCI SDK facilitates development of applications that use the VMCI infrastructure.

Note: The VMCI SDK was deprecated and replaced by the VMCI Sockets library. See VMCI Sockets Documentation.

VMCI Overview

The VMCI SDK has the following components:

Without VMCI, virtual machines communicate with the host using the network layer. Using the network layer adds overhead to the communication. With VMCI communication overhead is minimal and different tasks that require that communication can be optimized.

Installing and Enabling VMCI

In Workstation 6.0, VMCI is not installed as part of the default installation.

Making VMCI available on a virtual machine requires:

Note: No action is required to make VMCI available on a host.

Editing the .vmx File

To enable VMCI on your virtual machine, add the following two lines to the virtual machine configuration file (.vmx file):

# The following line is REQUIRED.

 vmci0.present = "TRUE"

# The following line is OPTIONAL.

 vmci0.id = "num"

Here, num is a positive integer that is unique for each virtual machine on your host. That is, for any virtual machine, you can choose a number (1, 2, 3, etc.) but two virtual machines must not have the same number as their vmci0.id.

Performing a Custom Installation of VMware Tools

After you've edited the .vmx file, you can install the software as part of VMware Tools, as follows:

For a Windows virtual machine:

  1. Choose "Custom Installation" and enable the VMCI driver from the list of VMware drivers to be installed
  2. Proceed with installation.

You might have to reboot the virtual machine to use VMCI.

For a Linux virtual machine:

  1. Run the vmware-config-tools.pl script with the --experimental flag. That option turns on experimental features during installation, which enables VMCI.
  2. The installer prompts you whether you want to install the VMCI device. If you answer "yes", the VMCI driver is installed on your Linux virtual machine and the /dev/vmci device node is created.

Sample Applications

When you install Workstation 6.0 (on your host machine) or VMware Tools (in your virtual machines), two sample applications are included:

  • sharedMemApp - The server creates a shared memory region, and writes the machine's current time in that shared memory every 1 second. The client attaches to the shared memory region and can read the server machine's time.
  • datagramApp - The server creates a datagram handle and waits for a datagram. The client sends a datagram to the server, and the server sends a datagram back in a ping-pong fashion.
The sample applications' source code files are colocated with the README files (mentioned below).

README Files

  • When you install the software, a README file is included for both the host and the virtual machine on both Windows and Linux:
  Host Guest
Linux /usr/share/doc/vmware/vmware-vmci/samples/README /usr/share/doc/vmware-tools/vmware-vmci/samples/README
Windows C:\Program Files\VMware\VMware Workstation\VMCI\Sample Applications\README C:\Program Files\VMware\VMware Tools\VMCI\Sample Applications\README

API Components

From the user's point of view, the API consists of two main parts, the shared memory API and the datagram API. The access control API and the discovery service API are meant to be used in conjunction with the shared memory API or the datagram API.


Copyright (C) 2007 VMware, Inc. All rights reserved.