Virtualbox 为什么VBOX_E_INVALID_VM_状态在截然不同的情况下使用?

Virtualbox 为什么VBOX_E_INVALID_VM_状态在截然不同的情况下使用?,virtualbox,Virtualbox,我查看了GitHub上的VBox源代码,发现VBox\u E\u INVALID\u VM\u STATE是一条catchall错误消息,适用于多种情况,例如,在以下方法中(除其他方法外): 是否有理由在截然不同的情况下使用相同的错误? 这几乎不可能知道来宾进入VBOX\u E\u INVALID\u VM\u状态的原因 将个性化的错误结果与产生错误的方法相链接,例如,RemoveShared文件夹中的VBOX\u e\u INVALID\u VM\u STATE\u或takeSnapshot中

我查看了GitHub上的VBox源代码,发现
VBox\u E\u INVALID\u VM\u STATE
是一条catchall错误消息,适用于多种情况,例如,在以下方法中(除其他方法外):

是否有理由在截然不同的情况下使用相同的错误?

这几乎不可能知道来宾进入
VBOX\u E\u INVALID\u VM\u状态的原因

将个性化的错误结果与产生错误的方法相链接,例如,RemoveShared文件夹中的
VBOX\u e\u INVALID\u VM\u STATE\u或takeSnapshot中的
VBOX\u INVALID\u VM\u STATE\u,不是更好吗?
这样,用户至少会知道为什么她的来宾VM进入了
VBOX\u E\u INVALID\u VM\u状态

如果我想创建VBox代码库的一个分支,在那里我将实现个性化的错误消息,那么我应该阅读哪些文档来了解应该更改中的哪些文件?

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.