<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>article VixJob_Wait() never returns after VixHost_Connect() with VMware Server 2 beta/beta2/RC1 in VIX API Documents</title>
    <link>https://communities.vmware.com/t5/VIX-API-Documents/VixJob-Wait-never-returns-after-VixHost-Connect-with-VMware/ta-p/2784152</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I have programmed a Windows service to automate backups for our VMware&amp;nbsp; GSX, VMware Server 1.x Hosts. Since VMware Server beta is available i&amp;nbsp; tried to do the same with the new version, but i even can't connect to&amp;nbsp; the host. The program is written in Power Basic, the vix.h is translated&amp;nbsp; to an include file. It all works with VMware Server 1.0.x, but VMware&amp;nbsp; Server 2 released new DLL's for the clients. After exchanging the DLL's&amp;nbsp; the program hooks up with call VixJob_Wait(), though calling conventions&amp;nbsp; (according to documentation) didn't change since VMware Server 1.x.&lt;BR /&gt; &lt;BR /&gt; Here is a part of the code:&lt;BR /&gt; &lt;BR /&gt; LOCAL VErr AS QUAD&lt;BR /&gt; LOCAL jobHandle AS DWORD&lt;BR /&gt; LOCAL vmHandle AS DWORD&lt;BR /&gt; LOCAL hostHandle AS DWORD&lt;BR /&gt; LOCAL lState AS LONG&lt;BR /&gt; &lt;BR /&gt; jobHandle = VixHost_Connect(%VIX_API_VERSION, _&lt;BR /&gt; %VIX_SERVICEPROVIDER_VMWARE_SERVER, _&lt;BR /&gt; BYVAL 0, _ 'host&lt;BR /&gt; 0, _ 'port&lt;BR /&gt; BYVAL 0, _ 'user&lt;BR /&gt; BYVAL 0, _ 'password&lt;BR /&gt; 0, _ 'options&lt;BR /&gt; %VIX_INVALID_HANDLE, _ 'propertyListHandle,&lt;BR /&gt; BYVAL 0, _ 'callbackProc&lt;BR /&gt; BYVAL 0) 'clientData&lt;BR /&gt; VErr = VixJob_Wait(jobHandle, _&lt;BR /&gt; %VIX_PROPERTY_JOB_RESULT_HANDLE, _&lt;BR /&gt; hostHandle, _&lt;BR /&gt; %VIX_PROPERTY_NONE)&lt;BR /&gt; IF VErr = %VIX_OK THEN&lt;BR /&gt; .....program continues here with normal operation&lt;BR /&gt; &lt;BR /&gt; Except of the variable definition you can treat the code like C.&lt;BR /&gt; The program gets a jobhandle (=63) but not host handle, VixJob_Wait does not return, no value calculated for VErr...&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;HR /&gt;&lt;P&gt;You need to modify your VixHost_Connect() parameters to work with Server 2.&lt;BR /&gt; &lt;BR /&gt; &lt;A class="jive-link-external" href="http://vmware.com/products/beta/vmware_server/vix_api/ReferenceGuide/"&gt;http://vmware.com/products/beta/vmware_server/vix_api/ReferenceGuide/&lt;/A&gt; has the updated documentation.&lt;BR /&gt; &lt;BR /&gt; There may be other issues if you're directly linking to libvix.dll instead of using vixAllProducts.lib.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;HR /&gt;&lt;P&gt;Thanks for your answer. I tried a little with the calling parameters,&amp;nbsp; but it's still the same: VixHost_Connect() delivers value=63 (looks OK&amp;nbsp; for me), VixHost_Disconnect() is also working, hook-up with&amp;nbsp; VixJob_Wait()&lt;BR /&gt; &lt;BR /&gt; lVersion= %VIX_API_VERSION&lt;BR /&gt; vmHost = "&lt;A class="jive-link-external" href="https://localhost:8333/sdk/"&gt;https://localhost:8333/sdk/&lt;/A&gt;"&lt;BR /&gt; vmUser = "Administrator"&lt;BR /&gt; vmPass = "mypass"&lt;/P&gt;&lt;P&gt;PBOUT "connecting to: "&lt;EM&gt;vmHost&lt;/EM&gt;" API:"+STR$(lVersion)&lt;BR /&gt; jobHandle = VixHost_Connect(lVersion, _&lt;BR /&gt; %VIX_SERVICEPROVIDER_VMWARE_SERVER, _&lt;BR /&gt; vmHost, 0, vmUser, vmPass, 0, _ 'host,user,password,options&lt;BR /&gt; %VIX_INVALID_HANDLE, _ 'propertyListHandle,&lt;BR /&gt; BYVAL 0, _ 'callbackProc&lt;BR /&gt; BYVAL 0) 'clientData&lt;BR /&gt; PBOut "disconnecting..., jobHandle:"+STR$(jobHandle)&lt;BR /&gt; WAITKEY$&lt;BR /&gt; VixHost_Disconnect( jobHandle )&lt;BR /&gt; pbout "waiting..., jobHandle:"+STR$(jobHandle)&lt;BR /&gt; VErr = VixJob_Wait( jobHandle, _&lt;BR /&gt; %VIX_PROPERTY_JOB_RESULT_HANDLE, _&lt;BR /&gt; hostHandle, %VIX_PROPERTY_NONE)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;BR /&gt; Besides: i tried the PowerOn.c example with VisualStudio 2005, static&amp;nbsp; linking VixAllProducts.lib, compiles and links without any error. After&amp;nbsp; starting/debugging it hooks-up after VixHost_Connect(). Here is the&amp;nbsp; code:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;BR /&gt; /* *********************************************************************&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;Copyright (c) 2007 VMware, Inc.&lt;/LI&gt;&lt;LI&gt;All rights not expressly granted to you by VMware, Inc. are reserved.&lt;/LI&gt;&lt;LI&gt;*********************************************************************/&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;/* This demonstrates how to open a virtual machine,&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;power it on, and power it off.&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;This uses the VixJob_Wait function to block after starting each&lt;/LI&gt;&lt;LI&gt;asynchronous function. This effectively makes the asynchronous&lt;/LI&gt;&lt;LI&gt;functions synchronous, because VixJob_Wait will not return until the&lt;/LI&gt;&lt;LI&gt;asynchronous function has completed.&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*/&lt;/P&gt;&lt;P&gt;#include &amp;lt;stdio.h&amp;gt;&lt;BR /&gt; #include &amp;lt;stdlib.h&amp;gt;&lt;/P&gt;&lt;P&gt;#include "vix.h"&lt;/P&gt;&lt;P&gt;&lt;BR /&gt; /*&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;Certain arguments differ when using VIX with VMware Server 2.0&lt;/LI&gt;&lt;LI&gt;and VMware Workstation.&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;Comment out this definition to use this code with VMware Server 2.0.&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*/&lt;/P&gt;&lt;P&gt;/*&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;For VMware Server 2.0&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*/&lt;/P&gt;&lt;P&gt;#define CONNTYPE VIX_SERVICEPROVIDER_VMWARE_SERVER&lt;/P&gt;&lt;P&gt;/*#define HOSTNAME "&lt;A class="jive-link-external" href="https://localhost:8333/ui"&gt;https://localhost:8333/ui&lt;/A&gt;"&lt;BR /&gt; #define HOSTPORT 0&lt;BR /&gt; #define USERNAME "Administrator"&lt;BR /&gt; #define PASSWORD "mypass"*/&lt;BR /&gt; #define HOSTNAME ""&lt;BR /&gt; #define HOSTPORT 0&lt;BR /&gt; #define USERNAME ""&lt;BR /&gt; #define PASSWORD ""&lt;/P&gt;&lt;P&gt;#define VMPOWEROPTIONS VIX_VMPOWEROP_NORMAL&lt;/P&gt;&lt;P&gt;#define VMXPATH_INFO "where vmxpath is a datastore-relative path to the " \&lt;BR /&gt; ".vmx file for the virtual machine, such as " \&lt;BR /&gt; "\"&lt;A _jive_internal="true" href="https://communities.vmware.com/community-document-picker.jspa?communityID=2417&amp;amp;subject=standard"&gt;standard&lt;/A&gt; ubuntu/ubuntu.vmx\"."&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;BR /&gt; /*&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;Global variables.&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*/&lt;/P&gt;&lt;P&gt;static char *progName;&lt;/P&gt;&lt;P&gt;&lt;BR /&gt; /*&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;Local functions.&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*/&lt;/P&gt;&lt;P&gt;////////////////////////////////////////////////////////////////////////////////&lt;BR /&gt; static void&lt;BR /&gt; usage()&lt;BR /&gt; {&lt;BR /&gt; fprintf(stderr, "Usage: %s &amp;lt;vmxpath&amp;gt;\n", progName);&lt;BR /&gt; fprintf(stderr, "%s\n", VMXPATH_INFO);&lt;BR /&gt; }&lt;/P&gt;&lt;P&gt;&lt;BR /&gt; ////////////////////////////////////////////////////////////////////////////////&lt;BR /&gt; int&lt;BR /&gt; main(int argc, char **argv)&lt;BR /&gt; {&lt;BR /&gt; VixError err;&lt;BR /&gt; char *vmxPath;&lt;BR /&gt; VixHandle hostHandle = VIX_INVALID_HANDLE;&lt;BR /&gt; VixHandle jobHandle = VIX_INVALID_HANDLE;&lt;BR /&gt; VixHandle vmHandle = VIX_INVALID_HANDLE;&lt;/P&gt;&lt;P&gt;progName = argv[0];&lt;BR /&gt; if (argc &amp;gt; 1) {&lt;BR /&gt; vmxPath = argv[1];&lt;BR /&gt; } else {&lt;BR /&gt; usage();&lt;BR /&gt; exit(EXIT_FAILURE);&lt;BR /&gt; }&lt;/P&gt;&lt;P&gt;fprintf(stderr, "connect to host:%s\n", HOSTNAME);&lt;BR /&gt; jobHandle = VixHost_Connect(VIX_API_VERSION,&lt;BR /&gt; CONNTYPE,&lt;BR /&gt; HOSTNAME, // *hostName,&lt;BR /&gt; HOSTPORT, // hostPort,&lt;BR /&gt; USERNAME, // *userName,&lt;BR /&gt; PASSWORD, // *password,&lt;BR /&gt; 0, // options,&lt;BR /&gt; VIX_INVALID_HANDLE, // propertyListHandle,&lt;BR /&gt; NULL, // *callbackProc,&lt;BR /&gt; NULL); // *clientData);&lt;BR /&gt; fprintf(stderr, "wait...\n");&lt;BR /&gt; err = VixJob_Wait(jobHandle, &lt;BR /&gt; VIX_PROPERTY_JOB_RESULT_HANDLE, &lt;BR /&gt; &amp;amp;hostHandle,&lt;BR /&gt; VIX_PROPERTY_NONE);&lt;BR /&gt; if (VIX_FAILED(err)) {&lt;BR /&gt; fprintf(stderr, "can't connect: %s\n", vmxPath);&lt;BR /&gt; goto abort;&lt;BR /&gt; }&lt;/P&gt;&lt;P&gt;Vix_ReleaseHandle(jobHandle);&lt;BR /&gt; jobHandle = VixVM_Open(hostHandle,&lt;BR /&gt; vmxPath,&lt;BR /&gt; NULL, // VixEventProc *callbackProc,&lt;BR /&gt; NULL); // void *clientData);&lt;BR /&gt; err = VixJob_Wait(jobHandle, &lt;BR /&gt; VIX_PROPERTY_JOB_RESULT_HANDLE, &lt;BR /&gt; &amp;amp;vmHandle,&lt;BR /&gt; VIX_PROPERTY_NONE);&lt;BR /&gt; if (VIX_FAILED(err)) {&lt;BR /&gt; goto abort;&lt;BR /&gt; }&lt;/P&gt;&lt;P&gt;Vix_ReleaseHandle(jobHandle);&lt;BR /&gt; jobHandle = VixVM_PowerOn(vmHandle,&lt;BR /&gt; VMPOWEROPTIONS,&lt;BR /&gt; VIX_INVALID_HANDLE,&lt;BR /&gt; NULL, // *callbackProc,&lt;BR /&gt; NULL); // *clientData);&lt;BR /&gt; err = VixJob_Wait(jobHandle, VIX_PROPERTY_NONE);&lt;BR /&gt; if (VIX_FAILED(err)) {&lt;BR /&gt; goto abort;&lt;BR /&gt; }&lt;/P&gt;&lt;P&gt;Vix_ReleaseHandle(jobHandle);&lt;BR /&gt; jobHandle = VixVM_PowerOff(vmHandle,&lt;BR /&gt; VIX_VMPOWEROP_NORMAL,&lt;BR /&gt; NULL, // *callbackProc,&lt;BR /&gt; NULL); // *clientData);&lt;BR /&gt; err = VixJob_Wait(jobHandle, VIX_PROPERTY_NONE);&lt;BR /&gt; if (VIX_FAILED(err)) {&lt;BR /&gt; goto abort;&lt;BR /&gt; }&lt;/P&gt;&lt;P&gt;abort:&lt;BR /&gt; Vix_ReleaseHandle(jobHandle);&lt;BR /&gt; Vix_ReleaseHandle(vmHandle);&lt;/P&gt;&lt;P&gt;VixHost_Disconnect(hostHandle);&lt;/P&gt;&lt;P&gt;return 0;&lt;BR /&gt; }&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;HR /&gt;&lt;P&gt;If i change the provider to VIX_SERVICEPROVIDER_VMWARE_WORKSTATION it works without error.&lt;BR /&gt; Hey VMware guys, this is a joke, isn't it???&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;HR /&gt;&lt;P&gt;For Server 2.0, you need to use the hostType&amp;nbsp; VIX_SERVICEPROVIDER_VMWARE_VI_SERVER. The currently posted docs are too&amp;nbsp; vague on that, but its been fixed for the next beta cycle.&lt;BR /&gt; &lt;BR /&gt; And it works fine with WORKSTATION because all its doing in that case is&amp;nbsp; initializing the API. For remote cases we need to connect to the&amp;nbsp; services, but WORKSTATION is local.&lt;BR /&gt; &lt;BR /&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;HR /&gt;&lt;P&gt;I'll get connected with WORKSTATION, but if a guest ist started by my&amp;nbsp; program i can't access it through WebUI. I think this is, what you&amp;nbsp; meant.&lt;BR /&gt; I tried VI_SERVER also, but got many errors, looked like XML code.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;HR /&gt;&lt;P&gt;Connecting with VIX_SERVICEPROVIDER_VMWARE_VI_SERVER connects to the&amp;nbsp; host, but the following VixJob_Wait() does not deliver a hosthandle&amp;nbsp; (=0).&lt;BR /&gt; host, user, password and port are set to NUL, because local connect, but i think the VI_SERVER needs more.&lt;BR /&gt; &lt;BR /&gt; This document was generated from the following thread: &lt;A _jive_internal="true" href="https://communities.vmware.com/thread/155625"&gt;VixJob_Wait() never returns after VixHost_Connect() with VMware Server 2 beta/beta2/RC1&lt;/A&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Mon, 14 Jul 2008 07:33:18 GMT</pubDate>
    <dc:creator>qatest545</dc:creator>
    <dc:date>2008-07-14T07:33:18Z</dc:date>
    <item>
      <title>VixJob_Wait() never returns after VixHost_Connect() with VMware Server 2 beta/beta2/RC1</title>
      <link>https://communities.vmware.com/t5/VIX-API-Documents/VixJob-Wait-never-returns-after-VixHost-Connect-with-VMware/ta-p/2784152</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I have programmed a Windows service to automate backups for our VMware&amp;nbsp; GSX, VMware Server 1.x Hosts. Since VMware Server beta is available i&amp;nbsp; tried to do the same with the new version, but i even can't connect to&amp;nbsp; the host. The program is written in Power Basic, the vix.h is translated&amp;nbsp; to an include file. It all works with VMware Server 1.0.x, but VMware&amp;nbsp; Server 2 released new DLL's for the clients. After exchanging the DLL's&amp;nbsp; the program hooks up with call VixJob_Wait(), though calling conventions&amp;nbsp; (according to documentation) didn't change since VMware Server 1.x.&lt;BR /&gt; &lt;BR /&gt; Here is a part of the code:&lt;BR /&gt; &lt;BR /&gt; LOCAL VErr AS QUAD&lt;BR /&gt; LOCAL jobHandle AS DWORD&lt;BR /&gt; LOCAL vmHandle AS DWORD&lt;BR /&gt; LOCAL hostHandle AS DWORD&lt;BR /&gt; LOCAL lState AS LONG&lt;BR /&gt; &lt;BR /&gt; jobHandle = VixHost_Connect(%VIX_API_VERSION, _&lt;BR /&gt; %VIX_SERVICEPROVIDER_VMWARE_SERVER, _&lt;BR /&gt; BYVAL 0, _ 'host&lt;BR /&gt; 0, _ 'port&lt;BR /&gt; BYVAL 0, _ 'user&lt;BR /&gt; BYVAL 0, _ 'password&lt;BR /&gt; 0, _ 'options&lt;BR /&gt; %VIX_INVALID_HANDLE, _ 'propertyListHandle,&lt;BR /&gt; BYVAL 0, _ 'callbackProc&lt;BR /&gt; BYVAL 0) 'clientData&lt;BR /&gt; VErr = VixJob_Wait(jobHandle, _&lt;BR /&gt; %VIX_PROPERTY_JOB_RESULT_HANDLE, _&lt;BR /&gt; hostHandle, _&lt;BR /&gt; %VIX_PROPERTY_NONE)&lt;BR /&gt; IF VErr = %VIX_OK THEN&lt;BR /&gt; .....program continues here with normal operation&lt;BR /&gt; &lt;BR /&gt; Except of the variable definition you can treat the code like C.&lt;BR /&gt; The program gets a jobhandle (=63) but not host handle, VixJob_Wait does not return, no value calculated for VErr...&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;HR /&gt;&lt;P&gt;You need to modify your VixHost_Connect() parameters to work with Server 2.&lt;BR /&gt; &lt;BR /&gt; &lt;A class="jive-link-external" href="http://vmware.com/products/beta/vmware_server/vix_api/ReferenceGuide/"&gt;http://vmware.com/products/beta/vmware_server/vix_api/ReferenceGuide/&lt;/A&gt; has the updated documentation.&lt;BR /&gt; &lt;BR /&gt; There may be other issues if you're directly linking to libvix.dll instead of using vixAllProducts.lib.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;HR /&gt;&lt;P&gt;Thanks for your answer. I tried a little with the calling parameters,&amp;nbsp; but it's still the same: VixHost_Connect() delivers value=63 (looks OK&amp;nbsp; for me), VixHost_Disconnect() is also working, hook-up with&amp;nbsp; VixJob_Wait()&lt;BR /&gt; &lt;BR /&gt; lVersion= %VIX_API_VERSION&lt;BR /&gt; vmHost = "&lt;A class="jive-link-external" href="https://localhost:8333/sdk/"&gt;https://localhost:8333/sdk/&lt;/A&gt;"&lt;BR /&gt; vmUser = "Administrator"&lt;BR /&gt; vmPass = "mypass"&lt;/P&gt;&lt;P&gt;PBOUT "connecting to: "&lt;EM&gt;vmHost&lt;/EM&gt;" API:"+STR$(lVersion)&lt;BR /&gt; jobHandle = VixHost_Connect(lVersion, _&lt;BR /&gt; %VIX_SERVICEPROVIDER_VMWARE_SERVER, _&lt;BR /&gt; vmHost, 0, vmUser, vmPass, 0, _ 'host,user,password,options&lt;BR /&gt; %VIX_INVALID_HANDLE, _ 'propertyListHandle,&lt;BR /&gt; BYVAL 0, _ 'callbackProc&lt;BR /&gt; BYVAL 0) 'clientData&lt;BR /&gt; PBOut "disconnecting..., jobHandle:"+STR$(jobHandle)&lt;BR /&gt; WAITKEY$&lt;BR /&gt; VixHost_Disconnect( jobHandle )&lt;BR /&gt; pbout "waiting..., jobHandle:"+STR$(jobHandle)&lt;BR /&gt; VErr = VixJob_Wait( jobHandle, _&lt;BR /&gt; %VIX_PROPERTY_JOB_RESULT_HANDLE, _&lt;BR /&gt; hostHandle, %VIX_PROPERTY_NONE)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;BR /&gt; Besides: i tried the PowerOn.c example with VisualStudio 2005, static&amp;nbsp; linking VixAllProducts.lib, compiles and links without any error. After&amp;nbsp; starting/debugging it hooks-up after VixHost_Connect(). Here is the&amp;nbsp; code:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;BR /&gt; /* *********************************************************************&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;Copyright (c) 2007 VMware, Inc.&lt;/LI&gt;&lt;LI&gt;All rights not expressly granted to you by VMware, Inc. are reserved.&lt;/LI&gt;&lt;LI&gt;*********************************************************************/&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;/* This demonstrates how to open a virtual machine,&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;power it on, and power it off.&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;This uses the VixJob_Wait function to block after starting each&lt;/LI&gt;&lt;LI&gt;asynchronous function. This effectively makes the asynchronous&lt;/LI&gt;&lt;LI&gt;functions synchronous, because VixJob_Wait will not return until the&lt;/LI&gt;&lt;LI&gt;asynchronous function has completed.&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*/&lt;/P&gt;&lt;P&gt;#include &amp;lt;stdio.h&amp;gt;&lt;BR /&gt; #include &amp;lt;stdlib.h&amp;gt;&lt;/P&gt;&lt;P&gt;#include "vix.h"&lt;/P&gt;&lt;P&gt;&lt;BR /&gt; /*&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;Certain arguments differ when using VIX with VMware Server 2.0&lt;/LI&gt;&lt;LI&gt;and VMware Workstation.&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;Comment out this definition to use this code with VMware Server 2.0.&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*/&lt;/P&gt;&lt;P&gt;/*&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;For VMware Server 2.0&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*/&lt;/P&gt;&lt;P&gt;#define CONNTYPE VIX_SERVICEPROVIDER_VMWARE_SERVER&lt;/P&gt;&lt;P&gt;/*#define HOSTNAME "&lt;A class="jive-link-external" href="https://localhost:8333/ui"&gt;https://localhost:8333/ui&lt;/A&gt;"&lt;BR /&gt; #define HOSTPORT 0&lt;BR /&gt; #define USERNAME "Administrator"&lt;BR /&gt; #define PASSWORD "mypass"*/&lt;BR /&gt; #define HOSTNAME ""&lt;BR /&gt; #define HOSTPORT 0&lt;BR /&gt; #define USERNAME ""&lt;BR /&gt; #define PASSWORD ""&lt;/P&gt;&lt;P&gt;#define VMPOWEROPTIONS VIX_VMPOWEROP_NORMAL&lt;/P&gt;&lt;P&gt;#define VMXPATH_INFO "where vmxpath is a datastore-relative path to the " \&lt;BR /&gt; ".vmx file for the virtual machine, such as " \&lt;BR /&gt; "\"&lt;A _jive_internal="true" href="https://communities.vmware.com/community-document-picker.jspa?communityID=2417&amp;amp;subject=standard"&gt;standard&lt;/A&gt; ubuntu/ubuntu.vmx\"."&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;BR /&gt; /*&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;Global variables.&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*/&lt;/P&gt;&lt;P&gt;static char *progName;&lt;/P&gt;&lt;P&gt;&lt;BR /&gt; /*&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;Local functions.&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*/&lt;/P&gt;&lt;P&gt;////////////////////////////////////////////////////////////////////////////////&lt;BR /&gt; static void&lt;BR /&gt; usage()&lt;BR /&gt; {&lt;BR /&gt; fprintf(stderr, "Usage: %s &amp;lt;vmxpath&amp;gt;\n", progName);&lt;BR /&gt; fprintf(stderr, "%s\n", VMXPATH_INFO);&lt;BR /&gt; }&lt;/P&gt;&lt;P&gt;&lt;BR /&gt; ////////////////////////////////////////////////////////////////////////////////&lt;BR /&gt; int&lt;BR /&gt; main(int argc, char **argv)&lt;BR /&gt; {&lt;BR /&gt; VixError err;&lt;BR /&gt; char *vmxPath;&lt;BR /&gt; VixHandle hostHandle = VIX_INVALID_HANDLE;&lt;BR /&gt; VixHandle jobHandle = VIX_INVALID_HANDLE;&lt;BR /&gt; VixHandle vmHandle = VIX_INVALID_HANDLE;&lt;/P&gt;&lt;P&gt;progName = argv[0];&lt;BR /&gt; if (argc &amp;gt; 1) {&lt;BR /&gt; vmxPath = argv[1];&lt;BR /&gt; } else {&lt;BR /&gt; usage();&lt;BR /&gt; exit(EXIT_FAILURE);&lt;BR /&gt; }&lt;/P&gt;&lt;P&gt;fprintf(stderr, "connect to host:%s\n", HOSTNAME);&lt;BR /&gt; jobHandle = VixHost_Connect(VIX_API_VERSION,&lt;BR /&gt; CONNTYPE,&lt;BR /&gt; HOSTNAME, // *hostName,&lt;BR /&gt; HOSTPORT, // hostPort,&lt;BR /&gt; USERNAME, // *userName,&lt;BR /&gt; PASSWORD, // *password,&lt;BR /&gt; 0, // options,&lt;BR /&gt; VIX_INVALID_HANDLE, // propertyListHandle,&lt;BR /&gt; NULL, // *callbackProc,&lt;BR /&gt; NULL); // *clientData);&lt;BR /&gt; fprintf(stderr, "wait...\n");&lt;BR /&gt; err = VixJob_Wait(jobHandle, &lt;BR /&gt; VIX_PROPERTY_JOB_RESULT_HANDLE, &lt;BR /&gt; &amp;amp;hostHandle,&lt;BR /&gt; VIX_PROPERTY_NONE);&lt;BR /&gt; if (VIX_FAILED(err)) {&lt;BR /&gt; fprintf(stderr, "can't connect: %s\n", vmxPath);&lt;BR /&gt; goto abort;&lt;BR /&gt; }&lt;/P&gt;&lt;P&gt;Vix_ReleaseHandle(jobHandle);&lt;BR /&gt; jobHandle = VixVM_Open(hostHandle,&lt;BR /&gt; vmxPath,&lt;BR /&gt; NULL, // VixEventProc *callbackProc,&lt;BR /&gt; NULL); // void *clientData);&lt;BR /&gt; err = VixJob_Wait(jobHandle, &lt;BR /&gt; VIX_PROPERTY_JOB_RESULT_HANDLE, &lt;BR /&gt; &amp;amp;vmHandle,&lt;BR /&gt; VIX_PROPERTY_NONE);&lt;BR /&gt; if (VIX_FAILED(err)) {&lt;BR /&gt; goto abort;&lt;BR /&gt; }&lt;/P&gt;&lt;P&gt;Vix_ReleaseHandle(jobHandle);&lt;BR /&gt; jobHandle = VixVM_PowerOn(vmHandle,&lt;BR /&gt; VMPOWEROPTIONS,&lt;BR /&gt; VIX_INVALID_HANDLE,&lt;BR /&gt; NULL, // *callbackProc,&lt;BR /&gt; NULL); // *clientData);&lt;BR /&gt; err = VixJob_Wait(jobHandle, VIX_PROPERTY_NONE);&lt;BR /&gt; if (VIX_FAILED(err)) {&lt;BR /&gt; goto abort;&lt;BR /&gt; }&lt;/P&gt;&lt;P&gt;Vix_ReleaseHandle(jobHandle);&lt;BR /&gt; jobHandle = VixVM_PowerOff(vmHandle,&lt;BR /&gt; VIX_VMPOWEROP_NORMAL,&lt;BR /&gt; NULL, // *callbackProc,&lt;BR /&gt; NULL); // *clientData);&lt;BR /&gt; err = VixJob_Wait(jobHandle, VIX_PROPERTY_NONE);&lt;BR /&gt; if (VIX_FAILED(err)) {&lt;BR /&gt; goto abort;&lt;BR /&gt; }&lt;/P&gt;&lt;P&gt;abort:&lt;BR /&gt; Vix_ReleaseHandle(jobHandle);&lt;BR /&gt; Vix_ReleaseHandle(vmHandle);&lt;/P&gt;&lt;P&gt;VixHost_Disconnect(hostHandle);&lt;/P&gt;&lt;P&gt;return 0;&lt;BR /&gt; }&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;HR /&gt;&lt;P&gt;If i change the provider to VIX_SERVICEPROVIDER_VMWARE_WORKSTATION it works without error.&lt;BR /&gt; Hey VMware guys, this is a joke, isn't it???&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;HR /&gt;&lt;P&gt;For Server 2.0, you need to use the hostType&amp;nbsp; VIX_SERVICEPROVIDER_VMWARE_VI_SERVER. The currently posted docs are too&amp;nbsp; vague on that, but its been fixed for the next beta cycle.&lt;BR /&gt; &lt;BR /&gt; And it works fine with WORKSTATION because all its doing in that case is&amp;nbsp; initializing the API. For remote cases we need to connect to the&amp;nbsp; services, but WORKSTATION is local.&lt;BR /&gt; &lt;BR /&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;HR /&gt;&lt;P&gt;I'll get connected with WORKSTATION, but if a guest ist started by my&amp;nbsp; program i can't access it through WebUI. I think this is, what you&amp;nbsp; meant.&lt;BR /&gt; I tried VI_SERVER also, but got many errors, looked like XML code.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;HR /&gt;&lt;P&gt;Connecting with VIX_SERVICEPROVIDER_VMWARE_VI_SERVER connects to the&amp;nbsp; host, but the following VixJob_Wait() does not deliver a hosthandle&amp;nbsp; (=0).&lt;BR /&gt; host, user, password and port are set to NUL, because local connect, but i think the VI_SERVER needs more.&lt;BR /&gt; &lt;BR /&gt; This document was generated from the following thread: &lt;A _jive_internal="true" href="https://communities.vmware.com/thread/155625"&gt;VixJob_Wait() never returns after VixHost_Connect() with VMware Server 2 beta/beta2/RC1&lt;/A&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 14 Jul 2008 07:33:18 GMT</pubDate>
      <guid>https://communities.vmware.com/t5/VIX-API-Documents/VixJob-Wait-never-returns-after-VixHost-Connect-with-VMware/ta-p/2784152</guid>
      <dc:creator>qatest545</dc:creator>
      <dc:date>2008-07-14T07:33:18Z</dc:date>
    </item>
  </channel>
</rss>

