Name
Connect
Description
HRESULT
Connect([in] LONG apiVersion,
[in] LONG hostType,
[in] BSTR hostName,
[in] LONG hostPort,
[in] BSTR userName,
[in] BSTR password,
[in] LONG options,
[in] IVixHandle* propertyList,
[in] ICallback* jobDoneCallback,
[out,retval] IJob** connectJob);
Creates a host handle. This handle cannot be shared or reused after disconnect.
Parameters
- apiVersion
-
Must be
VixCOM.Constants.VIX_API_VERSION.
- hostType
-
With vCenter Server, ESX/ESXi hosts, and VMware Server 2.0, use
VixCOM.Constants.VIX_SERVICEPROVIDER_VMWARE_VI_SERVER.
With VMware Workstation, use
VixCOM.Constants.VIX_SERVICEPROVIDER_VMWARE_WORKSTATION.
With VMware Workstation (shared mode), use
VixCOM.Constants.VIX_SERVICEPROVIDER_VMWARE_WORKSTATION_SHARED.
With VMware Player, use
VixCOM.Constants.VIX_SERVICEPROVIDER_VMWARE_PLAYER.
With VMware Server 1.0.x, use
VixCOM.Constants.VIX_SERVICEPROVIDER_VMWARE_SERVER.
- hostName
-
Varies by product platform.
With vCenter Server, ESX/ESXi hosts, VMware Workstation
(shared mode) and VMware Server 2.0,
use a URL of the form "https://<hostName>:<port>/sdk"
where <hostName> is either the DNS name or IP address.
If missing, <port> may default to 443 (see Remarks below).
In VIX API 1.10 and later, you can omit "https://" and "/sdk"
specifying just the DNS name or IP address.
Credentials are required even for connections made locally.
With Workstation, use
NULL (C++), null (C#), or empty (VB)
to connect to the local host.
With VMware Server 1.0.x,
use the DNS name or IP address for remote connections,
or the same as Workstation for local connections.
- hostPort
-
TCP/IP port on the remote host.
With VMware Workstation and VMware Player, use zero for the local host.
With ESX/ESXi hosts, VMware Workstation (shared mode) and
VMware Server 2.0 you specify port number within the hostName
parameter, so this parameter is ignored (see Remarks below).
- login
-
Username for authentication on the remote machine.
With VMware Workstation, VMware Player, and VMware Server 1.0.x, use
NULL (C++), null (C#), or empty (VB)
to authenticate as the current user on local host.
With vCenter Server, ESX/ESXi hosts, VMware Workstation
(shared mode) and VMware Server 2.0,
you must use a valid login.
- password
-
Password for authentication on the remote machine.
With VMware Workstation, VMware Player, and VMware Server 1.0.x, use
NULL (C++), null (C#), or Empty (VB)
to authenticate as the current user on local host.
With ESX/ESXi, VMware Workstation (shared mode) and
VMware Server 2.0, you must use a valid login.
- options
-
Should be zero. The option VIX_HOSTOPTION_USE_EVENT_PUMP
has been deprecated and may be removed from future versions
of the VIX API.
- propertyList
-
Must be
NULL (C++), null (C#), or Nothing (VB).
- jobDoneCallback
-
An ICallback instance that will be called when the
operation is complete.
- connectJob
-
Returns an IJob object that describes the state of this
asynchronous operation.
Return Value
HRESULT
Remarks
- To specify the local host (where the API client runs) with VMware Workstation and VMware Player,
pass null values for the hostName, hostPort, userName, and password parameters.
- With vCenter Server, ESX/ESXi hosts, and VMware Server 2.0,
the URL for the hostName argument may specify the port.
Otherwise an HTTPS connection is attempted on port 443.
HTTPS is strongly recommended.
Port numbers are set during installation of Server 2.0.
The installer's default HTTP and HTTPS values
are 8222 and 8333 for Server on Windows,
or (if not already in use) 80 and 443 for Server on Linux,
and 902 for the automation socket, authd.
If connecting to a virtual machine though a firewall,
port 902 and the communicating port must be opened to allow guest operations.
- If a VMware ESX host is being managed by a VMware VCenter Server, you
should call VixHost_Connect with the hostname or IP address of the VCenter
server, not the ESX host. Connecting directly to an ESX host while
bypassing its VCenter Server can cause state inconsistency.
- On Windows, this function should not be called multiple times with different
service providers in the same process; doing so will result in a
VIX_E_WRAPPER_MULTIPLE_SERVICEPROVIDERS error. A single client process
can connect to multiple hosts as long as it connects using the same
service provider type.
- To enable SSL certificate verification, set the value of the options
parameter to include the bit flag specified by
VixCOM.Constants.VIX_HOSTOPTION_VERIFY_SSL_CERT.
This option can also be set in the VMware config file by assigning
vix.enableSslCertificateCheck as TRUE or FALSE.
The vix.sslCertificateFile config option specifies the path to a file
containing CA certificates in PEM format. The vix.sslCertificateDirectory
config option can specify a directory containing files that each contain
a CA certificate. Upon encountering a SSL validation error,
the host handle is not created with a resulting error code of
VIX_E_NET_HTTP_SSL_SECURITY.
- With VMware vCenter Server and ESX/ESXi 4.0 hosts,
an existing VI API session can be used instead of the username/password
pair to authenticate when connecting.
To use an existing VI API session, a VI "clone ticket" is required; call the
VI API AcquireCloneTicket() method of the SessionManager object to get
this ticket. Using the ticket string returned by this method, call
VixHost_Connect() with NULL as the 'username' and the ticket as the
'password'.
Side Effects
None.
Requirements
VixCOM.h, since VMware Workstation 6.0.
Example
VBScript:
Dim lib
Dim job
Dim err
Dim host
Dim results
Set lib = CreateObject("VixCOM.VixLib")
Set results = Nothing
Set job = lib.Connect(VixCOM.Constants.VIX_API_VERSION, VixCOM.Constants.VIX_SERVICEPROVIDER_VMWARE_VI_SERVER, "https://viserver/sdk", 0, "Administrator", "adminpass", 0, Nothing, Nothing)
err = job.Wait(Array(VixCOM.Constants.VIX_PROPERTY_JOB_RESULT_HANDLE), results)
If lib.ErrorIndicatesFailure(err) Then
' Handle the error...
End If
Set host = results(0)
' ...Do everything in your program...
Set results = Nothing
Set job = Nothing
host.Disconnect()