我正在尝试设置一个游戏虚拟机,因为我不想在我的主系统上出现所有这些“垃圾”。
我已经有了 VMware Workstation 7,我决定用 Windows 7 和 Windows XP 创建一个新的 VM。
我在两台虚拟机上都安装了虚幻竞技场 2004。它无法在 Windows XP 上启动,没关系,因为它仍在我的 Windows 7 映像上运行。当我启动此游戏时,我收到消息“无法使用声音设备,因为设备 ID 超出范围”
无法打开默认声音设备:
所用的设备 ID 超出了系统范围。声音将被断开。
Windows 声音确实有效,其他一些游戏也有声音(例如魔兽争霸 II)。我怀疑这与 DirectX 或 Direct3D 声音有关。如果我没记错的话,Half-Life (CS1.6) 也没有启用声音,因为同样的错误。Counterstrike Source 在菜单中有声音,但启动游戏后它就消失了,并出现同样的错误。
有什么建议或建议吗?
我已经找到一些网站告诉我应该将声音设备更改为 Soundblaster,但这只适用于旧的 DOS 游戏。
编辑
我现在在虚拟机上玩 Doom 3,它确实有声音。我很确定它支持 DirectX。不过,它似乎不使用 DirectSound。
玩魔兽争霸 2、魔兽争霸 3、虚幻竞技场(经典)、雷神之锤 3 时也有声音。
我今天试用了 UT2003,它还启用了声音,我可以听到一切。在软件 3D、硬件 3D 和安全模式下。
根据要求,我的 VMX 文件。首先是我的 Windows 7 机器:
.encoding = "windows-1252"
config.version = "8"
virtualHW.version = "7"
numvcpus = "4"
cpuid.coresPerSocket = "2"
scsi0.present = "TRUE"
scsi0.virtualDev = "lsisas1068"
memsize = "2048"
mem.hotadd = "TRUE"
scsi0:0.present = "TRUE"
scsi0:0.fileName = "Game 7.vmdk"
ide1:0.present = "TRUE"
ide1:0.autodetect = "FALSE"
ide1:0.deviceType = "cdrom-raw"
ethernet0.present = "TRUE"
ethernet0.connectionType = "nat"
ethernet0.virtualDev = "e1000"
ethernet0.wakeOnPcktRcv = "FALSE"
ethernet0.addressType = "generated"
usb.present = "TRUE"
ehci.present = "TRUE"
sound.present = "TRUE"
sound.fileName = "-1"
sound.autodetect = "TRUE"
mks.enable3d = "TRUE"
serial0.present = "TRUE"
serial0.startConnected = "FALSE"
serial0.fileType = "thinprint"
pciBridge0.present = "TRUE"
pciBridge4.present = "TRUE"
pciBridge4.virtualDev = "pcieRootPort"
pciBridge4.functions = "8"
pciBridge5.present = "TRUE"
pciBridge5.virtualDev = "pcieRootPort"
pciBridge5.functions = "8"
pciBridge6.present = "TRUE"
pciBridge6.virtualDev = "pcieRootPort"
pciBridge6.functions = "8"
pciBridge7.present = "TRUE"
pciBridge7.virtualDev = "pcieRootPort"
pciBridge7.functions = "8"
vmci0.present = "TRUE"
roamingVM.exitBehavior = "go"
displayName = "Game 7"
guestOS = "windows7-64"
nvram = "Game 7.nvram"
virtualHW.productCompatibility = "hosted"
extendedConfigFile = "Game 7.vmxf"
ide1:0.fileName = "D:"
floppy0.present = "FALSE"
ide1:0.startConnected = "TRUE"
ethernet0.generatedAddress = "00:0c:29:e8:85:9e"
tools.syncTime = "FALSE"
uuid.location = "56 4d 8f 49 68 58 4f 4e-0e f0 f5 31 4e e8 85 9e"
uuid.bios = "56 4d 8f 49 68 58 4f 4e-0e f0 f5 31 4e e8 85 9e"
cleanShutdown = "FALSE"
replay.supported = "FALSE"
unity.wasCapable = "TRUE"
replay.filename = ""
scsi0:0.redo = ""
pciBridge0.pciSlotNumber = "17"
pciBridge4.pciSlotNumber = "21"
pciBridge5.pciSlotNumber = "22"
pciBridge6.pciSlotNumber = "23"
pciBridge7.pciSlotNumber = "24"
scsi0.pciSlotNumber = "160"
usb.pciSlotNumber = "32"
ethernet0.pciSlotNumber = "33"
sound.pciSlotNumber = "34"
ehci.pciSlotNumber = "35"
vmci0.pciSlotNumber = "36"
scsi0.sasWWID = "50 05 05 69 68 58 4f 40"
vmotion.checkpointFBSize = "134217728"
usb:0.present = "TRUE"
usb:1.present = "TRUE"
ethernet0.generatedAddressOffset = "0"
vmci0.id = "1323861406"
usb:1.deviceType = "hub"
usb:0.deviceType = "mouse"
hgfs.mapRootShare = "TRUE"
isolation.tools.hgfs.disable = "FALSE"
sharedFolder.maxNum = "1"
sharedFolder0.present = "TRUE"
sharedFolder0.enabled = "TRUE"
sharedFolder0.readAccess = "TRUE"
sharedFolder0.writeAccess = "TRUE"
sharedFolder0.hostPath = "F:\Temp\VMShare"
sharedFolder0.guestName = "VMShare"
sharedFolder0.expiration = "never"
我的 Windows XP 机器如下所示:
.encoding = "windows-1252"
config.version = "8"
virtualHW.version = "7"
memsize = "2048"
ide0:0.present = "TRUE"
ide0:0.fileName = "UML.vhd"
ide1:0.present = "TRUE"
ide1:0.autodetect = "TRUE"
ide1:0.deviceType = "cdrom-raw"
floppy0.startConnected = "FALSE"
floppy0.fileName = ""
floppy0.autodetect = "TRUE"
ethernet0.present = "TRUE"
ethernet0.connectionType = "nat"
ethernet0.wakeOnPcktRcv = "FALSE"
ethernet0.addressType = "generated"
usb.present = "TRUE"
ehci.present = "TRUE"
sound.present = "TRUE"
sound.fileName = "-1"
mks.enable3d = "TRUE"
serial0.present = "TRUE"
serial0.fileType = "thinprint"
pciBridge0.present = "TRUE"
pciBridge4.present = "TRUE"
pciBridge4.virtualDev = "pcieRootPort"
pciBridge4.functions = "8"
pciBridge5.present = "TRUE"
pciBridge5.virtualDev = "pcieRootPort"
pciBridge5.functions = "8"
pciBridge6.present = "TRUE"
pciBridge6.virtualDev = "pcieRootPort"
pciBridge6.functions = "8"
pciBridge7.present = "TRUE"
pciBridge7.virtualDev = "pcieRootPort"
pciBridge7.functions = "8"
vmci0.present = "TRUE"
roamingVM.exitBehavior = "go"
displayName = "UML Machine"
guestOS = "winxppro"
nvram = "UML Machine.nvram"
virtualHW.productCompatibility = "hosted"
printers.enabled = "TRUE"
extendedConfigFile = "UML Machine.vmxf"
sound.virtualDev = "es1371"
ethernet0.generatedAddress = "00:0c:29:10:10:79"
sound.autodetect = "TRUE"
uuid.location = "56 4d 32 87 54 f5 1b df-46 45 83 91 b9 10 10 79"
uuid.bios = "56 4d 32 87 54 f5 1b df-46 45 83 91 b9 10 10 79"
cleanShutdown = "TRUE"
replay.supported = "FALSE"
replay.filename = ""
scsi0:0.redo = ""
pciBridge0.pciSlotNumber = "17"
pciBridge4.pciSlotNumber = "21"
pciBridge5.pciSlotNumber = "22"
pciBridge6.pciSlotNumber = "23"
pciBridge7.pciSlotNumber = "24"
scsi0.pciSlotNumber = "-1"
usb.pciSlotNumber = "32"
ethernet0.pciSlotNumber = "33"
sound.pciSlotNumber = "34"
ehci.pciSlotNumber = "35"
vmci0.pciSlotNumber = "36"
vmotion.checkpointFBSize = "134217728"
usb:0.present = "TRUE"
usb:1.present = "TRUE"
ethernet0.generatedAddressOffset = "0"
vmci0.id = "-1190129543"
usb:1.deviceType = "hub"
usb:0.deviceType = "mouse"
ide0:0.redo = ""
ide1:0.startConnected = "TRUE"
tools.syncTime = "FALSE"
unity.wasCapable = "FALSE"
ide1:0.fileName = "auto detect"
debugStub.winOffsets.version = "7"
debugStub.winOffsets.value = "0x88,0x84,0x18,0x190,0x174,16,416,0x22c,0x228,0x1f0,0x224,0x20,0x18,0x18,0x20,0x24,4,0x11c,0x8,0x0,0x14,0x100000,0x1b0,0xc,0xc,0x18,0x13c,0x1f4"
答案1
你可以尝试微调处理器数量基于cpuid.每个插槽的核心数vmx 中的值。
一些 VMWare 用户发现“vmware 只能与原始核心配合使用。”
您可以尝试设置
numvcpus
到相同的价值比
cpuid.coresPerSocket
在你的 vmx 文件中,即
numvcpus = "2"
cpuid.coresPerSocket = "2"
请记住,无论如何,必须
"Ensure that the number of vCPUs is divisible by the number of cpuid.coresPerSocket
in the virtual machine. That is, when you divide the number of vCPUs by the number
of cpuid.coresPerSocket , it must return an integer value. For example, if your
virtual machine is created with 8 vCPUs, coresPerSocket can only be 1, 2, 4, or 8."
(来源)