[Bug 10018] Adobe Photoshop CS2 can't activate

wine-bugs at winehq.org wine-bugs at winehq.org
Wed Oct 31 13:55:33 CDT 2007


http://bugs.winehq.org/show_bug.cgi?id=10018


Anastasius Focht <focht at gmx.net> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |focht at gmx.net




--- Comment #12 from Anastasius Focht <focht at gmx.net>  2007-10-31 13:55:32 ---
Hello,

I just had a live IRC "debug session" with an Adobe Photoshop CS2 owner -
thanks @dergringo for having the patience to follow my instructions ;-).
The activation process fails because CS2 tries to query S.M.A.R.T capabilities
of first harddisk and the appropriate device ioctls are not implemented.

To get to this point you have either have to give raw access to
harddisk/partition or setup a fake device.
I recommend the latter. See http://bugs.winehq.org/show_bug.cgi?id=8298 how to
do this (comment #12 and following)
Basically setup fake data, mount via loop device and symlink "ln -s /dev/loop0
$(WINEPREFIX)/dosdevices/c::"

Relevant log:

--- snip ---
0053:Call KERNEL32.CreateFileA(7d942994
"\\\\.\\c:",c0000000,00000003,00000000,00000003,00000000,00000000) ret=0040398a
0053:Ret  KERNEL32.CreateFileA() retval=0000007c ret=0040398a
0053:Call
KERNEL32.DeviceIoControl(0000007c,00074080,00000000,00000000,7d942958,00000018,7d942974,00000000)
ret=00403782
0053:fixme:cdrom:CDROM_DeviceIoControl Unsupported IOCTL 74080 (type=7 access=1
func=20 meth=0)
0053:Ret  KERNEL32.DeviceIoControl() retval=00000000 ret=00403782
0053:Call
KERNEL32.DeviceIoControl(0000007c,0004100c,7d942974,00000006,7d942778,000000df,7d942968,00000000)
ret=004035f7
0053:Ret  KERNEL32.DeviceIoControl() retval=00000000 ret=004035f7
0053:Call KERNEL32.CloseHandle(0000007c) ret=004039ba
0053:Ret  KERNEL32.CloseHandle() retval=00000001 ret=004039ba
--- snip ---

Looking at 0x74080 in "include/winioctl.h":

--- snip ---
190 #define IOCTL_DISK_CONTROLLER_NUMBER    CTL_CODE(IOCTL_DISK_BASE, 0x0011,
METHOD_BUFFERED, FILE_ANY_ACCESS)
191 #define SMART_GET_VERSION               CTL_CODE(IOCTL_DISK_BASE, 0x0020,
METHOD_BUFFERED, FILE_READ_ACCESS)
192 #define SMART_SEND_DRIVE_COMMAND        CTL_CODE(IOCTL_DISK_BASE, 0x0021,
METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
193 #define SMART_RCV_DRIVE_DATA            CTL_CODE(IOCTL_DISK_BASE, 0x0022,
METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
--- snip ---

Some "basic" S.M.A.R.T ioctls have to be implemented/stubbed to get the
activation id based apps/games to work.
I know this stuff from copy protections, hell even PunkBuster uses parts of
this "id" info for their infamous "hardware" bans.

The standard way is to query drive info using IOCTL_STORAGE_QUERY_PROPERTY.
This gives you volume serial number and the like.
The second way is to query the drive SMART capabilities.
Usually the first check is if the drive supports SMART by calling
SMART_GET_VERSION.
If succeeded, SMART is usually enabled with SMART_SEND_DRIVE_COMMAND (code B0)
and then the data gets queried with SMART_RCV_DRIVE_DATA.

Regards


-- 
Configure bugmail: http://bugs.winehq.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are watching all bug changes.



More information about the wine-bugs mailing list