11 Replies Latest reply on Jul 10, 2015 12:00 AM by jeremyb Branched to a new discussion.

    VDDK 5.5 missing vmware-mount.exe

    jeremyb Novice

      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.

        • 1. Re: VDDK 5.5 missing vmware-mount.exe
          Abhilashhb Virtuoso
          vExpertVMware Employees

          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/

          ------------------------------------------------------------------------------------------------------------------------------------
          If you find this or any other answer useful please mark the answer as correct or helpful.
          Abhilash HB
          | Blog : http://vpirate.in | Twitter : @abhilashhb |

          1 person found this helpful
          • 2. Re: VDDK 5.5 missing vmware-mount.exe
            jeremyb Novice

            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?

            • 3. Re: VDDK 5.5 missing vmware-mount.exe
              lamerische Lurker

              How can I write to technical support on this issue?

              • 4. Re: VDDK 5.5 missing vmware-mount.exe
                aenaon Lurker

                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.

                • 5. Re: VDDK 5.5 missing vmware-mount.exe
                  svenherren 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.

                  • 6. Re: VDDK 5.5 missing vmware-mount.exe
                    adeelnafees Lurker



                    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

                    • 7. Re: VDDK 5.5 missing vmware-mount.exe
                      svenherren 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

                      • 8. Re: VDDK 5.5 missing vmware-mount.exe
                        adeelnafees Lurker



                        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();


                        }

                        • 9. Re: VDDK 5.5 missing vmware-mount.exe
                          adeelnafees Lurker



                          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