hh.exe doesn’t use Unicode format in Vista when it opens a new file

Today, I got below error when I run a chm in Vista.

 

At first, I think the local file has corrupted. So I had downloaded a new file from Internet. Yeah, new file can open successfully.

Sudden, I had noticed old file and new file have the same size. It means old file hasn’t corrupted I think. Why?

I had run windbg and attached hh.exe.

Stack:

000ef438 7656073f 76573c9f 00000000 00000000 ntdll!KiFastSystemCallRet

000ef43c 76573c9f 00000000 00000000 00000000 USER32!NtUserWaitMessage+0xc

000ef470 76572dc0 00120a7c 00000000 00000001 USER32!DialogBox2+0x202

000ef498 7659cd48 76540000 002f7108 00000000 USER32!InternalDialogBox+0xd0

000ef538 7659d2ca 00000000 00000000 ffffffff USER32!SoftModalMessageBox+0x69f

000ef688 7659d3fc 000ef694 00000028 00000000 USER32!MessageBoxWorker+0x2c7

000ef6e0 7659d4a6 00000000 002f6fb8 002f79b8 USER32!MessageBoxTimeoutW+0x7f

000ef714 7659d654 00000000 000a7000 000a70b0 USER32!MessageBoxTimeoutA+0xa1

000ef734 7659d6c6 00000000 000a7000 000a70b0 USER32!MessageBoxExA+0x1b

000ef750 61ad6b2f 00000000 000a7000 000a70b0 USER32!MessageBoxA+0x45

000ef784 61aa4ba5 0000101b 000a7000 00000000 hhctrl!MsgBox+0x4a

000ef9b8 61aa4ed9 001d0000 002d2bc4 764894dc hhctrl!doInternalWinMain+0x587

000ef9d0 001d17f2 001d0000 002d2bc4 001d3378 hhctrl!doWinMain+0x39

000efafc 001d19b9 001d0000 00000000 002d2bc4 hh!WinMain+0xb3

000efb8c 764ad0e9 7ffdb000 000efbd8 777f19bb hh!_initterm_e+0x1a1

000efb98 777f19bb 7ffdb000 76ef126d 00000000 kernel32!BaseThreadInitThunk+0xe

000efbd8 777f198e 001d1b2f 7ffdb000 00000000 ntdll!__RtlUserThreadStart+0x23

000efbf0 00000000 001d1b2f 7ffdb000 00000000 ntdll!_RtlUserThreadStart+0x1b

0:000> da 002d2bc4

002d2bc4  "D:\document\Core\Microsoft? Wind"

002d2be4  "ows? Internals, Fourth Edition M"

002d2c04  "icrosoft Windows Server? 2003, W"

002d2c24  "indows XP, and Windows 2000-Mark"

002d2c44  "-2004.chm"

 

But Local old file name is Microsoft® Windows® Internals, Fourth Edition Microsoft Windows Server™ 2003, Windows XP, and Windows 2000-Mark-2004.chm in the directory. From here, we know MS converts ® and ™ to native code failed and uses ? replace it. The result is OS finds file Microsoft? Windows? Internals, Fourth Edition Microsoft Windows Server? 2003, Windows XP, and Windows 2000-Mark-2004.chm failed, and popups above dialog.I had downloaded new file name is Microsoft – Microsoft Windows Internals Fourth Edition(2004).chm.  So it hasn’t convert character set issue.

 

0:000> lmvm hh

start    end        module name

001d0000 001d7000   hh         (pdb symbols)          e:\symsvr\hh.pdb\2A0A84E460CA47D7B78C14B65EDBD2F31\hh.pdb

    Loaded symbol image file: C:\Windows\hh.exe

    Image path: C:\Windows\hh.exe

    Image name: hh.exe

    Timestamp:        Thu Nov 02 17:11:18 2006 (4549B636)

    CheckSum:         0001019E

    ImageSize:        00007000

    File version:     6.0.6000.16386

    Product version:  6.0.6000.16386

    File flags:       0 (Mask 3F)

    File OS:          40004 NT Win32

    File type:        1.0 App

    File date:        00000000.00000000

    Translations:     0409.04b0

    CompanyName:      Microsoft Corporation

    ProductName:      HTML Help

    InternalName:     HH 1.41

    OriginalFilename: HH.exe

    ProductVersion:   6.0.6000.16386

    FileVersion:      6.0.6000.16386 (vista_rtm.061101-2205)

    FileDescription:  Microsoft® HTML Help Executable

    LegalCopyright:   © Microsoft Corporation. All rights reserved.

 

MS social MSDN site has people ask this issue too.

I had checked other common modules provided in default Vista.  All of them hadn’t developed in Unicode mode.

Compared with develop a new OS it’s easy. But MS hasn’t done it.

What is UE? It’s UE I think.  

                                                                       Written By opqit(opqit@hotmail.com) 06/29/2010

This entry was posted in Computers and Internet. Bookmark the permalink.

Leave a comment