VMware {code} Community
jeremyb
Contributor
Contributor

VDDK 5.5 missing vmware-mount.exe

With the release of VDDK 5.5 the command line utility vmware-mount.exe has been removed. The release notes for VDDK 5.5 also note that vmware-vdiskmanager.exe is not included either (although it is included).

Does anyone know what the future of vmware-mount.exe is? We use this tool frequently and hate to see it go.

Can anyone suggest a replacement command line utility that can be used in place of vmware-mount.exe?

Can we also expect vmware-vdiskmanager.exe to be missing in the next release of VDDK?

Thanks in advance.

Reply
0 Kudos
11 Replies
abhilashhb
VMware Employee
VMware Employee

I use Vmware-mount present in 5.1 VDDK. That still works fine even for 5.5.

I even wrote a blog post on it

http://vpirate.in/2013/11/29/vmware-disk-mount-utility-retrieve-data-present-on-vmdk/

Abhilash B
LinkedIn : https://www.linkedin.com/in/abhilashhb/

jeremyb
Contributor
Contributor

I agree. Just wanting to stay current on APIs. Hate to be developing "current" code against "discontinued" APIs.

Still trying to figure out if vmware-mount.exe will be brought back to life in future release of VDDK.

I have spent several hours looking for a suitable replacement. Maybe VDK (https://sites.google.com/site/chitchatvmback/vdk)? Only been able to find a 32-bit unsigned driver though so this is not looking good.

Any other options?

Reply
0 Kudos
lamerische
Contributor
Contributor

How can I write to technical support on this issue?

Reply
0 Kudos
aenaon
Contributor
Contributor

I seriously hope this was done temporarily or by accident. Maybe there's a rebranding going on and it will be as part of another SDK?

We are using VMWare products instead of the Microsoft ones, exactly because of the superiority of vmware-mount.exe over the equivalent Microsoft one (for VHDs). Loose that, and we're straight back to Hyper-V.

Reply
0 Kudos
svenherren
Enthusiast
Enthusiast

Using VDDK 5.5 vixDiskLib and vixMntapi in your Visual Studio, you can easily programm the logic of vmware-mount.exe by yourself. That's what we did and even added some nice features,too. So no need at all to go to Hyper-V. VDDK is a great interface from VMware.

Reply
0 Kudos
adeelnafees
Contributor
Contributor



Hi there!

I downloaded the VDDK 5.5 and it looks like its only available on C+. I have done most of my work in C#, I tried to mess with it on C+ but I am getting bunch of unresolved external symbol errors. I copied the header and lib files into the project folder and included library refernces to the Project properties with no luck.



Would you be able to share your solution for please?


Thanks,


Adeel

Reply
0 Kudos
svenherren
Enthusiast
Enthusiast

Hi, you cannot use C# since VIX API's is not managed code. So you have to use C or C++.

Use the sample project thats delivered with VDDK. This works fine. Either copy it and adapt it to your needs for your own development.

If you still have trouble, define _WIN32 and DYNAMIC_LOADING. Be sure to have the .dll available either in your executing directory or set a path variable.

You might have downloaded VDDK and installed Visual Studio. Install vstor2 driver on the machine you want acces to the vmdk file and execute your final executable tool. You probalbly want to do this also on your developer system wher you installed visual studio, so testing and developing gets easier.

Go to lib directory and execute vstor2install.bat

check https://www.vmware.com/support/developer/vddk/vddk11_api_programming.pdf.

Page 50 is a very useful sample code using the mount api's.

You can do someting like the following, when you want to do the same as in vmware-mount.exe

// Init Disk Lib

VixDiskLib_Init

// Init Mount Lib

VixMntapi_Init

// Connect to an ESX or vCenter

VixDiskLib_ConnectEx

// Open the Disk vmdk

VixDiskLib_Open

// Open Disk set

VixMntapi_OpenDiskSet

// Get Volume Handles

VixMntapi_GetVolumeHandles

//do for all volumes within disk

{    

     // mount  the volume    

     VixMntapi_MountVolume  

       // get volume info of neede    

     VixMntapi_GetVolumeInfo    

     // if its windows what i assume if you write visual studio you can call Win32 APIs for more infos with handle from VixMntapi_GetVolumeInfo (i.e. voume name)

      GetVolumeInformationByHandleW    

     // Mount tha handle to a drive letter if you want to .. call win32 API DefineDosDevice           

     // you can check for free drive letters with QueryDosDevice    

     DefineDosDevice(DDD_RAW_TARGET_PATH    

     // do whatever you want and need to do with the volume    

     // dismount it    

     DefineDosDevice(DDD_RAW_TARGET_PATH|DDD_REMOVE_DEFINITION|DDD_EXACT_MATCH_ON_REMOVE   

      // free handles    

     VixMntapi_FreeVolumeInfo    

     // dismount vmdk from vstor2 driver    

     VixMntapi_DismountVolume

}

// free volume handles V

ixMntapi_FreeVolumeHadles

// close disk sets

VixMntapi_CloseDiskSet

VixDiskLib_EndAccess

// disconnect host or vcenter

VixDiskLib_Disconnect

// shutdown libs

VixMntapi_Exit VixDiskLib_Exit

Hope this helps

Regards Sven

Reply
0 Kudos
adeelnafees
Contributor
Contributor



Hi Sven,


Thanks  a lot for such a quick response. I followed your instructions. I am using Visual studio 2012. I copied the header, lib and dll files into my project directory.


To get started I am just trying to call VixDiskLib_Init, VixMntapi_Init and VixDiskLib_ConnectEx but When I compile my code, I still get LNK2019 unresolved external symbol error for every Vix method call.


 


Error 1 error LNK2019: unresolved external symbol VixDiskLibInit referenced in function "void __cdecl MountTest(void)" (?MountTest@@YAXXZ


Error 2 error LNK2019: unresolved external symbol VixDiskLibExit referenced in function "void __cdecl MountTest(void)" (?MountTest@@YAXXZ


Error 3 error LNK2019: unresolved external symbol VixDiskLibConnectEx referenced in function "void __cdecl MountTest(void)" (?MountTest@@YAXXZ

Error 4 error LNK2019: unresolved external symbol VixMntapiInit referenced in function "void __cdecl MountTest(void)" (?MountTest@@YAXXZ


Error 5 error LNK2019: unresolved external symbol VixMntapiExit referenced in function "void __cdecl MountTest(void)" (?MountTest@@YAXXZ


Error 6 error LNK1120: 5 unresolved externals 


 


I am a newbie for c++ and I think I am missing something very basic.


 


Thanks,


 


Adeel


here is the code:


// vddk.cpp : Defines the entry point for the console application.


//


#ifdef_WIN32


#endif


#ifdefDYNAMIC_LOADING


#endif


 


 


#include"stdafx.h"


#include"vm_basic_types.h"


#include"vixDiskLib.h"


#include"vixMntapi.h"


voidMountTest();


int_tmain(intargc, _TCHAR* argv[])


{


MountTest();


return0;


}


 


voidMountTest()


{


VixErrorvixError;


VixDiskLibConnectionconnection;


VixDiskLibConnectParamscnxParams = {0};


 


cnxParams.serverName = "XXX";


cnxParams.credType = VIXDISKLIB_CRED_UID;


cnxParams.creds.uid.userName = "XXX";


cnxParams.creds.uid.password = "XXX";


//cnxParams.thumbPrint = appGlobals.thumbPrint;


cnxParams.port = 443;


vixError = VixDiskLib_Init(5,5,NULL,NULL,NULL,NULL);


vixError = VixMntapi_Init(5,5,NULL,NULL,NULL,NULL,NULL);


VixDiskLib_ConnectEx(&cnxParams, TRUE, NULL, NULL, &connection);


 


VixMntapi_Exit();


VixDiskLib_Exit();


}

Reply
0 Kudos
adeelnafees
Contributor
Contributor



Hey Sven,


I think I found the root of the issue. When I changed the platform from x32 to x64, I am able to compile without errors... I will post an update soon.


 


Thanks again for your help!


 


Adeel

Reply
0 Kudos
Aatifali
Contributor
Contributor

Reply
0 Kudos