我正在嘗試設定一個遊戲虛擬機,因為我不想在我的主系統上出現所有“垃圾”。
我已經擁有 VMware Workstation 7,我決定使用 Windows 7 和 Windows XP 建立一個新的虛擬機器。
我已在兩台虛擬機器上安裝了 Unreal Tournament 2004。它無法在 Windows XP 上啟動,沒關係,因為它仍然可以在我的 Windows 7 映像上運行。當我開始這個遊戲時,我收到訊息無法使用聲音設備,因為 deviceID 超出範圍
預設聲音設備無法開啟:
使用的設備 ID 超出了您的系統範圍。聲音將被斷開。
Windows 聲音確實有效,其他一些遊戲也有聲音(例如魔獸爭霸 II)。我懷疑它與 DirectX 或 Direct3D 聲音有關。如果我沒記錯的話,半條命(CS1.6)也沒有啟用聲音,因為同樣的錯誤。 Counterstrike Source 選單中有聲音,但啟動遊戲後聲音消失,並出現相同的錯誤。
有什麼意見或建議嗎?
我已經找到一些網站告訴我我應該將聲音裝置變更為 Soundblaster,但這僅適用於舊的 DOS 遊戲。
編輯
我現在在虛擬機器上玩《毀滅戰士 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
你可以嘗試微調一下虛擬CPU數量基於cpuid.coresPerSocketvmx 中的值。
一些 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."
(來源)