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.
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/
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?
How can I write to technical support on this issue?
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.
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.
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
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
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();
}
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
You may download from the following link
http://www.filewatcher.com/m/vmware-mount-5.5.0-18463.exe.9677568-0.html
Better link (from VMware):
https://my.vmware.com/group/vmware/details?productId=46&downloadGroup=WKST-550-DISK-MOUNT-UTL