Page 1 of 1

Why is VBOX_E_INVALID_VM_STATE used in vastly different situations?

Posted: 26. Feb 2020, 20:47
by rbarak
I looked at the VBox sources on GitHub, and see that VBOX_E_INVALID_VM_STATE is a catchall error message that is applied in numerous situations, e.g., in the following methods (among others):

Code: Select all

resumeWithReason, pauseWithReason, enableVMMStatistics, onlineMergeMedium, enumerateGuestProperties, onUSBDeviceDetach, accessGuestProperty, onUSBDeviceAttach, onSharedFolderChange, onUSBControllerChange, onVRDEServerChange, onStorageDeviceChange, onMediumChange, onStorageControllerChange, onParallelPortChange, onSerialPortChange, onNetworkAdapterChange, uninitialize, updateMachineState, assignRemoteMachine, assignMachine (target: xpidl, midl), getRemoteConsole, removeDeviceFilter, createDeviceFilter, teleport, restoreSnapshot, deleteSnapshotRange, deleteSnapshotAndAllChildren, takeSnapshot, removeSharedFolder, etc.
Is there a reason that the same error is used in vastly different situations?

This makes it near impossible to know the reason why the guest entered the VBOX_E_INVALID_VM_STATE.

Wouldn't it be better to have individualised error results, linked to the method that produced them, e.g., VBOX_E_INVALID_VM_STATE_in_emoveSharedFolder or VBOX_E_INVALID_VM_STATE_in_takeSnapshot?
That way, the user will at least have an inkling why her guest VM entered the VBOX_E_INVALID_VM_STATE.

If I want to create a branch of the VBox codebase, where I'd implement individualised error messages, which documentation should I read to know which files in should be changed?