http://bugs.winehq.org/show_bug.cgi?id=27075
Anastasius Focht focht@gmx.net changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |NEW Component|-unknown |ntoskrnl Summary|Battlefield Heroes: |Battlefield Heroes: |Punkbuster doesn't work as |Punkbuster doesn't work as |it should |it should | |(ntoskrnl.exe.PsLookupProce | |ssByProcessId stub needed) Ever Confirmed|0 |1
--- Comment #7 from Anastasius Focht focht@gmx.net 2011-05-07 08:15:06 CDT --- Hello,
--- quote --- Flash *is* unnecessary to download, install and run the game. The only part where Flash is needed is to create a hero on the website. That can be done just fine using Linux and a browser. No need for wine, or the flash plugin in wine. There's a "Create Hero" button on the website. --- quote ---
well I'm not going to argue with you. I assumed you did everything using Wine and not native Linux tools (browsers). I just don't want to waste time figuring out stuff that are different bugs. Just keep in mind: the better the prerequisites/steps to reproduce the bug are given (exact steps!) the higher the chance that people might actually look at the bug.
The problem here can't be reproduced every time, it depends on the type of PunkBuster check carried out. There are cases where the infamous bug 9685 is encountered before your problem:
--- snip --- [05.07.2011 14:30:38] Receiving from PB Server (w v1.821 | A1376 C2.260) [05.07.2011 14:30:39] PnkBstrA successfully loaded PnkBstrB [05.07.2011 14:30:40] RESTRICTION: Unknown Windows API Function [131131] [05.07.2011 14:30:42] PnkBstrB service installed and started successfully --- snip ---
First you have to make sure that PunkBuster basics work by using the PB svc tool:
~/.wine/drive_c/Program Files/EA Games/Battlefield Heroes$ wine ./pbsvc_heroes.exe
click "Test services"
The PunkBuster "A" and "B" service should run and the kernel driver "K" can be extracted and run too.
Your problem might be this one:
--- snip --- ... 0089:trace:service:svcctl_CreateServiceW (L"PnkBstrK", L"PnkBstrK", 0xf01ff, L"C:\windows\system32\drivers\PnkBstrK.sys") ... 0016:trace:loaddll:load_builtin_dll Loaded L"C:\windows\system32\msvcrt.dll" at 0x62f60000: builtin 0016:trace:loaddll:load_native_dll Loaded L"C:\windows\system32\drivers\PnkBstrK.sys" at 0x10000000: native 0016:trace:ntoskrnl:IoCreateDevice (0x683474a0, 0, L"\Device\pnkbstrk", 40000, 0, 0, 0x53e648) 0016:trace:ntoskrnl:IoCreateSymbolicLink L"\DosDevices\pnkbstrk_link" -> L"\Device\pnkbstrk" 0016:trace:service:SetServiceStatus 0x1109b0 30 4 5 0 0 0 2710 0095:trace:service:svcctl_SetServiceStatus (0x113288, 0x1131b4) 0089:trace:service:service_wait_for_startup Service started successfully 0089:trace:service:service_start returning 0 0096:trace:service:CloseServiceHandle 0x13ba00 0088:trace:service:svcctl_CloseServiceHandle (&0x112da8) 0096:trace:service:CloseServiceHandle 0x13a0c0 0095:trace:service:svcctl_CloseServiceHandle (&0x111788) 0016:trace:ntoskrnl:process_ioctl ioctl 2261c0 device 0x110f18 in_size 16 out_size 16 0016:trace:ntoskrnl:MmGetSystemRoutineAddress L"ZwQuerySystemInformation" -> 0x7bc56904 0016:trace:ntoskrnl:MmGetSystemRoutineAddress L"MmMapIoSpace" -> 0x683cd904 0016:trace:ntoskrnl:MmGetSystemRoutineAddress L"MmUnmapIoSpace" -> 0x683cda6b 0016:trace:ntoskrnl:MmGetSystemRoutineAddress L"MmGetPhysicalAddress" -> 0x683c4cb4 0016:trace:ntoskrnl:MmGetSystemRoutineAddress L"ObDereferenceObject" -> 0x683c57b4 0016:trace:ntoskrnl:MmGetSystemRoutineAddress L"MmIsAddressValid" -> 0x683cd880 0016:trace:ntoskrnl:MmGetSystemRoutineAddress L"PsLookupProcessByProcessId" -> 0x683c66a8 0016:trace:ntoskrnl:MmGetSystemRoutineAddress L"KeStackAttachProcess" -> 0x683c4550 0016:trace:ntoskrnl:MmGetSystemRoutineAddress L"KeUnstackDetachProcess" -> 0x683c45d4 0016:trace:ntoskrnl:__regs_IofCompleteRequest 0x53e780 0 0016:trace:ntoskrnl:IoCompleteRequest 0x53e780 0 ... 0016:trace:ntoskrnl:process_ioctl ioctl 226214 device 0x110f18 in_size 16 out_size 4096 ... wine: Call from 0x7b838257 to unimplemented function ntoskrnl.exe.PsLookupProcessByProcessId, aborting ... --- snip ---
Wine needs supply a stub for ntoskrnl.exe.PsLookupProcessByProcessId to let the service live (returning STATUS_NOT_IMPLEMENTED is enough).
--- snip --- 006f:trace:ntoskrnl:process_ioctl ioctl 226214 device 0x110f18 in_size 16 out_size 4096 006f:fixme:ntoskrnl:PsLookupProcessByProcessId stub: 0x72, 0x53e728 006f:trace:ntoskrnl:__regs_IofCompleteRequest 0x53e780 0 006f:trace:ntoskrnl:IoCompleteRequest 0x53e780 0 ... --- snip ---
But even with that stub in place (preventing crash of kernel driver) you will more or less frequently encounter bug 9685 in the game, effectively destroying gameplay.
See: http://appdb.winehq.org/objectManager.php?sClass=version&iId=5813
"UNKNOWN WINDOWS API FUNCTION [131xxx]" for a list I made years ago by dissecting PunkBuster (there exist more but it would be useless to document them).
Regards