# Name

VixHost_RegisterVM

# Description

    VixHandle
    VixHost_RegisterVM(VixHandle hostHandle,
                       const char *vmxFilePath,
                       VixEventProc *callbackProc,
                       void *clientData);

This function adds a virtual machine to the host's inventory.

# Parameters

hostHandle
  The host handle returned by VixHost_Connect().
vmxFilePath
  The path name of the .vmx file on the host.
callbackProc
  A function to be invoked when VixHost_RegisterVM() completes.
clientData
  A user-supplied parameter to be passed to the callback function.

# Return Value

VixHandle. A job handle that describes the state of this asynchronous call.

# Remarks

- This function registers the virtual machine identified by vmxFilePathName, which is a storage path to the configuration file (.vmx) for that virtual machine. You can register a virtual machine regardless of its power state.
- The format of the path name depends on the host operating system. If the path name includes backslash characters, you need to precede each one with an escape character. Path to storage [standard] or [storage1] may vary.
- For VMware Server 1.x, supply the full path name instead of storage path, and specify VIX_SERVICEPROVIDER_VMWARE_SERVER to connect.
- This function returns VIX_OK but has no effect on Workstation or Player, which lack a virtual machine inventory.
- This function is asynchronous. Completion is reported by a job handle.
- It is not a Vix error to register an already-registered virtual machine, although the VMware Server UI shows an error icon in the Task pane. Trying to register a non-existent virtual machine results in error 2000, VIX_E_NOT_FOUND.
- With vSphere, this request can generate an error in which will be displayed on the vSphere client as it tries to find the appropriate resource pool for the Virtual Machine being registered.
- With vSphere, this request will register the Virtual Machine in the first matching datastore it finds. If vSphere is configured with more than one Datacenter which contains the same Datastore name, the registration may not occur where it is expected.

# Side Effects

None.

# Requirements

vix.h, since VMware Server 1.0

# Example

    VixError err = VIX_OK;
    VixHandle hostHandle = VIX_INVALID_HANDLE;
    VixHandle jobHandle = VIX_INVALID_HANDLE;

    // Connect to the local host:
    jobHandle = VixHost_Connect(VIX_API_VERSION,
                                VIX_SERVICEPROVIDER_VMWARE_VI_SERVER,
                                "https://viserver/sdk", // hostName
                                0, // hostPort
                                "root", // userName
                                "rootpasswd", // password
                                0, // options
                                VIX_INVALID_HANDLE, // propertyListHandle
                                NULL, // callbackProc
                                NULL); // clientData

    err = VixJob_Wait(jobHandle,
                      VIX_PROPERTY_JOB_RESULT_HANDLE,
                      &hostHandle,
                      VIX_PROPERTY_NONE);
    if (VIX_OK != err) {
       // Handle the error...
       goto abort;
    }
    // Release handle when done:
    Vix_ReleaseHandle(jobHandle);

    // Register the virtual machine:
    jobHandle = VixHost_RegisterVM(hostHandle,
                               // "[storage1] RedHatLinux/RedHatLinux.vmx"
                                  "[standard] Windows XP\\Windows XP.vmx",
                                   NULL, // callbackProc
                                   NULL); // clientData
    err = VixJob_Wait(jobHandle,
                      VIX_PROPERTY_NONE);
    if (VIX_OK != err) {
       // Handle the error...
       goto abort;
    }
    // Release handle when done:
    Vix_ReleaseHandle(jobHandle);

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