no, you may call iVMR.VBVMR_IsParametersDirty periodically (20 to 50 times per second) - typically in WM_TIMER event.
and refresh display if returning a value different from ZERO
you can call iVMR.VBVMR_GetParameterFloat when you want and consider it is updated.
see example in source code example vmr_client.c in Voicemeeter Remote SDK
Ok. But without "WaitForUpdate()" I get very unreliable results, for example iVMR.VBVMR_GetParameterFloat("recorder.record", &val); was returning (putting in "val" variable) 0 on first program launch and 1 on second (recorder was enabled). Also if I write something like this: Login() -> SetParameter() -> Logout();. Then SetParameter() will not change anything unless I use that loop before Logout(). For example that program https://www.dropbox.com/s/ltxfvzxenxfqt ... c%2Fmain.c was not able to change parameter without that loop at lines 46-49 or just without any Sleep function.
ok, if you are not in a Windows Event Handling Context,
you may just call iVMR.VBVMR_IsParametersDirty without sleep()
and call after iVMR.VBVMR_GetParameterFloat("recorder.record", &val);