Hi Siva,
Cool question, here is the link to the actual VDDK docs discussing the mulithreading stuff - just in case things may change in the future.
Now for your question:
I was doing this for each thread that is getting called everytime. But according the documentation, I am supposed to call VixDiskLib_Init from the main thread, that may not work for me as it is a DLL. Say if I restrict the simultaneous DLL call to only one - can I call VixDiskLib_Init each time I instantiante the DLL ? Any help is greatly apperitiated !
Basically I would say that could work. Though restricting the call to the DLL to one thread actually makes it single threaded again, i.e. all the VDDK stuff, Step1 through Step7, will be done in one thread. With respect to the main thread thing: it is a recommendation. I guess it is recommended that way to easily assure that InitEx() or Init() are really called only once at the beginning of the application. As I understand it you want to impose a single thread rule for Step1 through Step7. That is this thread could be deem the "main VDDK thread" doing a full VDDK cycle. As my background is more a Java one I am not absolutely sure with respect to memory management issues but as I understand it you will use LoadLibrary and FreeLibrary which again should do a full load and unload to and from the address space of your application, eventually yielding a full and proper VDDK cycle.
As long as you do not plan to simultaneously read and write disks and do not have any performance concerns doing a full VDDK cylce for each disk being accessed I guess your approach should be fine.
Hope this helps :-)